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