( L2 g+ g* V' y
- / RevApp.cpp : Defines the class behaviors for the application.
& m9 C3 L2 w* e0 u - //
) n' y2 {4 z! R
% |1 N! S+ ?+ X. [$ x% d- #include "stdafx.h"
8 a* q/ B6 g. A4 j$ M% l* r2 D
3 V7 P2 b1 e- d8 J2 @: y- //#define UNICODE l% D% P0 T# i8 K3 {) r* Y
- //#include <gdiplus.h>2 b& {" n* v6 c P- c
- //using namespace Gdiplus;
8 J0 A, X- ]2 `5 U3 S
0 M2 S7 m$ @4 t8 z! d p. x- #include "RevApp.h"' P- V' N( z' T& a
- #include "RevAppDlg.h"
# P5 ~* V; V) a7 V( T5 i4 u
8 O) W: Q0 `' X! \/ t! I- #pragma warning(disable:4786)
3 e+ }' e" H! ~- G$ J$ e - #include <map>1 @( R* g- `- w& y) R! g
- #include <list>
8 _& ~$ r' w3 T3 k0 `8 u8 }" w - #include <direct.h>
! m z5 y/ O7 L+ `4 I
: e0 E6 M# B& E8 L7 a1 ^. _0 c- #ifdef _DEBUG- F5 |8 U0 P2 Y7 _
- #define new DEBUG_NEW6 b" j# q, I3 d8 h% l Z
- #undef THIS_FILE$ M+ A% Y: P8 K1 Y ^; T) p
- static char THIS_FILE[] = __FILE__;
/ Z3 @ O4 W# l; R( D! b4 | - #endif
/ D: \+ m# w/ ~) @. |- W - #include "SkinResDef.h"
8 M. S) g8 v) J7 Y& W - #include "ChangeBG.h"
8 \% z4 A. O: ?% f3 o: }, I - #include "AFXINET.H"
5 Y/ l2 D2 _0 t# t- t
0 D4 d7 C: Q2 P5 R0 n) o- #define TRADITIONAL_CHINESE 08 \+ |# y* l; q: x5 p' O
- #define SIMPLIFY_CHINESE 1
+ B- T/ A) C, f5 G - #define ENGLISH 2' I Q+ g8 W. @$ B/ C
- int m_iLanguage = ENGLISH;
* f& O0 ` }# e - /////////////////////////////////////////////////////////////////////////////
! x* Q l. G4 f! r) D& X+ T - // CRevAppApp' E+ W* x' J3 ]2 q
- . D$ d, _! _; @8 A& e( z
- BEGIN_MESSAGE_MAP(CRevAppApp, CWinApp)
3 _. E) s6 N& O' _5 } g0 k M - //{{AFX_MSG_MAP(CRevAppApp)
/ T4 P5 j+ M R - // NOTE - the ClassWizard will add and remove mapping macros here.
' ~: p1 f j: O- ]5 D& N - // DO NOT EDIT what you see in these blocks of generated code!
8 O# J' I: W6 j4 E8 D" d# L - //}}AFX_MSG/ g8 n/ z( i1 I& @; C
- //ON_COMMAND(ID_HELP, CWinApp::OnHelp)
% g/ Q* X7 I* v - END_MESSAGE_MAP()/ T7 d" W# v( V O8 i3 Y3 t
3 k5 A4 T$ V5 q1 q% g0 [8 l3 }- /////////////////////////////////////////////////////////////////////////////
& x- r: s! g; a! Y' R - // CRevAppApp construction5 p/ U; g0 F! N% G2 g
$ c! s- Q0 ^" x9 d) j; {( T- w) @- CRevAppApp::CRevAppApp()8 _! X/ o' v3 y
- {0 I1 {! p+ d$ g) L
- // TODO: add construction code here,
" y# A9 N I5 z h - // Place all significant initialization in InitInstance
' D! y! i5 f. E5 v7 ~- Y7 D% E - bDisplayIsBig5=FALSE;) L, y- h$ h0 v, B* V; a; Q
- bRestartUpdater=FALSE;
, |) \7 b! J0 g6 M! ? - bFinishUpdated=FALSE;6 }5 V- f$ f* J- u8 s5 c# O+ M3 _
- if(GetACP()==950) bDisplayIsBig5=TRUE;
% u7 m3 R5 q! I5 S2 ~1 M - InitChangeDataBig52GBKS();2 W# v7 t* v2 _# t! t
- InitChangeDataGBKS2Big5();# G) P( ^' g5 n! \7 B& s$ Z
- //3 w5 d( n1 A1 D
- bClickRunExe = FALSE;
( v. d7 l3 Y: @ - //
) ^6 J2 n1 O7 E3 n5 t; I* s - }# g% Z: K+ X; k- z# v6 a4 i8 i/ ~
- : R, z- k( z# e( n2 E" \
- CRevAppApp::~CRevAppApp()
( n/ N; X* m8 X) k9 `* G- f( _ - {
- s6 Y9 ^! {- T7 ?" Z3 M, x# F - // TODO: add construction code here,; Y1 t" L$ W, y' e5 P& C' ^; ?, y# r
- // Place all significant initialization in InitInstance5 f& b& H# k- f
- EndChangeData();0 x$ ^' P9 u* }- s) ]& d
- }
) T9 Y. [; }0 ?/ W
& z* A3 ?; j n; |9 i- /////////////////////////////////////////////////////////////////////////////
1 R+ r2 x5 v0 E5 s* s- R - // The one and only CRevAppApp object/ d1 W' i) C* m1 O
- 4 U8 K9 s, T: h
- CRevAppApp theApp;2 j/ ]0 K" I; L6 _9 F, a
- 5 h7 f0 O& D# e2 l- D) t
- char *CRevAppApp::ReadFileNames(FILE *fp,char *szFileName)+ z7 [0 Q) ~* p
- {
% E5 ^6 s8 ]: {! S% h( [/ X2 J - int iEOF=0;
- {. x# Z) |: `1 w9 n7 a, Q# k7 k' \ - char szTempName[MAX_PATH];
3 I5 I! c: y n+ Z8 L8 `# T+ p - *szFileName=0;
$ h& _1 |% c6 E' y; b9 L - iEOF=fscanf(fp,"%s",szTempName);
4 e6 X& u7 L; J7 u" P - if(strlen(szTempName)>=1&&szTempName[0]=='(')
1 t; d9 u; G% G, g - {
8 F7 p1 @" L) w& \5 r( P - strcpy(szFileName,&szTempName[1]);
, c( L1 J7 j0 F& ?5 m4 t I - while(!strchr(szTempName,')')&&iEOF!=EOF)
7 c& @7 U# }$ U8 d9 l0 ?8 n - {
0 w" o$ l2 P+ H5 Y {$ l - iEOF=fscanf(fp,"%s",szTempName);, W8 E7 q6 ?6 O2 H
- strcat(szFileName," ");4 r( j6 P# @; p. c- i0 f9 x7 t
- strcat(szFileName,szTempName);7 W7 x9 c# `4 L- E1 V3 J
- }
, O2 |( Z' r7 I# B - if(strlen(szFileName)>=1)
4 U4 k) ~: Z9 d8 P W" P1 W. b - {
; d! _2 g! }) T+ M$ }6 j& @ - szFileName[strlen(szFileName)-1]=0;1 Y6 [5 }1 a) o- o" n& W" ?
- }
4 R$ m9 T6 y% J9 J: X - }, ?6 [5 Z6 g3 D1 u, [7 z! F. ~ w2 d
- return szFileName;# M( j* h0 m! Y: ]* G
- }
$ m; _' X' I% t
! |: k. @8 Y& c( B3 }2 l8 y0 \$ ]' d- bool CRevAppApp::LoadLogFile(char *filename,std::list<CString>& UpdateList,std::map<CString,LPUPDATEFILE>& UpdateFile)
# G! i- A, t% \6 q# E, T: K. v# m - {
& c( g) K# x6 z( S - FILE *fp;
# C1 q- n: a" w; o - char *key=NULL;
, d) I- G9 k: Q1 ]' A - char version[MAX_PATH];
" K& N C7 O7 I! K" l7 Z - LPUPDATEFILE file,olds;% _7 B, e+ J8 O) Y# c
- std::map<CString,LPUPDATEFILE>::iterator p;3 n$ P; u0 H- p; @) A, u8 _
- : {( K z% f: w+ y0 ?3 f3 W
- UpdateList.clear();
: P7 [8 k3 J$ t. `; H - UpdateFile.clear();
0 y* n9 S3 s( F- i1 p - if(GetFileAttributes(filename)==-1) return false;% W: Z* }0 O) \+ a- [& M
- if(!(fp=fopen(filename,"r"))) return false;
3 z/ W5 H) \7 ^( O6 v0 Q$ E) r - fscanf(fp,"%s",version);: S# b1 Q" V8 q1 `2 @
- if(stricmp(version,"Bloodyf")) { fclose(fp); return false; }
) [1 M/ J! |5 z/ u8 X2 |. w - while(fscanf(fp,"%s",version)!=EOF)
% b7 N `; e7 H7 X, j+ i; a9 W, I - {* h# c8 k/ F- m5 G
- file=(LPUPDATEFILE)malloc(sizeof(UPDATEFILE));5 `/ ~/ A, \9 q
- fscanf(fp,"%s",file->path);; p, H5 q3 s+ }9 I5 a2 W7 d( W7 T1 I
- ReadFileNames(fp,file->file);/ r$ O4 s6 e3 }$ u O
- strcpy(file->full,".");4 U3 [5 {; t% X8 H) x
- strcat(file->full,file->path);3 G0 A! J/ Y1 [- s. D7 |7 j4 D
- strcat(file->full,file->file);2 W" ?0 ?$ y0 s |% i$ G& t9 j
- if((p=UpdateFile.find(file->full))==UpdateFile.end())/ T& R" Q# S. m% V/ q$ }& w9 l
- {
' B4 k4 C" t! f: L P; I! b8 I - file->vers=(float)atof(version);
9 i9 y) P& p7 W6 T - UpdateList.push_back(file->full);
: l0 X" q) ~% m v - UpdateFile.insert(std::map<CString,LPUPDATEFILE>::value_type(file->full,file));/ ]* D0 S5 } n# n9 s- s3 B
- }) N' U+ H5 c, N9 E$ y
- else
7 z# W: r' M4 D - {
1 @& v, S9 y+ ~' @, c1 ~. v$ p - olds=(*p).second;
N# T5 j5 v+ C$ x: T - if(olds->vers<(float)atof(version))
! K* G% ?8 _$ b5 j - {
9 ~- W4 }. f" O* W1 g' v8 ? - olds->vers=(float)atof(version);
3 w8 w$ u% D& G# E7 r - }
8 V0 P7 }6 e3 v8 m- I9 a% U - free(file);* m5 ]* b) ~" g8 C7 |
- }" w8 v/ Q5 V: O; V e Q
- }
9 `) O, u- p% Z* M9 s! p - fclose(fp);" F/ s% l4 l/ z9 R
- return true;; y! O. ^0 m5 Y& \6 v2 B! V
- }
6 _' [) g$ C9 U; c9 \, A ? - , t. |$ O/ L& m" k" N. W
- DWORD CRevAppApp::GetPathFromFullPath(TCHAR *szPath,TCHAR *szFullPath)
, r6 q2 f* P& ~1 }4 h2 J6 {. |1 z - {
' z1 C" z6 V7 P# s - TCHAR szFull[MAX_PATH];
+ g. W! y+ M9 s* z$ H - TCHAR *token,*inter;
% s) j6 J: v+ s: v8 n1 J, O& G - *szPath=0;
W% f. q3 D% e5 b5 d2 ? - strcpy(szFull,szFullPath);
3 C3 ]6 y! w/ l% A, Y7 q% G - token=strtok(szFull,"\\/");
' l( T9 G) x6 s - inter=token;
3 _! V* @9 [; e# c" f8 s& p& e - while(token=strtok(NULL,"\\/"))
6 Y, j0 q6 T; r# N* @8 m' s - {) X& O' x: m7 ?
- strcat(szPath,inter);9 E0 E0 t& c: I/ G" S
- strcat(szPath,"\");* R6 p+ e2 y, V, p- v4 b; i
- inter=token;
% k: L- c% ]* V5 u0 A" B - }
7 q/ }2 N' J6 u- ]( _ - return strlen(szPath);
, e9 O8 ?7 I s- @; A" O - }; ]6 M% p4 j2 l! q3 k
+ p$ t: l/ g0 j" o5 N" x7 {% W- void CRevAppApp::ForceCopyFile(LPCTSTR Source,LPCTSTR Target,BOOL Erase)+ y. L. D: R1 n$ A9 @: J
- {
8 v" }- u. U) X/ J) N0 K - DWORD attrib=GetFileAttributes(Target);
( U! A' O. `/ b" @. e6 N/ X; x- | - if(attrib!=-1)
4 ?5 L8 S; |8 R; ? - { n6 Y* q" _' u" B% ~/ H
- if((attrib&FILE_ATTRIBUTE_HIDDEN)||(attrib&FILE_ATTRIBUTE_READONLY))
( G# s& u! [: S1 l/ N; w - {
- J$ h# e( u5 p/ E/ ` - attrib&=~(FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_READONLY);
, D, d; I+ z# P - SetFileAttributes(Target,attrib);+ }7 U- N0 n% b6 N8 M$ |( E
- }
( V- m5 C' f( y% q3 d( w# _3 f - }
$ K6 A# @. c1 l1 v# X) r - CopyFile(Source,Target,Erase);+ `7 e. G0 O3 U- J& A: Y
- }% s) h0 u1 B) W
- # r' H* G* q! T5 ^8 P' _; p3 m
- void CRevAppApp::Fprintf(char *FileName,char *message, ...)
9 @+ J3 A; `- r( F - {
% N y/ M g7 J& v3 E* d) o: r" I - FILE *fp;2 y" x! M4 w& | i9 |
- char szBuffer[8192];& S$ y& o5 L5 ?2 T
- va_list argptr;- v' X! u! b4 g8 F
- - ^5 E" B1 v: @' c% b4 Z
- va_start(argptr,message);1 M/ w! z) v! i. F
- vsprintf(szBuffer,message,argptr);6 X, Q" B: y# m% ?
- va_end(argptr);
/ f) T4 i. \5 A c( J - fp=fopen(FileName,"a");
" J- U( f# o7 T( f3 H E - if(fp)
3 j0 p$ B$ i; r6 Z; Q; I - {
: M8 R# s! ~4 o - fprintf(fp,szBuffer);- M: F( w) M$ |6 o/ n$ _! _. f
- fclose(fp);8 n* n% x# x f; ~
- _flushall();
6 Q" ^+ y* v. \2 z5 Q - }
`7 k: h: ]/ F( y - }2 a4 x. ^# c( I6 F/ E
& L5 ^8 y4 W1 L. O. V7 v1 G8 ~9 c3 W- BOOL CRevAppApp::Fclearf(char *FileName)% \' v: A0 m8 U
- {
3 r7 t1 N }2 K$ A - FILE *fp;
1 E" g9 L" G1 p1 g9 m% m - DWORD attrib;
2 y$ v( x& ~" z+ d i; \ - attrib=GetFileAttributes(FileName);7 f" i7 O+ g7 p' k8 a) X
- if(attrib!=-1)) [9 m4 L$ x8 q: d, Q
- {
1 \& D" O4 [6 i1 o e# R - attrib&=~(FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_SYSTEM|FILE_ATTRIBUTE_HIDDEN);/ P8 f* e8 o# `1 `3 w
- if(!SetFileAttributes(FileName,attrib))9 P% o- e! y3 W+ ^- R
- {" h+ ~( |8 @- N8 K' x0 c
- return FALSE;
, ? J$ H( f$ L6 S6 a1 S( J - }" M, u7 t& H. }
- }
- a; k3 v3 C) m, g* j$ }# I - fp=fopen(FileName,"wb");9 X$ P1 G9 K7 K
- if(fp)' d' W8 J& N! M. W/ v
- {) h) }! _+ |5 t i( a9 p
- fclose(fp);
5 s/ L1 x# e' j) M6 {1 }* A - }5 y+ l5 J+ {$ N
- return TRUE;
' O3 ^! m3 F+ q. ~+ U& M2 P0 \ - }
0 A& u; \$ T& S% @
1 `# L8 ~& g3 N& I- BOOL CRevAppApp::UpdateLocalVersion(void)5 @9 Q4 I3 q3 B' p# o
- {
- Z3 X! _* S) P, K% H( e - char filename[MAX_PATH];
5 ` J: D7 J- l+ q - LPUPDATEFILE file,olds;2 w- R _* o/ w2 `; L9 \- I& F
- std::map<int,CString>::iterator i;% e% J+ p% S/ i3 K8 O) [; K
- std::map<CString,LPUPDATEFILE>::iterator p;
8 ]3 L7 e9 l) ^8 b5 A* v1 a: `9 O( C& l - std::list<CString>::iterator l;
) z: ?* j& {3 M0 k6 z7 s! G- ?7 e: ` - ) k% {1 l3 r$ S! F" G0 o2 g6 e
- if(bFirstUpdate)) c+ L- I" ^; J$ {# }# O
- {
( ^3 Q( F" I9 y6 m - dwCurrFile=0;9 T- u+ u; c) d3 K
- bFirstUpdate=FALSE;
- u0 d9 Y( R- W$ {6 Q- W - if((i=UpdateLocal.find(dwCurrFile))!=UpdateLocal.end())
6 L" u& }( ?5 p+ k - {
- R+ B3 ~2 P P) Z( M$ w& E8 }. Y1 K - dwTotalFiles=UpdateLocal.size();
# z0 B! w0 N5 U+ v/ F! a - dwDownLoaded=0;
j G" j/ P; N. H0 q( F - bSilentStep=FALSE;' C" z# O! [6 H9 h* e* r% W4 ] H
- bCompressed=TRUE;& v. U" H2 c) f2 G4 f" k" f" }
- strExtLocal.Empty();
" z: B: J$ }7 J8 _( {, Z/ u0 |, F - strFullName=(*i).second;
. r/ F b* P+ Z- d - dwProgramState=AP_CONNECT;2 Z7 w- W! |( n
- return TRUE;
8 U' g. f1 P9 i X8 k2 h - }
4 [7 d% g) a2 W A3 `6 i( w - }
6 [( k# K6 j j& P- y. ]; R! x - else if(bRestartUpdater==FALSE)
" u* F& r- F" m: J! J( V - {) f' I) ` @# V! `& _& r! D# J
- if((p=UpdateFile2.find(strFullName))!=UpdateFile2.end()), I! |- u$ r7 ^4 `+ z
- {6 c# o3 r; I2 P s
- file=(*p).second;
u/ S2 F0 Q' o R! w5 b - if((p=UpdateFile1.find(strFullName))!=UpdateFile1.end())
* w3 V) ` `! @3 i& Y8 q - {
3 @" _+ p0 }- o! b& n4 T5 w( f5 z3 W - olds=(*p).second;: a" _8 n" o+ {( X; g% n* v
- olds->vers=file->vers;
- g+ n) f1 n0 @* \# D - }/ T& W* g- _; k3 P8 @2 T4 v% Q
- else* S& o7 R1 }4 Y- c6 t6 M4 M6 j8 _
- {6 f& I& C; ^" c* y( D7 F
- olds=(LPUPDATEFILE)malloc(sizeof(UPDATEFILE));4 { o8 r: K5 P* m) A
- memcpy(olds,file,sizeof(UPDATEFILE));8 _9 H4 X% E) n8 h+ U. N# \
- UpdateFile1.insert(std::map<CString,LPUPDATEFILE>::value_type(olds->full,olds));
, K$ Z. ]4 b5 A/ E& L9 b - }$ O4 d% t; K% _* o
- if(GetFileAttributes(".\\update.tmp")==-1) Fprintf(".\\update.tmp","Bloodyf\n");6 L8 i/ s( M9 @5 k6 p3 z% a! [+ R
- sprintf(filename,"(%s)",file->file);
& U, \/ I R" m$ L; v* I - Fprintf(".\\update.tmp","%4.3f %-48s %-24s\n",file->vers,file->path,filename);
# E; F: N" E. H0 Z* f - if(!stricmp(file->file,"csupdate.exe")) { bRestartUpdater=TRUE; return FALSE; }
" ] [4 C% D8 U8 h, R - }5 {; J/ R" ~: i1 I c5 F
- dwCurrFile++;* ?* K7 u: P- _4 k, P
- if((i=UpdateLocal.find(dwCurrFile))!=UpdateLocal.end()); ~$ m/ v- J4 d7 H" \
- {
5 E" c# r& ]. O3 q3 p0 V - bSilentStep=FALSE;
0 N4 l% J4 a& u% q$ [. n8 ] - bCompressed=TRUE;. D E) E, c0 C9 r q
- strExtLocal.Empty();
8 d6 T$ i- d s; h( R0 k9 r x+ _$ p - strFullName=(*i).second;
- j3 N+ O) ]2 a/ Q; h5 S2 s0 m - dwProgramState=AP_CONNECT;
) A# e3 O9 q+ _! p - return TRUE;3 l+ |9 J; ^3 }0 ]2 h1 V2 X* X
- }8 V, T e3 [) O" t g& @
- if(!bRestartUpdater)
1 \5 E0 W, l h) W! l3 W3 f5 T" K, T u - {
' @8 ~4 t' q2 j Z" i - int iCurrSize,iFileSize;
* y7 o; `3 X4 D! U9 E+ b: u - iCurrSize=0;2 V6 W4 L( W/ x! c; p8 l5 M
- iFileSize=UpdateList2.size();3 O ^* K2 [" h. ?
- if ( m_iLanguage == TRADITIONAL_CHINESE ) dlg->m_ListText.AddString("穝戈い.....");
# I2 l& }, b; {$ ]+ n; g$ H - else if( m_iLanguage == SIMPLIFY_CHINESE ) dlg->m_ListText.AddString("更新资料列表回存中.....");8 C8 x* T! H5 V. J7 v9 P
- else dlg->m_ListText.AddString("saving updated files.....");* H4 m: b* T6 t. d# k. ]3 R
- dlg->m_ListText.SetCurSel(dlg->m_ListText.GetCount()-1);2 S4 a( n ?9 ]8 [& c* C9 S2 D) f, }
- Fclearf(".\\update.dat");# j2 Y! P9 n( W9 h5 c: m
- Fprintf(".\\update.dat","Bloodyf\n");1 {# ?/ z) e2 y9 A0 f5 x2 n
- for(l=UpdateList2.begin();l!=UpdateList2.end();l++)7 K" j! M" @7 x" D1 h }, p/ M4 S$ `+ m
- {% n5 D; k6 U. e
- if((p=UpdateFile1.find((*l)))!=UpdateFile1.end()); v% B1 T/ k& s/ P# I% R% |
- {$ k1 I' y7 q- L7 u5 ~/ T( M" Y
- file=(*p).second;
3 x/ I2 `% ^+ T - sprintf(filename,"(%s)",file->file);
! j3 |! D5 S, p* W% ~ - Fprintf(".\\update.dat","%4.3f %-48s %-24s\n",file->vers,file->path,filename);9 i% i5 P7 Y6 J+ N/ J2 g. ~1 R
- iCurrSize++;
; m0 v9 x4 ^' c" p% y - dlg->m_Process2.SetPos(100*iCurrSize/(iFileSize<=0?1:iFileSize));
7 ~! b" w# H' h' X9 K$ \3 ] - }0 ^4 Z6 S2 }1 `# r# b' v9 p% v3 _
- }
2 Z5 T# } L# K6 c; T' \) [ - unlink(".\\update.txt");
' ~. S" ^2 x' Q2 s7 t# i - unlink(".\\update.tmp");
! K. z. t G8 [( l - Fclearf(".\\checkversion.dat");! g! Y. ~7 f) |. _: l; g3 m
- Fprintf(".\\checkversion.dat","%4.3f",fCheckVersion);& V; L) \; w3 c- X9 y
- if(UpdateLocal.size())* R8 _0 s; X+ g; R
- {" L. c, f( J g6 ~. {2 `# J9 Q
- UpdateLocal.clear();
3 h# `1 h4 f6 {5 Z1 R- L - }9 i$ `$ t/ B9 E2 s* R( D3 e
- if(UpdateFile3.size())
6 ~! k: G$ ~% A7 p! E" U - {
% t+ H6 x6 N, C - for(p=UpdateFile3.begin();p!=UpdateFile3.end();p++)* b& v" h. f5 Q9 @& ]9 Z& N/ \, l
- { x/ Z0 |( B* v/ b4 S+ O" A# E
- file=(*p).second;
2 `! R' Q- _! d - free(file);
) p/ w3 M) \7 [4 w* X+ M - }
* n1 Q4 d: q& s; ^& x; `7 ` |" h - UpdateFile3.clear();
, u: G1 O: Q. f& h1 r! Q - UpdateList3.clear();2 K, I7 u0 _- _) Q; I# l
- }
# A2 Y$ T& U0 r* X0 s# e - if(UpdateFile2.size())
/ [0 Q. C) q( z. I - {
2 C: p2 _/ I1 P6 \7 T* S* X- {* ^ - for(p=UpdateFile2.begin();p!=UpdateFile2.end();p++)
0 z2 `; n/ _* l8 I - {" ~+ t* ?5 T2 w5 {: Y9 i1 N
- file=(*p).second;# S5 l! D# N9 D" ?) F
- free(file); d& R0 h9 G, ]
- }! {, Q9 \ m( \1 d( W
- UpdateFile2.clear();6 \4 l. K1 c7 K
- UpdateList2.clear();; }! F. q$ [1 ^5 ?
- }
2 x5 @# F# E( V+ B1 v - if(UpdateFile1.size())
: \1 U3 B% A; q7 B/ i - {8 N+ H0 _; I0 f6 ?! E$ U C( G) B
- for(p=UpdateFile1.begin();p!=UpdateFile1.end();p++)
! s W' b0 z) z" { m0 Z - {
t7 ?5 y1 R; R( l) H6 } - file=(*p).second;
+ K0 h# O; M# d0 s. t5 t - free(file);
P" v6 t5 Z1 \' E6 h - }
- e7 a* g* A1 G/ Z - UpdateFile1.clear();% M0 t. c3 C0 e/ X: F8 ^4 l
- UpdateList1.clear();0 {% O" [* k1 s2 T$ Y
- }
. l, G$ B) j4 g4 ~: d$ B) H - dlg->m_Process1.SetPos(100*dwDownLoaded/(dwTotalFiles<=0?1:dwTotalFiles));. ?8 U) D9 x. B1 E
- }
3 ~1 s0 g/ }1 z$ X - }- }# M. u" H- S# \& ~9 H
- return FALSE;
/ J) l- ]3 w3 M% z* [8 h - }
6 x9 |. g8 p! c( m
8 p: X/ y* B* L- void CRevAppApp::ClearAll(void)+ ? e. g5 r! K" ^7 a+ G1 A
- {
* m j& s& z- l( J& l - LPUPDATEFILE file;- M! k Q U# h
- std::map<CString,LPUPDATEFILE>::iterator p;
N5 [8 D4 M+ _6 [0 s4 M
2 Y$ I ^" G; H/ N/ m5 I: [* Y' d- if(UpdateLocal.size())
% s1 \" a/ X7 } - {
, Q( Y: ^& a) z1 |+ b - UpdateLocal.clear();
# ~/ M. k/ S/ ?& X6 _( ~( N9 | - }
0 h, _# ^" y# C - if(UpdateFile3.size())
* u z$ B E$ j# \ - {! [4 C, V( B! M: w
- for(p=UpdateFile3.begin();p!=UpdateFile3.end();p++)$ B4 X4 ~0 I% D' v; e# {
- {
! j/ w6 N6 k& X5 j( I - file=(*p).second;+ o* _# n9 d' h- j8 Z6 V7 b% Q
- free(file);
2 f/ d1 Y% Q, \2 n; [ - }
# G# v6 V/ j% M& A- l Z - UpdateFile3.clear(); ]# ?/ M. c: I* _6 u
- UpdateList3.clear();2 D( s8 h) J \* e3 \8 w
- }; ]. \* u4 [- w4 i! P
- if(UpdateFile2.size()) `% Y! S, E+ b' N% u/ ~8 k6 o
- {' b" w( `( Y6 F0 \( t9 Z
- for(p=UpdateFile2.begin();p!=UpdateFile2.end();p++)
, S9 m) w a9 c: ?# U0 X - {- a. K, U- k0 w
- file=(*p).second;
$ B& v U1 _4 O1 i& }+ E - free(file);/ u( ~2 K3 x y' Q- x4 P' H
- }7 R1 J4 g- g6 [1 X, h
- UpdateFile2.clear();
/ F4 h5 b5 u- o$ M d/ I9 g - UpdateList2.clear();7 | N. d$ H( A4 f3 j% H
- }# @, d& N3 e2 J* Y" d3 g T
- if(UpdateFile1.size())" [% a/ a) I! M. B6 J
- {
; b3 H" \ C+ ~. q7 G6 g - for(p=UpdateFile1.begin();p!=UpdateFile1.end();p++)# T& D0 |* q$ u- l( u
- {
& ~: ~# @1 P* f" ~5 j" g" V - file=(*p).second;. Q: u" U5 x3 D& [1 O: G% j
- free(file);
! O7 `# ~4 [$ c7 ] - }$ z0 ~: c. P8 U, u& M
- UpdateFile1.clear();& s6 s! {) T; V/ _7 a4 \
- UpdateList1.clear();+ N5 X) W1 g5 O; w. Z
- }4 L% {" R" x% r% K- i* }/ D N
- }
1 I; ~* z; A" j$ T/ }0 G - 4 m' w4 U0 i; m
- BOOL CRevAppApp::CheckLocalVersion(void)0 `) U& R1 z* w( a- A
- {
5 Y' q" \7 Y6 S. D# N3 U - int c;$ g+ W# c5 i, H6 D
- LPUPDATEFILE file1,file2;
, g8 V7 k- X) H, m. t/ u - std::map<CString,LPUPDATEFILE>::iterator i,p;
" M- N! C/ |% B( y# q - std::list<CString>::iterator l;
& U: H! X. z5 o: p) b - % G8 n7 n9 ~; A/ \+ ]" r6 i8 k, q
- UpdateLocal.clear();; S L- r- M* X* n' @
- LoadLogFile(".\\update.dat",UpdateList1,UpdateFile1);
/ n! l; C; D( m# j* F8 b" K+ m - LoadLogFile(".\\DownLoad\\update.txt",UpdateList2,UpdateFile2);1 H4 k: l' i. Y2 b5 J6 A6 m" k
- LoadLogFile(".\\update.tmp",UpdateList3,UpdateFile3);
5 u* g4 u7 t4 V- _& m - // if(!UpdateList1.size()) MessageBox(GetActiveWindow(),"Cannot read update.dat file !","Error",MB_OK|MB_ICONERROR);
A4 R# n5 e ~% C9 c - if(UpdateFile3.size())
* O, Y, R- j8 T3 b/ E - {
" {# w4 C& q" U. r; `: n2 ` - for(i=UpdateFile3.begin();i!=UpdateFile3.end();i++)
! c& Z4 p$ Z* s) z1 g% j - {' F4 X. o0 x$ r1 r1 z, V
- file2=(LPUPDATEFILE)(*i).second;
2 f( }2 t2 ?! K7 G - if((p=UpdateFile1.find(file2->full))!=UpdateFile1.end())
9 X0 ~6 d0 p2 ~. j4 { - {6 ^/ ]+ N! E6 q1 n; O# N
- file1=(LPUPDATEFILE)(*p).second;1 j6 V! x9 K# I5 `
- file1->vers=file2->vers;. S' p8 a- L! V* B1 f
- }
, E" G. z2 ?, Y - else+ S8 i0 b3 J6 D, `
- {
% t2 V! N1 Q) o - file1=(LPUPDATEFILE)malloc(sizeof(UPDATEFILE));; d, f4 m! j" ~: h4 p% i4 u
- memcpy(file1,file2,sizeof(UPDATEFILE));
9 Y1 v& _: X, l - UpdateFile1.insert(std::map<CString,LPUPDATEFILE>::value_type(file1->full,file1));
6 L- a/ a2 R/ _- x. {! s - }
O( n8 n3 a5 f+ ^, O3 { - }
1 d, B3 E7 z) i& M2 y! q9 O( y - }
/ I0 U Y3 q8 D" L4 }& i0 G$ C& f9 F - for(c=0,l=UpdateList2.begin();l!=UpdateList2.end();l++)
& b# Z L$ y* i- Q) R - {
: ~7 c: t+ l. n( ]' o) X4 Q9 L - if((i=UpdateFile2.find(*l))!=UpdateFile2.end())
+ ~3 d' y" \* e4 { - {7 ^1 d3 a1 \3 O0 `$ X$ Q5 |1 x5 u
- file2=(LPUPDATEFILE)(*i).second;
6 z! r' j4 }( X& O& E0 [ - if((p=UpdateFile1.find(file2->full))!=UpdateFile1.end())
3 N" ~' w$ B- g' r/ { - {
; q! C, Z3 ~' {! I: W ~ - file1=(LPUPDATEFILE)(*p).second;
: y4 K* I+ X! P: y% o, X2 ^4 _- ] - if(file1->vers!=file2->vers)
9 X4 l- J8 Y5 e7 w4 z, D8 B4 S$ } - {
' S6 M4 a( E) i6 I& W1 R/ y - UpdateLocal.insert(std::map<int,CString>::value_type(c,file2->full));
2 s/ K, O9 c9 X( q i - c++;3 A# d' P0 E) @% V; C5 x
- }8 g3 U* U/ G3 z9 v# i& t
- }
( D& H5 ?% r2 c2 V- Z* L - else& Q2 C) Q9 {* v _% B5 i6 q
- {
9 T* R) n4 L4 F- N+ z h - UpdateLocal.insert(std::map<int,CString>::value_type(c,file2->full));2 @( J& g% |8 x; ]2 s7 x( V: J, J
- c++; B5 z) r" f( }
- }4 F' Y% u3 c3 e" J) a7 ?
- }
4 j6 i; B: ^; U: E; [ - }* ?3 d; L! X1 |4 Q# S4 L- _8 Q
- unlink(".\\DownLoad\\update.txt");
# p4 w! S. U. ?) M+ [7 J4 { - if(UpdateLocal.size()) return TRUE;$ i2 k7 n! W1 J$ z8 ~* w
- else return FALSE;
* P8 y2 A, R7 T3 h4 c' l - }
+ N/ F5 d. H" e/ L, e+ G+ U
3 I' c; ^( f- r/ n- #define DEFAULT_PATCH_URL "http://elysium.waei.com.cn:8080/~elysium/Alpha/"7 r7 P6 n1 F7 S" Q2 ?! c! P: J
- #define DEFAULT_REG_URL "www.wgs.com.cn"
! i; [- H8 B% {
7 V5 J* e1 O0 d7 N& N& G; m9 Y
! n# X4 F: ~6 d/ k
# M" \& d8 r( z8 A- BOOL CRevAppApp::ReadCfgFile(CString sCfgFile) ?$ w! L b8 a# D
- {
" H7 {2 C- Y+ x5 e" c7 u$ d) x2 G2 p+ a - DWORD dwType=AFX_INET_SERVICE_HTTP;
1 t* m* v! d5 c7 D% l - if(GetFileAttributes((LPCTSTR)sCfgFile)!=-1)8 ]1 S" D% S. u9 ?/ W
- {! i5 k/ ?, A; O4 J% S6 e+ B G
- char szLanguage[50];
+ |- n5 D& D5 F& I& ?! x - GetPrivateProfileString("Interface","Language","",szLanguage,50,".\\Config.ini");
: j8 y; s6 k& J" L { - if(!strnicmp("BIG",szLanguage,3)) m_iLanguage=TRADITIONAL_CHINESE;
. Y( v6 @# M! a, o; v* o! r0 u - else if(!strnicmp("GBK",szLanguage,3)) m_iLanguage=SIMPLIFY_CHINESE;
5 F' P5 [. r* `( T/ `6 Q - else m_iLanguage=ENGLISH;
! q$ h7 U6 `6 R8 w - char szRegister[100];
' p0 e# V' H, X4 T; O - GetPrivateProfileString("Function","RegisterURL","",szRegister,100,".\\Config.ini");
; o! y) i& m2 X - strRegsName=szRegister;
0 M) }% z1 g! L1 r( q) E$ d - char szPatchURL[100];. Q. q/ g: h' x. d
- GetPrivateProfileString("Function","PatchURL","",szPatchURL,100,".\\Config.ini");
7 C0 v' O2 C& T7 h - AfxParseURL(szPatchURL,dwType,strHostName,strHostPath,wPort);6 B) y) f$ D- _, Q0 M0 L8 H
- }9 J2 M/ F) E2 ?1 w( N$ J! h
- else' ~0 N: x4 r3 J& @9 _
- {
: W8 ]3 @. z3 b - AfxParseURL(DEFAULT_PATCH_URL,dwType,strHostName,strHostPath,wPort);8 s4 ?- X1 l$ H9 L! ?
- strRegsName=DEFAULT_REG_URL;8 V& L* \& V5 b
- }8 z9 n4 G0 W* [* w. R3 @
- if(GetFileAttributes("hosts.ini")!=-1)3 r3 ~5 H _" ^# m' D, E k, m
- {& x. F1 X7 h0 I
- char szIP[50];
* s) ?: e7 i9 F3 X H0 X - char szDIR[300];
; N0 f/ l0 f m# C5 N7 ^ - if(0!=GetPrivateProfileString("update","ip","",szIP,16,".\\Hosts.ini"))
' `+ D# c6 _% }2 t! m - {
8 a5 o& ]% j) h! W% \$ p+ Z. t- C8 \ - wPort=GetPrivateProfileInt("update","port",0,".\\hosts.ini");; _: f' M) F# V! q2 _ }, s6 D( |
- GetPrivateProfileString("update","dir","",szDIR,300,".\\Hosts.ini");7 ?4 V' \+ \. E6 t* k5 Q9 {4 ?
- strHostName=szIP;
* K$ S- J" O( Q8 o7 h9 j% y- a - strHostPath.Format("/%s",szDIR);
0 q, A5 b; E; z/ o, { - }
1 l4 \/ y/ B8 E$ F" j - else; H; l4 E( i w# L' S! \& p' j, o, b
- {; o" ~) x- Y% w$ @
- if(GetFileAttributes((LPCTSTR)sCfgFile)!=-1)
3 ~ k9 s# `, A+ f$ G" p - {
* R% x4 s9 H& u+ V) |! A - char szLanguage[50];# W2 Q0 X* s X: ]) t
- GetPrivateProfileString("Interface","Language","",szLanguage,50,".\\Config.ini");+ Z. _; N- b# r# Z% } U: j
- if(!strnicmp("BIG",szLanguage,3)) m_iLanguage=TRADITIONAL_CHINESE;
O$ ^) L7 \/ }0 M" W - else if(!strnicmp("GBK",szLanguage,3)) m_iLanguage=SIMPLIFY_CHINESE;" `6 O! Q, S0 y0 F
- else m_iLanguage=ENGLISH;* r, I* s' e, r! \, S
- char szRegister[100];. m5 o, Q# |! b7 ~. B1 g
- GetPrivateProfileString("Function","RegisterURL","",szRegister,100,".\\Config.ini");5 }2 H0 s: a3 I4 V2 p9 |: P
- strRegsName=szRegister;6 m B' z z) D# ]
- char szPatchURL[100];
, }. M& G' {6 h. I0 r6 o! ?5 b - GetPrivateProfileString("Function","PatchURL","",szPatchURL,100,".\\Config.ini");3 W( D% y7 o0 O* \& n$ Z
- AfxParseURL(szPatchURL,dwType,strHostName,strHostPath,wPort);
' h6 d% u0 _" }+ _/ A" M - }
' ]- I, S9 `3 Q& d4 w% {. j/ G, N - else# A* P$ r2 E6 B8 F" U! S3 ^. O
- {' `) \4 s$ u+ X
- AfxParseURL(DEFAULT_PATCH_URL,dwType,strHostName,strHostPath,wPort);) E0 i6 b7 K, E& K
- strRegsName=DEFAULT_REG_URL;
2 X4 o3 c& e) ]2 T. q9 Z0 a - }3 F' Z5 w* ]/ g v7 A1 l4 F4 f. T t
- }4 X0 m0 g8 U& r6 ^2 b' o' p
- }# B4 A) B+ v' g
- return true;
! n+ Q) f* E$ [. @( z3 E" ] - }
) Z; V0 h; f# n) w% s9 g3 u - 6 B2 Z. b7 l, }) r R: ~! }2 d; p
- #include ".\ZLib\unzip.h"
. m' C; h5 K2 S) ]. O: ~ - extern "C" extern int do_extract(unzFile uf,int opt_extract_without_path,int opt_overwrite,char *extra_path,ZIPCALLBACK zip_callback);8 V; Q% J+ J- k
- /////////////////////////////////////////////////////////////////////////////' p" A" `, q- M7 t9 i$ s2 s* u
- // CRevAppApp initialization
0 q/ Z# f D- b! o
' ~2 w; z5 v3 r* Y8 g, J- BOOL CRevAppApp::InitInstance()
) W ]; U2 e; x$ Q- ` - {
* f9 z" d4 L g0 ]$ u" b! o) V - TCHAR szPath[MAX_PATH],szPathSource[MAX_PATH],szPathTarget[MAX_PATH];0 l+ R4 v8 c1 k8 I
- 1 A( b: r' M* I8 |% j' R
- GetModuleFileName(NULL,szPathSource,MAX_PATH);
?" | a& R2 `: b - if(GetCurrentDirectory(MAX_PATH,szPath))# I8 z7 c3 ^8 z2 a
- {& L) q8 z/ k2 ~& x
- if(szPath[strlen(szPath)-1]!='\\') strcat(szPath,"\");
# G8 j# q0 ?/ F8 ?% z - GetPathFromFullPath(szPathTarget,szPathSource);1 A& g5 }' f' [, o$ ]3 b
- if(strnicmp(szPath,szPathSource,strlen(szPathTarget)))" V( M8 U" G. T
- {
+ n* y" [5 @( M' q9 B* Z - strcpy(szPath,szPathTarget);
& Y. I" w8 i3 h4 T8 ? z - SetCurrentDirectory(szPath);& Z. e) y8 L: h, v( \9 \
- }9 m& \8 k7 n$ D/ L
- }* X( C& y5 B" \& l% c8 S
- #ifdef _DEBUG4 K! p7 J' D6 ]% q8 W5 C) `2 B
- if(strnicmp(&szPathSource[strlen(szPath)],"CSUpdate.exe",12))
. @$ A @: C$ p' N. b: n1 { - #else& V# q5 T0 I8 l9 s
- if(!strnicmp(&szPathSource[strlen(szPath)],"CSUpdate.exe",12))
# b, q$ x2 z+ _6 L* W7 O# i7 @3 H - #endif7 m: n/ u9 t3 a4 ^1 U4 t b
- {+ P7 O' n' x4 e
- char tempFileName[MAX_PATH];
" z F) P- [& k6 C - strcpy(tempFileName,szPathSource);7 F) W. _7 W& M0 ?
- tempFileName[strlen(szPathSource)-12]=0;
/ _5 r r. I, ^# c - strcat(tempFileName,"\\$CSUpdate.exe");3 d5 v& g1 b( Q( k( S+ `& ^! P
- ForceCopyFile(szPathSource,tempFileName,FALSE);7 ^0 B5 H8 }# z* M, S* S0 p$ d
- ShellExecute(NULL,"open",tempFileName,NULL,NULL,SW_SHOW);
. m4 H5 g* }* s( N) f+ o - return TRUE;5 P$ [. N G6 s- k
- }* N5 f+ K3 r3 e8 @0 Q$ E( m% c- r
- // Nuke 0118: Delete run.exe! x" v. d$ |' p' I
- if(GetFileAttributes("Run.exe" )!=-1) DeleteFile("Run.exe" );
, n4 S9 d4 [# G+ { - if(GetFileAttributes("$Run.exe")!=-1) DeleteFile("$Run.exe");! Q! F2 I! C2 S- Q$ a+ t Q3 b
- if(!ReadCfgFile("Config.ini"))
0 z; D7 I* b1 U! @1 g' z5 y1 ^) X - {: t0 |- T" ^3 i+ n) l; H4 H
- MessageBox(GetActiveWindow(),"Cannot read Config.ini file !","Error",MB_OK|MB_ICONERROR);
$ f( C. L) J3 F5 O0 J - return TRUE; ^! H7 O/ w; L% f" E% H
- }8 T. a0 G3 V) K0 X( Z
- HANDLE mutex;
6 v: Y2 P, Z" r8 K, P7 z - if(mutex=CreateMutex(NULL,FALSE,"Elysium"))6 q7 Y' L( P! x5 B' V W/ G
- {
) A( u$ N( Z( e' l - if(GetLastError()==ERROR_ALREADY_EXISTS)0 [8 S0 f9 Z; C6 ]; U' w
- {
r+ x2 S+ w; x3 k; U t - CloseHandle(mutex);
4 F9 B# v( _1 v$ q, u - MessageBox(GetActiveWindow(),"Please shut down your Elysium !","WARNING",MB_OK|MB_ICONERROR);
5 @6 [ T! _# Z9 x/ D - return TRUE;
/ F [3 {8 x. g - }
( e% T9 X$ o: t$ B - } . G8 G Y% ~$ o3 K5 @
- CloseHandle(mutex);
0 v. i" {4 `7 ~& U0 ~
/ ~" z8 s8 G& u7 o5 y2 n, Z- if(!strnicmp((LPCTSTR)strHostName,"http://",7)) strHostName.Delete(0,7);5 }! ~4 P2 ?$ n& ?4 l# D- X
, D5 R$ X" T, B; u3 x- AfxEnableControlContainer();+ }* p. Z. [, Y. D: K" t3 N# |
- : o1 o- o. D' l3 ?
- bCanUpdate=FALSE;
6 b: E, @# U1 h n O - dwStartUpSteps=1;) H& N8 x& K' k- U, T0 \2 X! b
- dwProgramState=AP_NOTHING;
& e) y, p% V5 s - 0 V: G( g& c) |6 e3 T e" {
- InstallRevUI(m_hInstance,&g_UIDefine,&g_ResIndex);
5 U% |: a2 k2 H5 K& r
% |/ X5 L8 @2 L- // Standard initialization# [: _. b. s& b0 D# T9 O: y1 F
- // If you are not using these features and wish to reduce the size
8 G, d8 @( Q7 o. n/ T - // of your final executable, you should remove from the following
0 ?* [" o9 T2 B) W. [. A& T$ n - // the specific initialization routines you do not need.0 r4 x0 Z3 d1 ~: N5 h$ ~! S
- 9 n' h2 z2 i, h) B- C: ~
- #ifdef _AFXDLL
2 t: |6 X0 q0 i$ [) N. W5 u - Enable3dControls(); // Call this when using MFC in a shared DLL
- Q# C# F8 m( @+ R: r* Y9 P8 z - #else
% {+ L( Z& ^$ w4 o7 N - Enable3dControlsStatic(); // Call this when linking to MFC statically
/ ~3 h2 R) w4 N& e8 J - #endif- d6 W2 K. s) L) k# r6 ]8 S
# I; F) s: ~/ G5 f& s% V- dlg=new CRevAppDlg; Z# F1 {) W: N9 V4 X
- dlg->Create(IDD_REVAPP_DIALOG);
! K/ i+ A% Z0 {6 |4 e+ P& H - dlg->ShowWindow(SW_SHOWNORMAL);5 m/ E/ c, g, g2 ]- r! G# q
- m_pMainWnd=dlg;
4 q. k/ X- @" n5 o9 A. X" P7 |1 M - 5 K# l/ o5 P7 e Y9 K8 `! k
- SendMessage(m_pMainWnd->GetSafeHwnd(),WM_USER+1,0,0);6 D$ j9 x! W1 B2 G) | }
' y$ F/ Y9 T& C! O. ^. L- // GdiplusStartupInput gdiplusStartupInput;& S* B( s0 F: ~
- // ULONG_PTR gdiplusToken;# U. J6 U# O% H
- // GdiplusStartup(&gdiplusToken,&gdiplusStartupInput,NULL);( q) j1 Z; Z0 l) `5 Z; m+ @+ p
- 0 L$ o2 \: Z5 R" w4 |# S
- // CRevAppDlg dlg;& R3 h& c+ i/ x2 t! U
- // int nResponse = dlg.DoModal();
5 L f( z) k! o5 ?9 b, | - // if (nResponse == IDOK)% I* x" t* H4 \& f
- // {
0 o9 d* s4 |! v9 v - // // TODO: Place code here to handle when the dialog is
' y1 k. U8 ?$ F- O) B# X* V - // // dismissed with OK Q! D/ O$ o/ a8 t1 m
- // }2 s; L6 J2 w* t8 X
- // else if (nResponse == IDCANCEL)
' T9 i: x5 o' z$ ~ - // {7 I6 z* B2 o1 H6 g/ b2 A
- // // TODO: Place code here to handle when the dialog is
- O$ s+ K, o+ `% d( D - // // dismissed with Cancel
' f* ]6 I: ^7 J. K, r# k9 w - // }- ]3 O# K0 h) G8 x8 d M* A/ G% V6 @
- " w7 {" q0 O7 h
- // Since the dialog has been closed, return FALSE so that we exit the
# x( ]; i3 w. q/ R3 A6 l" @ - // application, rather than start the application's message pump.2 I" T8 `5 z. o1 O
- return TRUE;
4 q' \# A/ ]+ o, W& i- u - }8 q' M) Q* h- Z* r
7 a" H2 ^- l* l' T# j- char *CRevAppApp::strtok3(char *pSource,char *token)
5 B# @ z( d9 X2 I$ L: P8 X - {+ \% r6 e. T4 I. N# b( i) t
- int i;
* U8 u8 z6 S e- X1 b1 v2 F - char *szRet;9 Z7 Q3 l4 [: y3 b2 V( B
4 H. U4 ~' {* @7 i3 N- if(pSource) { itoken=0; sztoken=pSource; }$ a5 t/ P) X3 k% s8 Y
- if(sztoken)
$ a3 c/ p% p% {6 s" Q% W2 q - {
n8 o( K0 h- o - szRet=&sztoken[itoken];* S8 x# T0 k# i8 E
- while(sztoken[itoken])2 |; k9 d8 L5 s( Z* s
- {
- R7 J0 j; s8 q- j8 v( g - for(i=0;i<(int)strlen(token);i++)/ w6 l* P; R% q* s3 Z4 X) W
- {
4 C4 e7 _* `; n - if(sztoken[itoken]==token[i]&&sztoken[itoken+1]==token[i+1])
& m) G6 r; V) s" x8 m, }; m - {
8 \& l- y0 a$ c5 r3 W - sztoken[itoken++]=0;6 n7 k& K6 |3 ^2 E2 D7 u# T' n* E) T
- sztoken[itoken++]=0;
' @/ Y( h# r5 ~& Y/ {2 {0 U1 y - return szRet;9 D' b, H9 S0 O2 }: s0 a
- }
8 V9 {8 E4 C; q { - }8 u1 t5 ~8 p- Q% m
- itoken++;
( d: _% |' g$ u2 n# Y, C0 ~7 G - }# I% ^7 i j" k
- }
- i/ |+ |! V1 F5 v$ Q - return NULL;9 c( J, Y; h) q, s8 |
- }4 L" ^) Z/ O/ B! p4 p
- ! Z" b- [: g+ v6 o& h3 ]5 r
- void ProcessProc(long Total,long Current)
1 u8 W! J4 J K& c/ T% {8 F - {
6 V. m' F2 v) z - MSG msg;
" V9 L+ O# Z( M - if(!IsWindow(theApp.dlg->m_hWnd)) exit(1);1 S' v) Q9 t! W/ `7 u
- theApp.dlg->m_Process2.SetPos(100*Current/(Total?Total:1));' P; G# y' Q2 V, A' X" c+ P% Y: [
- if(PeekMessage(&msg,NULL,0,0,PM_NOREMOVE))9 [* ^6 _9 D: a0 B
- {
* J, `! v; Z4 ^6 x# O& e' z Q% Z7 F1 | - if(!GetMessage(&msg,NULL,0,0))
. r2 H& K: m$ `8 y - {
$ X9 n+ u' X C- f - return;
! A# ?5 l; c0 B' ?$ M - }9 }$ i, T7 H- i1 m
- TranslateMessage(&msg);' {: D& E, N+ a0 V+ X5 k
- DispatchMessage(&msg);( A4 `( B9 ]0 Y4 c+ o3 I
- }
) G4 i0 k4 v. P0 ?# } g - }
. Z* v9 E- x/ K- {$ g. R - & k+ R z8 d8 H- `$ Z$ ]
- BOOL bFirstChar=TRUE;
+ K; V9 w6 s4 }" U; D
' j; @& f/ j* L ~* t- BOOL CRevAppApp::OnIdle(LONG lCount)
, ]* j+ m+ z% Z7 V - {* \2 d% v: Y( h6 @) X; U- h
- // TODO: Add your specialized code here and/or call the base class) N3 c, N9 E; C' D6 T
- switch(dwProgramState)+ a! z7 F/ {; F: O# ^
- {
# E) R2 s! i* J5 s& `) I$ o; _ - case AP_NOTHING:8 [4 K- E" J, R M5 z+ o
- switch(dwStartUpSteps)
! @8 l! a4 Z' V) O. `/ i0 j - {
8 L& @8 ~: e. \ i- D0 M - case 1:2 x2 u" _: C" [0 Z' B% }
- {
2 H/ t6 m$ p M - int i;& v$ }) `& a2 m! a6 W% r% j+ @* c+ Z
- CDC *pCDC=dlg->GetDC();
0 W, D! I; t m* n - HDC hdcwnd=pCDC->m_hDC;
0 {; l9 Y* T" j* A7 @ - // Graphics graphics(hdcwnd);
1 e3 W8 |2 P5 c$ G) ?9 ^ - // Bitmap bitmap(L".\\Elysium\\Back1.bmp");% ?. L! c n, |3 O2 {
- // INT iWidth=bitmap.GetWidth();
c8 `/ X: n6 h" @ - // INT iHeight=bitmap.GetHeight();+ u7 I: u7 A. A" _# _% Y% k
- // Color color,colorTemp;1 w, s& _7 k6 E" L7 C$ T
- // for(INT iRow=0;iRow<iHeight;iRow++)
: T3 H' o8 Z6 ~: B+ B4 X2 b# O9 B - // {' A8 Q F# }6 o. r1 X1 H) G9 H
- // for(INT iColumn=0;iColumn<iWidth;iColumn++)1 {5 |$ _( [- {
- // {
; f4 b8 M4 f6 p. ^0 U% F, V2 c5 e - // bitmap.GetPixel(iColumn,iRow,&color);/ k& @* F' F' g- ]; t; a- U, d- W
- // colorTemp.SetValue(color.MakeARGB(
; P" N4 ]7 F( O+ W - // (BYTE)(255*iColumn/iWidth),
6 w# m* v3 W- j - // color.GetRed(),, {; }* ~8 v) L3 i, }
- // color.GetGreen(),0 \. P5 b: u' C4 X
- // color.GetBlue()));- [* z, H( m. u' m1 d
- // bitmap.SetPixel(iColumn,iRow,colorTemp);6 V6 F: m9 B/ J, L, \: G
- // }4 Z* ]5 N' k" V% G
- // }- ]' r8 y6 @8 \) I; \: N2 `
- // graphics.DrawImage(&bitmap,0,0,iWidth,iHeight);# G' P& M& M9 }1 ~' A! H2 C
- HDC hdcorg=ReadBMPRGBA(hdcwnd,".\\Elysium\\Back2.bmp");
" D; n6 [" [/ }5 } - HDC hdcsrc=ReadBMPRGBA(hdcwnd,".\\Elysium\\Back1.bmp");
# R" X$ O: N3 a& T" r' x0 O( c - HDC hdctar=ReadBMPRGBA(hdcwnd,".\\Elysium\\Back2.bmp");
7 v' _: M7 }% i' D - for(i=0;i<240;i+=8)
- z3 o* K6 z9 l9 z: c - {# b: J: _4 s. o5 {* ? M
- BitBlt(hdctar,164,72,408,318,hdcorg,164,72,SRCCOPY);
: [# d' H- X# M - DrawAlphaBlend(hdctar,hdcsrc,164,72,408,318,i);
6 y& y" Y% Y3 r, K8 q; n - BitBlt(hdcwnd,164,72,408,318,hdctar,164,72,SRCCOPY);
3 o$ v, M. Q# {' w7 ^ - Sleep(33);
8 i0 }, i/ r$ g - }3 s# {9 L0 f1 A$ \* q2 v& w
- Sleep(1000);- t/ q* r. _: y/ G4 c
- for(i=240;i>0;i-=8)
) u$ ?. @3 O5 h1 L1 N8 J; N - {" M8 h8 x! m) f# J' t' U
- BitBlt(hdctar,164,72,408,318,hdcorg,164,72,SRCCOPY);/ c) h7 o6 q) F$ h6 E4 v" F2 `( J
- DrawAlphaBlend(hdctar,hdcsrc,164,72,408,318,i);+ H+ a& e% H% G: v0 T- L% H- I
- BitBlt(hdcwnd,164,72,408,318,hdctar,164,72,SRCCOPY);
6 k( L6 D4 g) t4 `; S# r9 h8 } - Sleep(33);/ V1 I5 l0 }" o3 Z
- }
) P) `' S. R9 Q0 f - SendMessage(m_pMainWnd->GetSafeHwnd(),WM_USER+1,1,0);
8 T- Y3 G9 ]/ u7 J - dlg->ReleaseDC(pCDC);5 w8 R3 b$ y5 [# J# q
- DeleteDC(hdctar);9 H/ Q" M O0 `( g, W0 t \
- DeleteDC(hdcsrc);. H7 X# G2 g+ E9 v) v0 r
- DeleteDC(hdcorg);, N( b7 L4 d6 s+ C7 A# S$ m
- }6 \2 o3 t1 ~' f0 o: ?* L- A$ r0 X
- // MessageBox(NULL,"Step 1","Elysium",MB_OK);
' m' c8 G) ^# o, L% T$ C, V% B - if ( m_iLanguage == TRADITIONAL_CHINESE ) dlg->m_ListText.AddString("穝狝竟腹 :");
+ x9 @' {. U9 x' m" m$ `2 t - else if( m_iLanguage == SIMPLIFY_CHINESE ) dlg->m_ListText.AddString("更新伺服器代号 :");
, P8 K0 a: B# @3 r - else dlg->m_ListText.AddString("Updating the Server ID:");
) w0 D6 K* W* t! l, | W - dlg->m_ListText.SetCurSel(dlg->m_ListText.GetCount()-1);
) e8 y1 c) j) v" r' x - if(!Dn.Connected())
* W8 O) O5 [$ [4 Z - {, f/ H {# l0 x1 ?! u$ l
- dwTotalFiles=1;
, \9 z& R8 Q; { - dwDownLoaded=0;
4 r/ l2 z2 w% o& z - bSilentStep=TRUE;! { L5 j+ \# k" `5 ?- p7 C
- bCompressed=FALSE;: ?5 I4 [6 W" Q T: U# E) a7 b C
- strExtLocal.Empty();/ d/ R. c( I' C' m' V" M% w( c
- strFullName="readme.txt";# u& G. N' Q9 L; Q# F
- dwProgramState=AP_CONNECT;) ]* o4 ^% w1 J. m
- }
9 Q- p, C1 Z: f( `7 \) M - m_pMainWnd->GetActiveWindow()->Invalidate();
/ n$ h: k9 {' r - dwStartUpSteps=2;
s; ]1 c3 u: j; a( ? - break;& Q6 t. i# g f( E
- case 2:
6 T: a: L6 m0 n3 u. U: J8 o - {
* A: C5 I2 n% Q3 P, A- `. F1 n- v - int iEOF;
' R% w+ r {, {: F1 L; y* F - FILE *fp;0 `7 g Z5 {5 t! _, ?6 s
- char szString[512];$ w5 j3 A2 \5 ^/ B. a
- fp=fopen(".\\DownLoad\\readme.txt","r");4 k- q2 d* I/ ~9 p3 Q& a& K
- if(fp)
; l- j; j9 J4 p# @5 R5 N( G# V- {& n" Y' [ - {
0 R% G9 A" b! Q: K& o" T - do, d# Q6 j9 B. `6 ?' H
- {
7 _ l) S$ e* `$ X6 N+ b0 x - iEOF=fscanf(fp,"%s",szString);+ X N. O6 O1 C9 j4 Y
- if(strlen(szString))
- B( C; \) B8 I# t$ x+ H - {* G- a3 y6 A+ e
- if(bFirstChar)
. p3 ?; S" Z5 q' h' `/ m% | - {
6 E2 w& ]( b# K6 W4 U# J - bFirstChar=FALSE;
( z1 _+ J2 j, O5 v% \) `& l# h- S - bConnectIsBig5=FALSE;; _$ m; A, ^9 b$ T6 R: c3 Y
- if(*szString=='T') bConnectIsBig5=TRUE;
( N! f8 S% W# t& d, }3 I - }
! b' t. n6 A5 _+ m - if( bDisplayIsBig5 && !bConnectIsBig5) GBKS2BIG5(szString,strlen(szString));
6 c/ m2 b( [/ f: P: Y {9 a - if(!bDisplayIsBig5 && bConnectIsBig5) Big52GBKS(szString,strlen(szString));
/ Q0 g D+ l+ J% u5 I( C0 b" ~ - dlg->m_ListText.AddString(szString);8 V/ J2 S9 O2 }% q( K2 U* G" n
- dlg->m_ListText.SetCurSel(dlg->m_ListText.GetCount()-1);( I4 E$ S2 k" g. C$ w
- *szString=0;4 t5 u) r% W' D! r7 T
- }. ?( o: P" h6 o! A
- } while(iEOF!=EOF);# }" B6 @" \% n3 Z( e
- fclose(fp);
3 a& w. \/ z W% q4 L D - unlink(".\\DownLoad\\readme.txt");; u* |- a) @( q7 o. c: m
- dwStartUpSteps=3;
+ `: ]7 L( }! t* S0 @5 X( X - }
+ N3 R3 Z7 D7 u - }
7 N. N2 q( z& v' Q% p - break;3 q3 g# M) ~, x1 c# J
- case 3:6 Y/ z8 f6 l, y& R4 g
- if(!Dn.Connected())/ H$ a9 G6 j0 c! F" |7 S' H
- {' s6 t* t+ D) N, l, z1 C
- // MessageBox(NULL,"Step 2","Elysium",MB_OK);
1 ?& s# _3 ]$ E. c; ~, C - dwTotalFiles=1;
% ^8 G- A- c/ \1 W5 r: k/ s* O1 X/ O - dwDownLoaded=0;5 U2 a* ^! Z6 u
- bSilentStep=TRUE;
% I7 h' \8 h. e B- r6 L# S' z% O7 o - bCompressed=FALSE;& E9 c7 `0 c* l6 }/ v
- strExtLocal.Empty();
0 H( @( |0 P; I+ W$ Q8 Z - strFullName="checkversion.txt";$ V* W2 ~' X% a5 k8 A5 T c6 I
- dwProgramState=AP_CONNECT;3 |8 M) O$ F7 B+ C
- }2 l t }- G7 Q" U T Q" {
- dwStartUpSteps=4;
g2 s$ x3 E& s H+ o( P: l - break;
y7 ] q: L9 D+ Z2 W7 e - case 4:3 S6 J5 D1 {% N% O% E) L$ g5 i
- {
7 U) T! X( ]5 F0 b: ~ - FILE *fp;! d- d0 @3 D9 ?4 e- O8 g! m
- char szString1[128];0 `8 X; z M" Z/ S1 {7 m
- char szString2[128];5 I. P7 `. C- @& t7 o6 K3 T
- fp=fopen(".\\DownLoad\\checkversion.txt","r");
! }& b& b( m9 H' ~2 ` - if(fp)
* A8 J- y B/ T7 m6 | - {, @0 B0 e* {, G2 @, {2 C8 X
- fscanf(fp,"%s",szString1);8 G7 t& `/ U$ C8 N2 o
- fclose(fp);
, Z% h8 j: J7 [5 a0 q) D3 c - fCheckVersion=atof(szString1);, ]% S5 c$ ^5 f
- fp=fopen(".\\checkversion.dat","r");1 B7 Y% b; i9 |9 _0 u
- if(fp)
- y* G& ^, J! d: V& f - {
, R, S$ G. e3 x4 D - fscanf(fp,"%s",szString2);
+ }6 ]. B. b) ^* I- H - fclose(fp);% y: V2 B% l2 O; m1 T0 C
- if(atof(szString1)!=atof(szString2))+ o# M- T) `; ?
- {
; \# T' _! F( J& [0 Y5 c1 d - if(!Dn.Connected())
0 Z5 X1 X- E7 _! X, H - {& `6 y, O$ Y" n2 g l
- bFirstUpdate=TRUE;& q8 w( u( _) C0 M# w t
- dwTotalFiles=1;& [! o- i3 u' K! [. E" o/ }# p
- dwDownLoaded=0;, r2 X0 j3 t; [4 x2 s5 p
- bSilentStep=FALSE;
2 H C1 G& g1 u - bCompressed=TRUE;8 _. Z+ l7 Q) e5 K* I1 Z+ [
- strExtLocal=".\\DownLoad\";
+ e7 _. U8 q: m- r) J5 h - strFullName="update.txt";4 ~% T# |' ]% \' H* I
- dwProgramState=AP_CONNECT; ]( G- L' z+ Y
- if ( m_iLanguage == TRADITIONAL_CHINESE ) dlg->m_ListText.AddString("穝更い, 叫祔.....");( t! C/ i. O6 g
- else if( m_iLanguage == SIMPLIFY_CHINESE ) dlg->m_ListText.AddString("更新列表下载中, 请稍待.....");
$ {5 x; X" N& p8 ^/ x6 m3 m B - else dlg->m_ListText.AddString("downloading update list....."); P) \4 b0 Y: f0 z" d
) T$ J4 ~8 A$ j. `$ c- dlg->m_ListText.SetCurSel(dlg->m_ListText.GetCount()-1);6 C1 n6 r, @) [( E3 F9 i
- unlink(".\\DownLoad\\checkversion.txt");$ i! p5 }8 Z% E) y
- if( GetFileAttributes("Wsa.zip" )!=-1)
1 l. C- t ?, S. m- v/ O - {/ v# R8 t! d( Y; s/ e( ~
- if ( m_iLanguage == TRADITIONAL_CHINESE ) dlg->m_ListText.AddString("郎秆溃, 惠だ牧");
( k' }% e3 A& I$ u - else if( m_iLanguage == SIMPLIFY_CHINESE ) dlg->m_ListText.AddString("档案解压, 约需耗时十分钟");5 G+ l e$ L/ B) D1 ?
- else dlg->m_ListText.AddString("Unzip Files, Maybe cost 10 minutes");
& d* ~: r3 d1 y, n4 f. P - dlg->m_ListText.SetCurSel(dlg->m_ListText.GetCount()-1); Y- E' e/ k/ f `: d
- 9 C2 T+ H# {. i& O" C% m* m
- if ( m_iLanguage == TRADITIONAL_CHINESE ) dlg->m_ListText.AddString("叫瑻み单..........");
" P- m$ l b8 o9 X2 t8 q0 G/ R - else if( m_iLanguage == SIMPLIFY_CHINESE ) dlg->m_ListText.AddString("请耐心等待..........");5 e4 l1 W9 R7 u3 ?: j/ `8 E; v
- else dlg->m_ListText.AddString("Waiting..........");
z- C7 n% `* H - dlg->m_ListText.SetCurSel(dlg->m_ListText.GetCount()-1);
+ M% F" l8 @6 Q7 G' q7 a - }" }; Y0 X9 m$ R+ b9 ~
- dwStartUpSteps=5;+ y) M# P. q. E4 u
- }; u4 c% j% m! m5 ? g: b- \
- }
7 Q2 h* k$ H8 e6 K - else2 H$ f3 t: l: {, M
- {0 i4 j( r# h, T
- unlink(".\\DownLoad\\checkversion.txt");- d% i! G0 c! ?. `; _* T
- if ( m_iLanguage == TRADITIONAL_CHINESE ) dlg->m_ListText.AddString("⊿Τ惠璶穝戈.....");# p+ S% b1 Y, X7 L9 ]" s1 P' s
- else if( m_iLanguage == SIMPLIFY_CHINESE ) dlg->m_ListText.AddString("没有需要更新的资料.....");* A3 E# N8 J! @, c. X; M. t: b
- else dlg->m_ListText.AddString("no new file update.....");
4 b7 i7 q* K6 z6 _
7 L6 b5 S G8 s3 m& @2 D/ u- dlg->m_ListText.SetCurSel(dlg->m_ListText.GetCount()-1);
( {- `0 A- k* K0 r: m: n - dwStartUpSteps=99;
% D) s$ _2 w, Q( s5 r6 } - bFinishUpdated=TRUE;
: Z5 J$ G: D }$ C5 f2 _2 V - bCanUpdate=TRUE;3 x0 ^8 l( R8 b" b* `+ S$ \& h1 J
- }( M+ Z& v% g5 {& S
- }+ ]7 E3 `2 {2 X5 ?; [) n
- else
+ h* n7 h. d2 ]. V1 Z7 a - {
2 A |8 @5 J0 b# c w2 h - if(!Dn.Connected())
& `3 p3 K0 W. U4 e7 E5 W. a2 C - {7 g" u( H2 C0 d, L3 r
- bFirstUpdate=TRUE;4 P- H4 U9 [; j/ G/ {" m2 I: ?! _5 K
- dwTotalFiles=1;; T& X$ s) w* C9 D
- dwDownLoaded=0;
" }8 S5 O# N ~4 G - bSilentStep=FALSE;. i9 _. |! g2 ~: r" B8 A
- bCompressed=TRUE;
# @/ s' g, O- F. B5 X - strExtLocal=".\\DownLoad\";
6 B, \! f% w5 K - strFullName="update.txt";3 F: t! E j. |; R) U7 l
- dwProgramState=AP_CONNECT;
1 ~5 h, N" T/ m5 I8 O5 z - if ( m_iLanguage == TRADITIONAL_CHINESE ) dlg->m_ListText.AddString("穝更い, 叫祔.....");1 t V" W4 A- l6 c4 o
- else if( m_iLanguage == SIMPLIFY_CHINESE ) dlg->m_ListText.AddString("更新列表下载中, 请稍待.....");0 ~! W9 \# ~. o3 _' ^
- else dlg->m_ListText.AddString("downloading update list.....");* R4 N8 r7 x" b! ?' x* d& k
- dlg->m_ListText.SetCurSel(dlg->m_ListText.GetCount()-1);: j$ e6 O+ d% ?" B2 {# q! B
- unlink(".\\DownLoad\\checkversion.txt");
$ d0 A6 N5 q& ~- l4 x" v$ } - if(GetFileAttributes("Wsa.zip" )!=-1)
8 Y W( s- p6 X* s {: M3 P: `; A - {( y+ G& c" s, a+ q
- if ( m_iLanguage == TRADITIONAL_CHINESE ) dlg->m_ListText.AddString("郎秆溃......");$ M$ v5 _% ^( h
- else if( m_iLanguage == SIMPLIFY_CHINESE ) dlg->m_ListText.AddString("档案解压.....");) p9 H8 r% }* F8 D( M
- else dlg->m_ListText.AddString("Unzip Files.....");
1 b# n3 I/ Z3 y0 j; q( c - dlg->m_ListText.SetCurSel(dlg->m_ListText.GetCount()-1);. I+ H, y: i+ P7 Z4 w
- 3 B" B/ C# X; Z8 c2 d& ?7 f4 O
- if ( m_iLanguage == TRADITIONAL_CHINESE ) dlg->m_ListText.AddString("叫瑻み单..........");
7 D) k2 U9 Z+ o: C# C F+ \ - else if( m_iLanguage == SIMPLIFY_CHINESE ) dlg->m_ListText.AddString("请耐心等待..........");
: ^8 d/ b F" w, ~ - else dlg->m_ListText.AddString("Waiting..........");: t6 ]/ A8 E" j, V
- dlg->m_ListText.SetCurSel(dlg->m_ListText.GetCount()-1);
6 v* O% i0 ]4 R# \3 u. w - }
% @ R1 n& J! j* K- p8 ] - dwStartUpSteps=5;$ x# W- S( I7 c' ^
- }
! y2 i. s. |# @' e3 C0 P+ u# x - }
) A4 N6 }* n2 y: m; l7 w; r' P - } X h& K4 S% I! K
- else
0 s# o; P# t, f/ ?! Z - {
9 ]) t3 t. n8 u& B1 U - dwStartUpSteps=3;
$ T+ I0 B( p' g. {/ t - }
" c5 l W4 v- U+ D) T: y+ P4 A/ Q - }! C. b- S6 b. K+ p! F4 D5 N7 Q
- break;; z" F5 E4 ]! S: I) R
- case 5:
0 {. |) h+ o* @% b/ L - {: k9 H1 T% y* h7 I, U
- if(GetFileAttributes("Wsa.zip" )!=-1)- L6 g, {; y: M# k4 E# z, q
- {- K2 Y# q* x7 O/ D0 r
- int opt_overwrite=1;4 D0 {0 J( o' x2 ~ P0 K) r( ]
- int opt_do_extract_withoutpath=0;
/ o# C/ j6 Q3 i8 u9 v( _ - unzFile uf=NULL;% f% G' {' b3 L$ g ]
- 8 @- m% Y4 k$ b( H1 p3 B$ ^- A' T
- uf=unzOpen("Wsa.zip");
2 t {; e4 o/ A; t( m$ y - if(uf)4 P; N/ p, f9 s8 M2 G: c: F0 N
- {4 X4 O; ^9 h- c+ R$ e2 n- L
- do_extract(uf,opt_do_extract_withoutpath,opt_overwrite,NULL,ProcessProc);+ j* \. k3 q. F" N7 ?& h; Q+ z/ m
- unzClose(uf);
9 r" X% q1 t6 A1 ~) ^ - if ( m_iLanguage == TRADITIONAL_CHINESE ) dlg->m_ListText.AddString("郎秆溃ЧΘ.....");9 O6 x3 z: G5 `1 K% R9 j$ o
- else if( m_iLanguage == SIMPLIFY_CHINESE ) dlg->m_ListText.AddString("档案解压完成.....");
% W& a5 n% ?3 s/ o; O4 ]. I - else dlg->m_ListText.AddString("Unzip OK.....");6 i3 T, {/ b7 h1 R8 h, T* z
- dlg->m_ListText.SetCurSel(dlg->m_ListText.GetCount()-1);
$ F1 q0 x1 u) N) Z) h - }
- `2 w! i* y$ \3 W1 l - DeleteFile("Wsa.zip" );
, l# S1 v8 J9 L3 ^. h6 f( X4 ] - }/ ~8 N4 n7 ]4 X8 b; e8 g% p) ~
. v7 [" M% v; e5 X2 k7 N; C; u- if(CheckLocalVersion())/ H' {) n, c; M, d( z
- {
& c5 i* m$ V3 x4 X' h - if ( m_iLanguage == TRADITIONAL_CHINESE ) dlg->m_ListText.AddString("叫磅︽絬穝戈.....");
/ z# W) t3 ^% \: B - else if( m_iLanguage == SIMPLIFY_CHINESE ) dlg->m_ListText.AddString("请执行线上更新资料.....");7 @) U' ^ N7 q
- else dlg->m_ListText.AddString("Please update.....");* Q& D5 R8 ^( T' E4 p
- dlg->m_ListText.SetCurSel(dlg->m_ListText.GetCount()-1);
& j1 X7 G& d7 C! h9 S1 L, i9 h( D - SendMessage(GetDlgItem(m_pMainWnd->GetSafeHwnd(),IDC_BUTTON1),WM_USER+2,3,0);% _+ z H& O4 P9 [
- dwStartUpSteps=99;' N N; p/ M' L& M5 L% B- n, T
- }& a% D3 ?5 x: O! N$ n' Y4 E) E
- else
5 [' j& j6 m/ Y& A+ ?, t, v* z, w, I4 H - {
7 K/ S4 o; e: ~( S& F: h - if ( m_iLanguage == TRADITIONAL_CHINESE ) dlg->m_ListText.AddString("⊿Τ惠璶穝戈.....");
5 T A4 D1 ^8 Y$ t+ j3 e - else if( m_iLanguage == SIMPLIFY_CHINESE ) dlg->m_ListText.AddString("没有需要更新的资料.....");5 l, E4 P& D* g+ r. P
- else dlg->m_ListText.AddString("no new file update.....");! ?) \+ e. W' i: _" O
- . A9 z9 N" l% C; t! n$ E
- dlg->m_ListText.SetCurSel(dlg->m_ListText.GetCount()-1);8 ?- d# K5 x, z! c
- dwStartUpSteps=99;' B. o, Y4 t1 M! q
- bFinishUpdated=TRUE;
3 E$ b2 Q0 f- `3 y - }! a2 Z1 p5 @9 {$ ~2 O
- bCanUpdate=TRUE; `' s8 L3 Z7 ^
- }3 t% C! N+ y1 [# M' \" f% u0 U
- break;
( _8 s6 _5 Q: p! i) V - case 6:! J+ R7 P9 O' C7 V
- {
2 t F6 S1 w# H8 x5 } - if(!UpdateLocalVersion())0 |9 _, V0 ]$ f8 H# t& f2 c
- {
$ i1 \9 e8 G$ B: P" Q( L" r - if(bRestartUpdater)
# s: j9 x5 T4 K- O: D' E - {
1 z B( y# d2 k9 Y9 S0 e6 h( s - if ( m_iLanguage == TRADITIONAL_CHINESE ) MessageBox(GetActiveWindow(),"叫穝磅︽穝祘Α.....","Elysium Updater",MB_OK|MB_ICONERROR);
) i3 Q0 K1 R6 Z* Q3 C! c5 G, U - else if( m_iLanguage == SIMPLIFY_CHINESE ) MessageBox(GetActiveWindow(),"请重新执行更新程式.....","Elysium Updater",MB_OK|MB_ICONERROR);9 [( G4 Z3 N7 Y
- else MessageBox(GetActiveWindow(),"Please Restart Elysium.....","Elysium Updater",MB_OK|MB_ICONERROR);& D9 |6 X8 U X! C2 P9 m
- DestroyWindow(m_pMainWnd->GetSafeHwnd());7 }: |7 ]8 a2 W$ k% ~3 v5 Y! U
- dwStartUpSteps=99;
6 ~3 o2 C9 z h - }
3 u+ X) n) M. X: Q9 z( n& o9 V - else! l& M# s4 S4 N1 h+ z, ~! G
- {- Y3 g$ Y0 P# F, d2 V% b) p+ F
- if ( m_iLanguage == TRADITIONAL_CHINESE ) dlg->m_ListText.AddString("穝戈竒ЧΘ.....");
4 v! f( M+ i; N% z4 F% k5 Q/ ~ - else if( m_iLanguage == SIMPLIFY_CHINESE ) dlg->m_ListText.AddString("更新的资料已经完成.....");
6 X7 D7 e: D& l - else dlg->m_ListText.AddString("updated file ok.....");. ? Y* V/ \) l/ T$ _4 v" m' P8 A( y
- dlg->m_ListText.SetCurSel(dlg->m_ListText.GetCount()-1);
/ k- n$ I: S9 m' } - SendMessage(GetDlgItem(m_pMainWnd->GetSafeHwnd(),IDC_BUTTON1),WM_USER+2,0,0);
8 g; G- f5 Y3 A8 Z7 j4 T5 I0 U - dwStartUpSteps=7;, ?9 h, h3 E- V, T$ Q. c! [1 |7 Y; f
- bFinishUpdated=TRUE;
- b* ]2 d( I# _, z3 I8 F8 |4 C - }
0 `4 y u, N1 R+ l4 G - }
$ ?+ T& y- F8 |) B$ ? - else
- V4 Z7 N* e7 F! U, @ - {
( C0 ?3 D; C4 a, \. Q - if(bRestartUpdater)
: R) J/ l, X! M E8 L0 E+ R9 d - {
! W! J4 k7 n3 \2 z; [( ?1 e) v - if ( m_iLanguage == TRADITIONAL_CHINESE ) MessageBox(GetActiveWindow(),"叫穝磅︽穝祘Α.....","Elysium Updater",MB_OK|MB_ICONERROR);' I" ~5 _3 Z, z0 ]6 P
- else if( m_iLanguage == SIMPLIFY_CHINESE ) MessageBox(GetActiveWindow(),"请重新执行更新程式.....","Elysium Updater",MB_OK|MB_ICONERROR);
/ |& |" E) i) s; P9 g2 n# q# D - else MessageBox(GetActiveWindow(),"Please Restart Elysium.....","Elysium Updater",MB_OK|MB_ICONERROR);+ u+ ?- q8 L9 f3 `* W* q. I: s
- DestroyWindow(m_pMainWnd->GetSafeHwnd());
3 w" c: @4 c2 o2 i4 c3 s - dwStartUpSteps=99;$ V& }3 \& Y$ V/ O( l4 ~
- }
4 x+ p6 q7 U+ |& I% ] - }
$ \5 Y6 |: q$ P1 v - }( e$ H2 R! E: q
- break;
8 e* D E8 g2 c3 v# a4 b8 \! N. P - case 7:
5 F' J. Q" B% s+ R! F. Z$ p - {# c s0 F, r i# c$ {8 R0 w
- char szExecuteFile[14]="Bf_Client.exe";
! |2 S/ j' e0 o2 N4 V% h! v, z - if(GetFileAttributes("Run.exe")!=-1) strcpy(szExecuteFile,"Run.exe");7 J1 V4 N$ {1 r3 n# d" a, f; B) m
- if(m_iLanguage==TRADITIONAL_CHINESE) ShellExecute(NULL,"open",szExecuteFile,"updated" ,NULL,SW_SHOW);
5 h7 f; H/ q3 _' V - else if(m_iLanguage==SIMPLIFY_CHINESE) ShellExecute(NULL,"open",szExecuteFile,"updated2",NULL,SW_SHOW);1 P2 I% O$ w; a2 l" @$ Y7 \
- else ShellExecute(NULL,"open",szExecuteFile,"updated" ,NULL,SW_SHOW);* K Y2 ~- |6 x5 j% U/ x
- DestroyWindow(m_pMainWnd->GetSafeHwnd());% H# U# o4 G4 \! L0 _8 b- w
- dwStartUpSteps=99;/ A5 y& B6 K$ m2 b3 ]* u/ G+ a
- }" s1 ^% l3 }/ A
- break;
& N c' v% N O- C" a# u; r' G - //add by cece
# H: `# E* p) M' J8 P* i - case 8:# `$ J1 D0 Z$ t: H; ^- U* }. \
- {
. ]# F% M1 g H0 O5 ]$ \ - if(!Dn.Connected())
1 z3 E# R, l1 d, { - {& f; O0 h9 S8 O7 I8 E3 W
- dwTotalFiles=1;( W$ ]2 k$ h+ i9 f
- dwDownLoaded=0;
5 j% ?4 G/ f, |- z' X% s0 W2 b - bSilentStep=TRUE;4 w" v: N% l5 @. p
- bCompressed=TRUE;# j/ l6 m4 z ~1 ]5 H
- strExtLocal.Empty();) y9 Y$ u( o8 G: j9 B
- strFullName="download/CRCTable.txt";( S$ [1 b" @9 F7 w2 E5 U! P
- dwProgramState=AP_CONNECT;
. Z/ X0 |( l- `* w2 K4 T - }
' g) `% l! H/ O% Z3 d) C) \. @7 ^ - //+ ?" E( ?; V& l: N) ~6 j
- dwStartUpSteps = 9;
- p& H9 s3 A; D, Z3 i! r - }/ J* I. B3 c+ v" M0 N
- break;" r8 j) t" G+ J! x4 @& s4 a
- case 9:
8 g9 y& j& v! Z - {
( h/ {7 g0 t5 f9 P9 ]8 C5 | - if(!Dn.Connected())
/ ?2 k" W; a" X( }0 V. j - {: I* u& Y6 F1 g3 `8 C
- dwTotalFiles=1;
; }, x! r1 w8 b4 N/ X/ C0 i - dwDownLoaded=0;
! ]* N* I1 X' T5 q& A# B7 @ - bSilentStep=TRUE;" Q9 E- E! o% a. a
- bCompressed=TRUE;2 K1 a4 z1 F! o6 V/ Y& y
- strExtLocal.Empty();
; O* T' C# e3 o% c2 J - strFullName="Run.exe";" h* I( ^; u+ D3 L6 C, E
- dwProgramState=AP_CONNECT;
! y/ l" q; ]4 @% d# C; e* j: f - }+ H9 O( G0 T. `8 e. ~2 p
- //
/ } K0 t$ ]% r2 [9 ^! a - dwStartUpSteps = 10;9 y' v9 t7 b% y# y0 I* Q, ~
- }# U0 L ^ I4 l: k; n
- break;0 S$ b' e. h5 G# x2 q3 m
- case 10:
7 L! S% G9 q' {& k - {2 i1 A( c; }7 e/ x q7 r
- if(m_iLanguage==TRADITIONAL_CHINESE) ShellExecute(NULL,"open","Run.exe","updated" ,NULL,SW_SHOW);
3 n( K7 h3 I7 y* a5 o7 F5 O - else if(m_iLanguage==SIMPLIFY_CHINESE) ShellExecute(NULL,"open","Run.exe","updated2",NULL,SW_SHOW);
* M- g1 m' T8 i" g4 i1 U - else ShellExecute(NULL,"open","Run.exe","updated" ,NULL,SW_SHOW);5 ?6 f9 R' l& k4 w, M% @3 X
- DestroyWindow(m_pMainWnd->GetSafeHwnd());
q! _: o( I1 v" v% a - theApp.bClickRunExe = FALSE;
. d$ \' j8 j! q: f9 [& _ - dwStartUpSteps = 99;" P3 P0 m5 G3 h' r
- //3 C% x1 O# C/ Q
- }7 _' E) S6 o$ _. O
- break;5 k1 m' e2 ]& v$ H t2 ^
- //
. o* w0 _: v+ i3 \) h1 z - }; i- ~* W7 D: ]) {- ?! ?% ^
- break;) S5 F7 Q3 ^5 ^ g' A+ h
- case AP_CONNECT:
/ V" |' s5 Q) _ e# p - if(Dn.InitNWSSock(4096,4096))/ g) \+ K# ` t4 l
- {
% X4 P6 H: |- z. }3 ]4 A, O - char szPathName[MAX_PATH];
( m* i$ I( Y( n- H% A7 S/ K' N - dwLastSize=0;9 q+ ~* R: e0 m- C; O' G. y
- GetPathFromFullPath(szPathName,(char*)(LPCTSTR)strFullName);
, ]$ i8 K/ m' f) A7 a9 ` - strFilePath=strExtLocal+szPathName;( ~& o6 b y" }( _" t6 U. H5 [9 U
- strFileName=strFullName.Right(strFullName.GetLength()-strlen(szPathName));% J' W- E" O) z0 D; C# `
- dwResumeNums=0;
7 @. I3 {) S7 h8 B! E3 n6 G - CString strTempName;5 C0 e/ |" N/ ?9 G* |
- if(!bSilentStep) dlg->m_FileName.SetWindowText(strFileName);
% a. R* S* [9 `" i6 {' g7 `$ h! U! k - CString strCountData;
$ ]6 J3 H& A5 w3 @ - strCountData.Format("%d/%d",dwDownLoaded+1,dwTotalFiles);
4 Y. h, s; j; ^% i m - dlg->m_FileNumber.SetWindowText(strCountData);% t! q2 x3 V- G' h r$ I+ }
- dlg->m_Process1.SetPos(100*dwDownLoaded/(dwTotalFiles<=0?1:dwTotalFiles));
4 T5 x+ m g. R( V7 b# n: S1 @ - if(bCompressed)
# ?3 a* N+ O b$ p5 } - {
+ v4 U, H K4 V4 P, U# j3 }: m# O - strTempName.Format("GET %s%s.zip HTTP/1.1\r\nHost: %s\r\nConnection: close\r\n\r\n",strHostPath,strFullName,strHostName);
& C( K$ G$ p8 g8 h; q- g: i, V - }
* m9 k2 D1 J$ s3 i& B. Q; j/ G% L - else
4 [0 {" z" M& Q8 W6 b3 B( J, G3 f3 N( z - {6 N3 t" o# O* i* g& y( X" n
- strTempName.Format("GET %s%s HTTP/1.1\r\nHost: %s\r\nConnection: close\r\n\r\n",strHostPath,strFullName,strHostName);/ f3 Q7 t' I' g* c1 J! O1 I
- }9 @5 t2 x P3 e7 @* R# u# f( T' U. m; y
- Dn.Connect((char*)(LPCTSTR)strHostName,wPort);
' s( @: ]# o+ W0 p( i" s$ \% d$ V - Dn.AddSendData((char*)(LPCTSTR)strTempName,strTempName.GetLength());8 c. ?% V# Q: z% P3 c( N; D
- LastTickCount=GetTickCount();" c; R C4 A1 G+ Z
- dwProgramState=AP_SENDING;* Y% s4 o4 ~6 F& e7 H: I5 O9 D$ A
- }. v1 `0 @ a9 `& P* r- g
- else; m( {# I; ~; \
- {
" z" W, y, _) K0 c# ~0 _; V" u8 u; s - Dn.QuitNWSSock(); R8 f0 a! S P; L4 U) e: r! d
- dwProgramState=AP_NOTHING;* c- Q' F( |9 l0 X
- }$ q7 o! i/ X: g1 m; | t
- break;$ |7 E' Y8 j8 L- G! ]- K
- case AP_RESUMED:
1 ]( t( I' @( S5 K6 \4 t( s - if(Dn.InitNWSSock(4096,4096))
" X, \! {8 F2 q. i- Y - {. f' X" L8 z4 y) ?7 |
- dwResumeNums++;: k! H; k0 M# F9 e4 p6 c2 I
- CString strTempName;
" f. z9 |& E2 r, @: o' Z - if(!bSilentStep) dlg->m_FileName.SetWindowText(strFileName);
0 r8 }5 M) Q: {. W6 {2 N - CString strCountData;( u) B2 @4 J4 C# A& J( Z2 D% P9 }
- strCountData.Format("%d/%d",dwDownLoaded,dwTotalFiles);0 T% L. T2 l: b/ K9 D, V
- dlg->m_FileNumber.SetWindowText(strCountData);+ {; s' \1 m' m: }, Z6 e g
- dlg->m_Process1.SetPos(100*dwDownLoaded/(dwTotalFiles<=0?1:dwTotalFiles));
* v7 F, p+ d2 y - if(bCompressed)
" P+ \1 B1 K2 H; b - {. x: r1 S: _; r
- strTempName.Format("GET %s%s.zip HTTP/1.1\r\nHost: %s\r\nRange: bytes=%d-\r\nConnection: close\r\n\r\n",strHostPath,strFullName,strHostName,dwCurrSize);
. ]9 T4 F0 \7 i: T2 K" M - }$ ^4 \4 o! Z6 C- T. O$ ?
- else
; s7 J; _$ p h! C5 [7 O - {
2 w& e" X9 w0 L, r - strTempName.Format("GET %s%s HTTP/1.1\r\nHost: %s\r\nRange: bytes=%d-\r\nConnection: close\r\n\r\n",strHostPath,strFullName,strHostName,dwCurrSize);" [. [# i) q5 f9 X
- }9 A3 i2 k+ G9 I( n; G
- Dn.Connect((char*)(LPCTSTR)strHostName,wPort);9 U9 f/ \: |) X
- Dn.AddSendData((char*)(LPCTSTR)strTempName,strTempName.GetLength());; N) ~: v4 S: x& @# p
- LastTickCount=GetTickCount();
* p D* U! {7 L; f& b - dwProgramState=AP_SENDING;
0 r+ v2 _# O! U4 i" u - }
3 J( s. e6 P8 P2 |; |! U - else
( A3 V' _' |6 Z$ U6 d7 I - {& Y- w$ I C6 m1 j
- Dn.QuitNWSSock(); P z0 o5 E9 a. f# n% v
- dwProgramState=AP_NOTHING;
9 h7 Z+ o/ `( o# D& T% S' _ - }
" z; X1 i4 `" l# ]0 M - break;
3 Z: x1 R6 I4 H, N. r2 }2 _ - case AP_SENDING:
$ {7 ~% |+ B: o( ?1 j5 _5 p- k9 g' P - {
, w' y) x$ W0 E/ j: o - DWORD RecvLen,SendLen;* z! \# w2 N& I& Z& P
- if(Dn.NetworkLoop(RecvLen,SendLen))
( ^9 l1 G# I c4 O0 D% s - {- [, h/ A A" |
- LastTickCount=GetTickCount();( K7 N5 _! f$ F" }5 c+ [
- if(SendLen)1 o7 W2 v* k. C: j& f: H
- {. u+ P+ H/ O% `3 v# t
- bReadHeaders=FALSE;( Y, W6 p' l1 |3 U; R, l
- dwProgramState=AP_RECEIVE;( L9 X- F T2 D, Y8 a/ h
- }4 F# o1 Z! m7 E8 C2 L/ S3 t6 l @
- }
! p9 L0 @# R6 H - else5 `7 N' ]6 H3 w
- {/ `, q) G1 o0 e5 s
- if(GetTickCount()-LastTickCount>3000)4 _; P/ e' F+ b2 p3 r1 L
- {
* _" `+ u0 e' ^ A - Dn.QuitNWSSock();
0 p$ I" s: g" `$ K - dwProgramState=AP_CONNECT;3 ?+ C% S) ^7 b0 w( q- @+ c
- //
. s4 l. F* K0 M c( x0 F- F6 I: q - static DWORD s_dwCount = 0;
8 V; Q. C0 v5 T' K, d" U6 j - s_dwCount++;
/ M* ^ w0 m8 ` - if( s_dwCount > 10 )
! a0 t8 ?+ o) Q8 [' M" ?1 G& F - {) V$ k: I! Z/ K
- if(m_iLanguage==TRADITIONAL_CHINESE) MessageBox(GetActiveWindow(),"硈钡穝狝竟ア毖叫浪琩眤呼蹈砞竚 ","Error",MB_OK|MB_ICONERROR);
% X$ U: d" H& k) I1 u2 _ - else if(m_iLanguage==SIMPLIFY_CHINESE) MessageBox(GetActiveWindow(),"连接更新伺服器失败,请检查您的网络设置 ","Error",MB_OK|MB_ICONERROR);
+ r0 Q5 {" x2 r3 D3 k7 X, H) o2 | - else MessageBox(GetActiveWindow(),"Connected Error, Please Check Your Network Status ","Error",MB_OK|MB_ICONERROR);
/ _- r, W3 o) D0 Y$ I6 A" \ - DestroyWindow(m_pMainWnd->GetSafeHwnd());/ M' ^6 }! _+ E/ q
- }
; F: N+ n+ G, Y& s - }
' j2 W0 {* ]8 p - }1 X' x1 h0 e: E' P. j) T
- }
4 F- T: l5 Y% ~ - break;; M* o; ?8 u( b: O# g1 U, ^" l1 V/ r
- case AP_RECEIVE:2 V% k$ ~8 |; w- @
- {
! Q: k$ e# F- ]2 i( d; r6 ]2 J) h - int Count;( A4 t( c4 q: N& Y) `8 X/ U6 v
- DWORD RecvLen,SendLen;; T4 C5 X" y! \" p+ M9 k8 n
- if(Dn.NetworkLoop(RecvLen,SendLen))
% q4 V: L0 g1 {/ }' P - {
0 J) M- B4 z1 i2 m2 l% y8 J! T - LastTickCount=GetTickCount();9 C4 i! {, G' _1 i( A. `; X/ T
- if(RecvLen)
0 Q* ~/ a4 T( j& P) x) d2 L& V+ h - {: X" S3 A. e4 D6 |+ ^4 {+ T. J
- if(!bReadHeaders)1 O, G) t! U# u6 c' e# P
- {
9 f5 A# z+ X8 V2 d: N! e& b8 { - char *token=strtok3(Dn.szRecvBuff,"\r\n");! O. [2 M, A+ P5 }" V6 e
- if(token)
% X6 i9 T9 k5 {# L5 o - {
# _: @" R6 z4 q% X% s - dwFileSize=0;
! {0 }( }4 `4 n" D$ y& m% M - for(int i=0;i<(int)strlen(token)-3;i++)) Z% z+ Z |% H4 Q$ J( u5 g; l$ m
- {8 L7 {" T/ f: w4 H
- if(!strnicmp(&token[i],"206",3))
' }3 U# ^/ b7 y$ F - {8 \, c" }/ [: H5 x6 B
- if(!bSilentStep)) ]4 P: p% P" E9 G9 \
- {6 @7 z- F- v- H, l4 r, ?% X# o% a
- CString strTempName;
0 F/ m3 i* ?' N4 `& W& t0 S$ \ - strTempName.Format("%s.....resuming(%d)",strFileName,dwResumeNums);8 U4 u7 Q* u, a- P o9 Y
- if((Count=dlg->m_ListText.GetCount())!=LB_ERR) dlg->m_ListText.DeleteString(Count-1);
/ f" w% }0 r% Q - dlg->m_ListText.AddString(strTempName);
7 b1 i% I9 s$ `6 L5 w ?' M - dlg->m_ListText.SetCurSel(dlg->m_ListText.GetCount()-1);
( F+ n; u. S) u0 Y% s - }9 Z5 B# Q t1 i2 @# G/ Z
- bReadHeaders=TRUE;- m8 {" q1 t9 \9 j* a
- while(token=strtok3(NULL,"\r\n"))
( N$ H# X7 {, ?9 A$ H6 W+ E - {5 N; Z( z; N( S5 O+ T9 q! j
- if(!strlen(token)&&dwFileSize)
( {- f+ H$ N4 Q$ W* e& W/ x - {
) J7 |" _5 g) F7 ` - Dn.dwRecvLeft-=token+2-Dn.szRecvBuff;; e6 z# ]4 x2 v
- if((int)Dn.dwRecvLeft>0)
5 F3 _: ~6 Z9 O5 j4 C! ], F - {& W' C R) i' X6 M: h6 X. E
- if(dwCurrSize+Dn.dwRecvLeft>dwFileSize)) q, J$ h2 n4 l$ \) A4 D% Z
- {* n; |; W" C* p$ G% J! [! {
- dwLastSize=dwFileSize=dwCurrSize+Dn.dwRecvLeft;
: V- u- z+ @2 j# ~( ? - Dn.szCompBuff=(LPSTR)realloc(Dn.szCompBuff,dwFileSize);4 J# B6 ^7 x, C/ s8 }) a
- }
6 S9 ?1 r \% @2 p& z8 R' Q - memcpy(Dn.szCompBuff+dwCurrSize,token+2,Dn.dwRecvLeft);% h3 I2 l! H8 d; t* F- N
- dwCurrSize+=Dn.dwRecvLeft;
6 V% r3 `0 L2 r( A8 X2 T z4 y2 u# i - Dn.dwRecvLeft-=Dn.dwRecvLeft;( i1 a" Z8 O4 N6 T
- if(dwCurrSize>=dwFileSize) goto SaveFileJump;: N+ Y* K1 K' D' c# L
- }* N2 ?1 M% U$ f1 Q9 M9 l
- break;( f* j) Q/ g' T' K
- }
. {1 c1 F4 v; A) J - else. ^: U: B! F" e3 I: D
- {! I! N6 ]6 a, q' O4 N; q- {! s0 p
- if(!strnicmp(token,"Content-Length",14))
1 ], U# O" l% i - {+ k; d5 T$ D) H0 D+ W' p D! @0 J
- if(!Dn.szCompBuff)8 ?$ G$ G# T, V4 M8 o% f
- {
) x% o) v5 N. u/ c* x+ e; H0 V$ I - dwLastSize=dwFileSize=atoi(&token[16])+dwCurrSize;
* X9 {) g2 Y* [* n7 _3 L Q F6 g - Dn.szCompBuff=(LPSTR)malloc(dwFileSize);
' w1 i/ a' b# U( A - }6 c+ d1 c" H& F+ k: c2 T
- else if(dwFileSize!=dwLastSize)- R$ m( Y3 A8 H; W3 ]5 ]9 i4 T! h
- {
) A* [8 f4 h6 P - dwLastSize=dwFileSize=atoi(&token[16])+dwCurrSize;
$ y6 v# ?; Z: [4 C0 D( [ - Dn.szCompBuff=(LPSTR)realloc(Dn.szCompBuff,dwFileSize);0 q! `+ K# i; G8 g
- }7 y' X' W4 x Z
- }" l' K' i+ ]/ Q9 k3 e0 P
- }
- t. t& A+ ?6 s; {/ l! ?2 i' x: M, \ - }
4 J* z6 F4 j5 V9 Y - break;! I) I' R2 v* r1 K4 g6 Z; ^
- }
' G& R# _- U$ L3 D - if(!strnicmp(&token[i],"200",3))" a- A4 ?: |/ L
- {
, b$ Q8 S8 _& V, p( i - if(!bSilentStep)8 M- `: v% e& R. K
- {: `, X, C8 l+ l- n
- dlg->m_ListText.AddString(strFileName+".....downloading");
/ u; e% ~ x" D6 A - dlg->m_ListText.SetCurSel(dlg->m_ListText.GetCount()-1);) C0 |5 G) K# P9 c+ u/ G
- }& b: x' h6 w9 a- q+ p
- dwCurrSize=0;
8 `9 C6 t8 ?% _' ]5 V* O0 Z: r' y! [ - bReadHeaders=TRUE;1 v) t/ `) H. H8 E: |
- while(token=strtok3(NULL,"\r\n"))
3 `* X& [% n; { - {+ k; ]/ @' Y7 p* M: ~ [& V1 C
- if(!strlen(token)&&dwFileSize). N; m' x# E9 I2 b& H4 _0 ]
- {
- r) R0 i/ E, w3 _7 ^$ d - Dn.dwRecvLeft-=token+2-Dn.szRecvBuff;
2 p) t. V E, ? - if((int)Dn.dwRecvLeft>0)
3 R. z) |6 B I- O4 J - {
. G9 E# S! n8 A2 E - if(dwCurrSize+Dn.dwRecvLeft>dwFileSize)
5 E$ ^2 E3 J* u- G- Z - { l5 B5 }: ^) [( _' z
- dwLastSize=dwFileSize=dwCurrSize+Dn.dwRecvLeft;$ z( r# l* W) k4 F
- Dn.szCompBuff=(LPSTR)realloc(Dn.szCompBuff,dwFileSize);
+ q* D" _$ K! g+ E7 T - }
4 V7 r, H9 p" m+ s0 p" [; x - memcpy(Dn.szCompBuff+dwCurrSize,token+2,Dn.dwRecvLeft);% y) A: z! {& D+ J
- dwCurrSize+=Dn.dwRecvLeft;
2 `: y9 E, L3 t - Dn.dwRecvLeft-=Dn.dwRecvLeft;/ U2 L# X- }: L& \8 C) j/ [
- if(dwCurrSize>=dwFileSize) goto SaveFileJump;
. p" p! b: `4 b9 ?9 J# `/ X2 u - }' v' K& w2 ]" o; z) g
- break;
) X) H U7 z ^, v, v6 ` - }
7 B2 k3 z" H: B2 J& `, A - else# ]1 V( ~2 S t
- {
6 t. d+ ]5 X7 m( D& ~+ u2 ~3 X# ~( h - if(!strnicmp(token,"Content-Length",14))
1 a/ e) L' Q* X1 T7 j+ d- Z' Q - {; h b1 N' r5 L, g3 L. t
- if(Dn.szCompBuff) { free(Dn.szCompBuff); Dn.szCompBuff=NULL; }. ?1 k7 l0 W6 |" i- a
- dwLastSize=dwFileSize=atoi(&token[16]);
0 U! x# H9 [2 |; A/ ^6 @* L( h - Dn.szCompBuff=(LPSTR)malloc(dwFileSize);
) `: N* Z V) V( H. \! ^ - }
: |" b; f$ }- B; ] - }
7 j: h$ X5 J3 r7 r% ]6 M - }6 H' K3 O! d& a
- break;
, z1 m2 H. S: Q, S - }6 `& J2 D1 K2 e
- }
# h3 r: @3 U) w F) `9 T - if(!bReadHeaders||!dwFileSize)- `% Y5 @4 c) ^- T
- {
! s2 |* I6 j- d& v( M - // Wrong Header or Reading File Size Error/ N6 H. q$ K# f/ G( K& w& q
- Dn.QuitNWSSock();
/ ^& \& D) c5 U - dwProgramState=AP_NOTHING;+ E, ?: n- U& p3 S& y1 B n
- CString strTempName;+ s. f8 ?( h2 H
- strTempName.Format("Navigate %s File Error !",strFullName);
8 g6 h) E2 P: r' p+ ] - MessageBox(GetActiveWindow(),strTempName,"Error",MB_OK|MB_ICONERROR);# d; V0 v7 l# Z5 w
- bRestartUpdater=TRUE;
5 A- t+ p8 s4 v& ?/ J - }
N; |! C, K: @. M, X - }
4 l1 x; d0 [( V- ` z: ~/ v* |. _ - else3 f1 W& I( ?( |) V
- {
$ d# @- M3 ]9 u' X9 ~2 u - // Have No Header0 N9 q. v% G( a: t
- Dn.QuitNWSSock();# d6 a& O" i1 I% v% x
- dwProgramState=AP_CONNECT;- K8 Q3 w0 R4 O( {) E1 i- j) Q5 k
- }2 J& @+ P6 J/ a* Y: J5 h
- }9 G. K2 R4 s Y& m# g
- else! |# n7 f* ?" s1 V
- {
1 k) j9 u$ [- R8 m - // Reading File From Web
# ^& F- H9 e( ]8 ^" v' ~; ] - if((int)Dn.dwRecvLeft>0)
% |) {1 P- D3 u x' S/ V n( |( K5 X4 } - {
9 \5 ^* x0 @2 F/ k' _& A - if(dwCurrSize+Dn.dwRecvLeft>dwFileSize)
& U5 Y- V& Z& _' G9 v2 H - {
9 C$ X2 I8 j* J* Y) Y - dwLastSize=dwFileSize=dwCurrSize+Dn.dwRecvLeft;7 k. t& I& j& S9 B& O
- Dn.szCompBuff=(LPSTR)realloc(Dn.szCompBuff,dwFileSize);
. z$ Y8 S" ~+ {2 J - }0 z8 |# M/ B. O. G) z7 P) j$ y, h
- memcpy(Dn.szCompBuff+dwCurrSize,Dn.szRecvBuff,Dn.dwRecvLeft);7 e* r4 F5 Z. d$ W( i
- dwCurrSize+=RecvLen;
5 B- q; i9 i' S4 @. i/ x - Dn.dwRecvLeft-=RecvLen;+ e$ Z5 Z# w4 t4 _5 r
- }
B$ J8 Q6 E4 r- C- |5 Z: ~6 A - dlg->m_Process2.SetPos(100*dwCurrSize/(dwFileSize<=0?1:dwFileSize));
- {! ^" T0 ^ h2 ^2 e/ r4 g% [ - // int iRate = 100*dwCurrSize/(dwFileSize<=0?1:dwFileSize);+ o5 l5 v. M6 K, c! _4 L
- // dlg->m_Process2.SetPos(iRate);3 b/ G0 v" {+ S$ y9 \; R- L
- // if(iRate < 0) iRate = 0;1 s; _, @" j6 R6 V
- // if(iRate > 100) iRate = 100;
1 S Y3 U* J, e - // char szShow[5];* x5 K9 N& ?# A1 V; B# W
- // sprintf(szShow,"%d%%",iRate);4 d% `8 e z5 E) s% d" K, x7 E6 x2 _1 V
- // dlg->m_SingleRate.SetWindowText(szShow);
7 N$ Y1 ^3 R e( W - if(dwCurrSize>=dwFileSize) goto SaveFileJump;
0 K. f0 _( Z- k2 G - }
: U! ~$ @$ Y) i& J - }
# k0 J' h; Q/ w( Z1 H! Y2 f! g! ? - else if(dwCurrSize<dwFileSize)
4 A- L. E/ P5 b9 k. v6 h* O: c - {" A8 k |5 v% f2 n
- // Disconnection But Size Error* F& s6 y% R/ w! k5 e4 r
- Dn.QuitNWSSock();% ~% e) d7 \1 f/ I' c+ z
- if(dwCurrSize) dwProgramState=AP_RESUMED;
; U/ z( h, V5 t7 j. x* i8 G A - else dwProgramState=AP_CONNECT;
; ] h" G0 Y8 ^ - }
+ e# M* D4 \' w% L' q. b) Z. z - else4 N& @ Y3 ~: W5 r0 [- c" l
- {
9 C& T3 r+ f" }, \2 N) |1 p - SaveFileJump:) d# {. _( @9 c& @
- // End of File and Disconnect
# {- g- k* q8 e- y: z, g+ y* Q - FILE *Fp;
( r$ m+ b: h+ L2 W, t - char szTempName[MAX_PATH];
$ s6 Q$ v; a( j/ j, N$ N( @% n - strcpy(szTempName,".\\DownLoad\");
' N) Q* s' ?* o& C! V/ H2 d9 i, E - strcat(szTempName,(char*)(LPCTSTR)strFileName);# N- @* |6 A- v5 } w1 \
- if(bCompressed) strcat(szTempName,".zip");
T/ _; F+ O R& n) g+ ` - if(dwCurrSize)- E: k; ?6 }2 F; [- M
- {; W( ^$ H- X5 j/ j
- Fp=fopen(szTempName,"wb");
/ Z$ m% t1 J1 s5 I4 ? - if(!Fp)
& c8 O- B* K N6 e! G3 A0 i" m - {+ c ^2 c$ [4 U# U
- _mkdir("DownLoad");+ B! g- F8 B9 {- g, @9 ?: b4 @' W
- Fp=fopen(szTempName,"wb");
2 p5 r; E; f, X7 G; o0 l1 b# q7 y - }+ j/ k% n( _$ n
- if(Fp)
) O6 w9 {( \, Q4 t6 G$ f - {& f$ P C1 Y- J% y: c, M
- fwrite(Dn.szCompBuff,1,dwCurrSize,Fp);" m4 `5 K }/ G8 p) Z0 t# e- U
- fclose(Fp);
7 i* b7 g6 Z2 d0 n: x- F7 Q) s" X - }8 k W+ R. g9 z, I) S# c
- }& c0 F( F- z4 u; _% b% D
- if(!bSilentStep)
' Q$ f; j- ]* Y4 _5 } - {
! Y; j( _/ x) b% L1 R - if((Count=dlg->m_ListText.GetCount())!=LB_ERR) dlg->m_ListText.DeleteString(Count-1);3 [" Q6 s2 \3 {2 i" p& g& G" D
- dlg->m_ListText.AddString(strFileName+".....saving");8 B( T8 y" n& t9 l) J/ g# N
- dlg->m_ListText.SetCurSel(dlg->m_ListText.GetCount()-1);# u/ g3 y! Q- [0 n( _0 w' L
- }7 n, X( o7 b% ~1 y! ^: T. l4 Z
- if(bCompressed) p0 U3 m1 J. |4 m8 f0 f4 V
- {8 @# i* u4 R3 ?# G5 D
- int opt_overwrite=1;; X9 r; ^* W8 v
- int opt_do_extract_withoutpath=0;
' Y# _: }" A: o# G$ Y8 y. X - unzFile uf=NULL;0 i, S' f \; g7 U% a# f
- uf=unzOpen(szTempName);! i0 t. a) `: O1 u
- if(uf)( ?$ Z9 O7 v+ n
- {
3 x9 \/ x1 g" [/ [, ]) w3 h - if(!bSilentStep) _" W6 | R$ ^
- {
% e1 \% T9 _3 ?6 x# \# c; J8 b) r - if((Count=dlg->m_ListText.GetCount())!=LB_ERR) dlg->m_ListText.DeleteString(Count-1);& Z5 V7 P; P/ T8 m
- dlg->m_ListText.AddString(strFileName+".....extracting");% M! L( j. H; c" x/ P
- dlg->m_ListText.SetCurSel(dlg->m_ListText.GetCount()-1);9 D$ F- ~9 H/ t8 K
- }" k) ]* X& j5 ~' H
- if(do_extract(uf,opt_do_extract_withoutpath,opt_overwrite,(char*)(LPCTSTR)strFilePath,NULL)==UNZ_OK)2 J7 m. b# }! _" E1 z) L
- {
# x* A2 H _* Y0 E I& z j" \ - if(!bSilentStep)% p+ B# x e) {8 b( K8 s' v
- {; Z+ O" S; W' a* m% @
- if((Count=dlg->m_ListText.GetCount())!=LB_ERR) dlg->m_ListText.DeleteString(Count-1);
: W6 e- l& [0 O8 z3 B - dlg->m_ListText.AddString(strFileName+".....done");
: K4 \- |& q) ]- H% ?2 r - dlg->m_ListText.SetCurSel(dlg->m_ListText.GetCount()-1);) c; n) M% J [/ B
- }
) ]+ t8 g9 o9 d6 [! k - dwDownLoaded++;
* n$ M. c* p4 @2 j( O7 M* o" Y - dwProgramState=AP_NOTHING;
/ i7 ^0 L# l: l, a9 |: \& ~ - }
% f6 v% ?0 T, c1 j4 q' L - else
0 z+ j; e1 W5 } r" R8 G - {) }2 s4 c/ ?! \3 s
- dwProgramState=AP_CONNECT;
$ ~8 }' S( u/ u- l* _1 L: ~ - }4 H' W; _ S9 f# e9 u5 c/ t8 Z
- unzClose(uf);
0 a* t+ F. N% a2 i, V - }
' z$ A- E) {' }3 w ~ - else' A W/ W' w6 H' }
- {
, o7 U/ q3 Q# j) Q' x4 P - dwProgramState=AP_CONNECT;
2 A* G/ F4 t8 U- { - }% x. M e$ y. {" d' {, ~' r6 S& F
- unlink(szTempName);
0 D5 |3 j( \& X0 G7 e - }, g7 x4 z6 t. v/ n6 O, F% W$ A
- else
/ n7 V: C: S6 v8 Q+ r - {
! S4 a3 ]1 G6 b- d( ]; ~ - if(!bSilentStep)
3 S/ |" x J g- d4 q! N- \% T5 t+ D - {2 _4 @4 B# }: q2 n: F% I N6 |
- if((Count=dlg->m_ListText.GetCount())!=LB_ERR) dlg->m_ListText.DeleteString(Count-1);
w8 Z; ^' f5 r6 Q - dlg->m_ListText.AddString(strFileName+".....done");* K3 ^5 s5 a( h1 R% h& v
- dlg->m_ListText.SetCurSel(dlg->m_ListText.GetCount()-1);) X3 e$ H; A# \% \5 L
- }
/ S1 W" u: A' z: ]* v9 ] - dwDownLoaded++;: b1 t8 `+ e& j; o% Y+ ~+ Q2 _: f
- dwProgramState=AP_NOTHING;
}" t! m! {/ C - }
8 T8 Z! X v8 q - Dn.QuitNWSSock();7 r2 z( j; n: o. A
- }
7 D+ R/ T4 o4 u' H - }' R9 b" r! k, j' @
- else6 d" E9 Y) L9 b4 }9 b f4 e
- {. ^: C* e! L. p
- // Connect Timeout
* }4 I" L1 {9 f$ x( Z - if(GetTickCount()-LastTickCount>30000)6 l" Y* a6 h! Q- E
- {
- ^3 d5 p; ]! z: _8 ]9 F+ D - Dn.QuitNWSSock();
* i8 p- t6 z+ L+ h; D0 h; ~0 Q. Y8 A - if(dwCurrSize) dwProgramState=AP_RESUMED; ?+ P( E: \( @
- else dwProgramState=AP_CONNECT;
5 h2 W) h7 o* x - }
# @3 x& T: Q- _3 X* H - }
g1 l4 s3 V% y R0 \4 E - }
+ H5 X# B8 z2 A7 j, a - break;
! g' C: v8 M8 f - }2 l4 p, z7 ^, T1 r( J
- return CWinApp::OnIdle(lCount);# [* c) K. C8 g2 @- N3 z. C; W
- }
# Q: \) a3 `/ e+ H& J- T' ?7 E
複製代碼 其实登陆器也就是这么一回事儿……
3 [. [1 A1 H: }2 ^" }3 w( ^+ n0 _附件有编译教程和源码
) h0 w5 Z% q8 g3 a
- d+ l6 ]/ j, e- t( U7 s5 U3 o# F2 r* q
|