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