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