AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Internetexplorer Seite ändern und absenden
Thema durchsuchen
Ansicht
Themen-Optionen

Internetexplorer Seite ändern und absenden

Ein Thema von Eichhoernchen · begonnen am 11. Mär 2006 · letzter Beitrag vom 14. Mär 2006
Antwort Antwort
Seite 2 von 2     12   
Eichhoernchen

Registriert seit: 22. Apr 2004
Ort: Hagen
322 Beiträge
 
Turbo Delphi für Win32
 
#11

Re: Internetexplorer Seite ändern und absenden

  Alt 13. Mär 2006, 21:58
ä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?
Jan
  Mit Zitat antworten Zitat
Eichhoernchen

Registriert seit: 22. Apr 2004
Ort: Hagen
322 Beiträge
 
Turbo Delphi für Win32
 
#12

Re: Internetexplorer Seite ändern und absenden

  Alt 14. Mär 2006, 15:20
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.
Jan
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#13

Re: Internetexplorer Seite ändern und absenden

  Alt 14. Mär 2006, 16:17
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!?
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
Eichhoernchen

Registriert seit: 22. Apr 2004
Ort: Hagen
322 Beiträge
 
Turbo Delphi für Win32
 
#14

Re: Internetexplorer Seite ändern und absenden

  Alt 14. Mär 2006, 16:52
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
Jan
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#15

Re: Internetexplorer Seite ändern und absenden

  Alt 14. Mär 2006, 17:05
Genau, so ist das. Kannst dir merken: Ist bei ME auch noch so.
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz