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