![]() |
Re: Internetexplorer Seite ändern und absenden
ähhhm... ich hätte da gern mal ein Problem:
Hmm wenn ich den Code in eine Delphi Anwendung stecke funktioniert er, soblad ich ihn in ein DLL schreibe funktioniert es nicht mehr, woran kann das liegen? Kann ich aus DLLs keine funktionen aus anderen DLLs aufrufen?? Wie könnte ich das Problem lösen? |
Re: Internetexplorer Seite ändern und absenden
So, ich konnte den Fehler auf folgende Codezeile eingrenzen:
Delphi-Quellcode:
function GetIEFromHWND(WHandle: HWND; var IE: IWebbrowser2): HRESULT;
var hInst: HWND; lRes: Cardinal; MSG: Integer; pDoc: IHTMLDocument2; 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, IHTMLDocument2, 0, pDoc); if Result = S_OK then (pDoc.parentWindow as IServiceprovider).QueryService(IWebbrowserApp, IWebbrowser2, IE); //[b]HIER IST DER FEHLER[/b] finally FreeLibrary(hInst); end; end; end; Der Fehler tritt aber immer nur auf wenn ich den Code in eine DLL packe und dann ausführe, der Fehler tritt nicht auf wenn ich den Code direkt aus dem Programm aus ausführe. |
Re: Internetexplorer Seite ändern und absenden
Ohne das eigentliche Geschehen stören zu wollen, aber das Handle mit dem Namen "Internet Explorer_Server" ist mei bir der Desktop.
Das verstehe ich nicht!? :gruebel: :wiejetzt: |
Re: Internetexplorer Seite ändern und absenden
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 |
Re: Internetexplorer Seite ändern und absenden
Genau, so ist das. Kannst dir merken: Ist bei ME auch noch so.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:34 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz