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