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