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