{******************************************************************} { InetThrd.pas } { } { Author : A.Nasir Senturk } { Home Page : http://www.shenturk.com } { Email : shenturk@gmail.com } { } { Date : 28.11.2006 } { } { Sizden iki şey rica edicem: } { 1. Lutfen bu baslik kismini kaldirmayiniz. } { 2. Mumkunse bagis yapiniz. } { *****************************************************************} unit InetThrd; interface uses Windows, SysUtils, Classes, WinInet, InetUtil; type { TInetThread } TInetThread = class(TThread) private { Private declarations } FRequest: TInetRequest; FResponse: TInetResponse; FHandle: THandle; FMessage: Cardinal; function GetResponseText: string; protected procedure Execute; override; public constructor Create(AHandle: THandle; AMessage: Cardinal); destructor Destroy; override; property Request: TInetRequest read FRequest; property Response: TInetResponse read FResponse; property ResponseText: string read GetResponseText; property Terminated; end; implementation { Important: Methods and properties of objects in visual components can only be used in a method called using Synchronize, for example, Synchronize(UpdateCaption); and UpdateCaption could look like, procedure TInetThread.UpdateCaption; begin Form1.Caption := 'Updated in a thread'; end; } { TInetThread } constructor TInetThread.Create(AHandle: THandle; AMessage: Cardinal); begin inherited Create(True); FHandle := AHandle; FMessage := AMessage; FRequest := TInetRequest.Create; FResponse := FRequest.Response; end; destructor TInetThread.Destroy; begin FRequest.Free; inherited Destroy; end; procedure TInetThread.Execute; var Result: Integer; begin if not Assigned(Self) then Exit; Result := FRequest.SendRequest; if IsWindow(FHandle) then PostMessage(FHandle, FMessage, 0, Result); end; function TInetThread.GetResponseText: string; begin Result := FResponse.AsString; end; end.