program Project1;
//mit Konsole
{$APPTYPE CONSOLE}
uses
activeX;
//Deklaration des Interfaces für den Zugriff auf XMLHttp-Klasse vom Internet Explorer (von Delphi generieren lassen)
//Ich habe mal die von mir benötigten Funktionen von safecall auf stdcall umgewandelt.
type
IXMLHTTPRequest =
interface(IDispatch)
['
{ED8C108D-4349-11D2-91A4-00C04F7969E8}']
function open(
const bstrMethod: WideString;
const bstrUrl: WideString; varAsync: OleVariant;
bstrUser: OleVariant; bstrPassword: OleVariant):HResult;
stdcall;
procedure setRequestHeader(
const bstrHeader: WideString;
const bstrValue: WideString);
safecall;
function getResponseHeader(
const bstrHeader: WideString): WideString;
safecall;
function getAllResponseHeaders: WideString;
safecall;
function send(varBody: OleVariant):Hresult;
stdcall;
procedure abort;
safecall;
function Get_status: Integer;
safecall;
function Get_statusText: WideString;
safecall;
function Get_responseXML: IDispatch;
safecall;
function Get_responseText: WideString;
safecall;
function Get_responseBody: OleVariant;
safecall;
function Get_responseStream: OleVariant;
safecall;
function Get_readyState: Integer;
safecall;
procedure Set_onreadystatechange(
const Param1: IDispatch);
safecall;
property status: Integer
read Get_status;
property statusText: WideString
read Get_statusText;
property responseXML: IDispatch
read Get_responseXML;
property responseText: WideString
read Get_responseText;
property responseBody: OleVariant
read Get_responseBody;
property responseStream: OleVariant
read Get_responseStream;
property readyState: Integer
read Get_readyState;
property onreadystatechange: IDispatch
write Set_onreadystatechange;
end;
//name der Klasse als Ressource (dadurch kann man vom IE auch auf Opera oder auf eins der restlichen UnterschichtBrowser umsteigen ;) )
resourcestring
ClassName='
Msxml2.XMLHTTP';
//hier Ersetzen, was mit der heruntergeladenen Seite passieren soll.
procedure DoSomething(text:Widestring);
begin
writeln(text);
readln;
end;
//Herunterladen mittels XMLHttpRequest
procedure Run;
var XMLHttpRequest:IXMLHttpRequest;
ClassID:TGUID;
begin
if CLSIDFromProgID(PWideChar(WideString(LoadResString(@ClassName))),ClassID) <> s_ok
then
writeln('
Fehler bei CLSIDFromProgID')
else
begin
if CoCreateInstance(ClassID,
nil,CLSCTX_INPROC_SERVER,IXMLHttpRequest,XMLhttpRequest) <> s_ok
then
writeln('
Fehler bei CoCreateInstance')
else
begin
if XMLHttpRequest.open('
Get','
http://www.delphipraxis.net/',false,'
','
')<>s_ok
then
writeln('
Fehler bei XMLHttpRequest.open')
else
begin
if XMLHttpRequest.send(0)<>s_ok
then
writeln('
Fehler bei XMLHttpRequest.send')
else
begin
if XMLHttpRequest.readyState=4
then
DoSomething(XMLHttpRequest.responseText)
else
writeln('
Fehler beim Laden des Dokuments');
end;
end;
end;
end;
end;
//Programmstart
begin
coinitialize(
nil);
Run;
couninitialize;
end.