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