?? thttpgetthread.~h
字號(hào):
//---------------------------------------------------------------------------
#ifndef THttpGetThreadH
#define THttpGetThreadH
//---------------------------------------------------------------------------
#include <Wininet.h>
#include <Classes.hpp>
//---------------------------------------------------------------------------
typedef void __fastcall(__closure *TOnHttpNotify)(TObject *Sender,int Index);
typedef void __fastcall(__closure *TOnHttpCompelete)(TObject *Sender,int Index);
typedef void __fastcall(__closure *TOnHttpGetFileSize)(TObject *Sender,int FileSize);
typedef void __fastcall(__closure *TOnProgressEvent)(TObject *Sender,int Position,int Max,int Index);
typedef void __fastcall(__closure *TOnHttpStatusText)(TObject *Sender,AnsiString Msg,int Index);
typedef void __fastcall(__closure *TOnError)(TObject *Sender,int errorcode);
//TNotifyEvent
//---------------------------------------------------------------------------
#define HTTPGET_BUFFER_MAX 1024
class THttpGetThread : public TThread
{
private:
int FIndex; // 在線程數(shù)組中的索引
int FRepeatCount; // 錯(cuò)誤時(shí)重復(fù)次數(shù)
char Buffer[HTTPGET_BUFFER_MAX+4];
TObject *FOwner;
AnsiString FURL;
AnsiString FOutFileName;
AnsiString FHostName; // 主機(jī)名
AnsiString FDownPath; // 下載文件的路徑和文件名
HINTERNET FhSession;
HINTERNET FhConnect;
HINTERNET FhRequest;
int iFileHandle;
int FFileSize;
DWORD dwStart; // 下載開始的位置
DWORD dwTotal; // 需要下載的字節(jié)數(shù)
// 屬性變量
DWORD FGetBytes; // 下載的總字節(jié)數(shù)
bool FSuccess; // 下載是否成功
bool FConnected; // 是否連接
bool FFromBreakpoint; // 從斷點(diǎn)開始下載
// 事件變量
TOnHttpNotify FOnAbort;
TOnError FOnError;
TOnHttpCompelete FOnComplete;
TOnHttpGetFileSize FOnGetFileSize;
TOnProgressEvent FOnProgress;
TOnHttpStatusText FOnStatusText;
// 內(nèi)部方法
void ParseURL(void);
void StartHttpGet(void);
void DoHttpGet(void);
void EndHttpGet(void); // 結(jié)束下載
void DoOnComplete(void);
void DoOnError(int errorcode);
void DoOnProgress(int Position);
void DoOnGetFileSize(int Size);
void DoOnStatusText(AnsiString Text);
DWORD OpenOutFile(void);
protected:
void __fastcall Execute();
public:
__fastcall THttpGetThread(TObject *Owner);
void __fastcall Stop(void) { EndHttpGet(); }
int __fastcall GetWebFileSize(void);
bool __fastcall SetFilePointer(void);
__published:
__property AnsiString URL = { read=FURL, write=FURL };
__property AnsiString OutFileName = { read=FOutFileName, write=FOutFileName};
__property bool Successed = { read=FSuccess};
__property bool Connected = { read=FConnected};
__property bool FromBreakpoint = { read=FFromBreakpoint, write=FFromBreakpoint};
__property int Index = { read=FIndex, write=FIndex};
__property DWORD StartPostion = { read=dwStart, write=dwStart};
__property DWORD GetBytes = { read=dwTotal, write=dwTotal};
__property TOnHttpCompelete OnComplete = { read=FOnComplete, write=FOnComplete };
__property TOnHttpNotify OnAbort = { read=FOnAbort, write=FOnAbort };
__property TOnError OnError = { read=FOnError, write=FOnError };
__property TOnHttpGetFileSize OnGetFileSize = { read=FOnGetFileSize, write=FOnGetFileSize };
__property TOnProgressEvent OnProgress = { read=FOnProgress, write=FOnProgress };
__property TOnHttpStatusText OnStatusText = { read=FOnStatusText, write=FOnStatusText };
};
//---------------------------------------------------------------------------
#endif
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -