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