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