Entwickler-Ecke

Windows API - Handle auslesen


Tristan - Mo 12.12.05 23:10
Titel: Handle auslesen
Nabend,

ist es möglich das Handle eines IE oder Mozilla Browserfensters mit Hilfe der angezeigten URL auszulesen und anschließend eine andere HTML Seite in demselben Fenster anzuzeigen?

Bsp: Anhand der URL http://www.google.de soll das jeweilige Fensterhandle ermittelt werden um dieses anschließend mit Sendmessage(...SC_CLOSE) zu schließen bzw. eine andere Seite anzuzeigen.


Tristan


Tristan - Di 13.12.05 18:25

Mit dem folgenden Code ist es möglich alle Fenster des Internetexplorers aufzulisten bzw. nach deren Handle zu suchen. Wenn ich aber versuche ein gefundenes Fenster mit sendmessage zu schließen so erscheint der Fehler "Zu wenig Arbeitsspeicher".



Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
procedure GetIEWindows(lb: Tstrings; URl:string);
  function EnumWindowsProc (Wnd: HWND; lb: Tstrings): BOOL; stdcall;
  var
    theClassname: array [0..128of Char;
    caption: Array [0..128of Char;
    IE: IWebbrowser2;
    WndChild: HWND;
  begin

    Result := True;
    Windows.GetClassname( Wnd, theClassname, Sizeof( theclassname ));
    if theClassname='IEFrame' then
    begin
      WndChild := FindWindowEX(Wnd, 0'Shell DocObject View'nil);
      if WndChild <> 0 then
      begin
        WndChild := FindWindowEX(WndChild, 0'Internet Explorer_Server'nil);
        if WndChild <> 0 then
        begin
          if GetIEFromHWND(WndChild, IE)=S_OK then
            if IE<>nil then
             Begin
             lb.Add(IE.LocationURL); //URL Auslesen
             If Pos(URL,IE.LocationURL)>0 then SendMessage(WND, WM_SYSCOMMAND, SC_CLOSE, 0);
             End;
        end;
      end;
    end;
  end;
begin
  lb.Clear;
  EnumWindows(@EnumWindowsProc, integer(lb));
end;


Gibt es vielleicht eine einfachere Möglichkeit das Fenster eines IE zu identifizieren und zu schließen?

Gruss
Tristan

Moderiert von user profile iconGausi: B- durch Highlight-Tags ersetzt