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