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