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