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