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