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