Hmm, war das nicht bei Windows 98 so das der Desktophintergrund irgendwie was mit dem IE zu tun hatte? Das sah doch immer so aus wenn der PC abesoffen war und man den Bildschirmhintergrund wiederherstellen wollte.
Hmm naja ich hab jetzt mal drübernach gedacht ich geh über die Methode einen riesen Umweg.
Ich will ja nur die Seite verändern, dazu brauch ich gar keinen IWebbrowser2. Ich bekomme ja schon ein IHTMLDocument2 zurückgeliefert mit dem ich den Inhalt ändern kann.
Mein jetzt funzender Code:
Delphi-Quellcode:
uses MSHTML_TLB, SHDocVw_TLB,
ActiveX;
type
TObjectFromLResult =
function(LRESULT: lResult;
const IID: TIID; WPARAM: wParam;
out pObject): HRESULT;
stdcall;
function GetHTMLFromHWND(WHandle: HWND;
var html: IHTMLDocument3): HRESULT;
var
hInst: HWND;
lRes: Cardinal;
MSG: Integer;
ObjectFromLresult: TObjectFromLresult;
begin
hInst := LoadLibrary('
Oleacc.dll');
@ObjectFromLresult := GetProcAddress(hInst, '
ObjectFromLresult');
if @ObjectFromLresult <>
nil then begin
try
MSG := RegisterWindowMessage('
WM_HTML_GETOBJECT');
SendMessageTimeOut(WHandle, MSG, 0, 0, SMTO_ABORTIFHUNG, 1000, lRes);
Result := ObjectFromLresult(lRes, IHTMLDocument3, 0,
html);
finally
FreeLibrary(hInst);
end;
end;
end;
Hab jetzt IHTMLDocument3 genommen weil es dort mehr Editiermöglichekeiten gibt als bei IHTMLDocument2