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