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