Einzelnen Beitrag anzeigen

TriphunEM

Registriert seit: 8. Jan 2004
147 Beiträge
 
#1

Titel und URL anhand des Klassenames ermitteln?

  Alt 9. Feb 2006, 10:40
Hi,

ich möchte den Fenstertitel und die URL verschiedener Browser (in meinem Code IE,Firefox und Opera) ermitteln.

Das mit dem Fenstertitel ist überhaupt kein Problem, aber die URL bekomm ich nicht aus den Adressleisten des Firefox und Opera.
Bei IE klappt es, zu mal ich mit WinSpy auch den Klassennamen raus bekomme.

Nur bei Firefox und Opera scheint das alles in ein Handle gepackt zu sein.
Weiß jemand wie ich an den Text in der Adressleiste ran komme???

Der folgende Code soll alle Fenstertitel und URLs der geöffneten Browser anzeigen. Wie gesagt bei Firefox und Opera fehlt eben die URL.

Ich hoffe mir kann da jemand weiterhelfen????

Delphi-Quellcode:
procedure TMainForm.act_AddBookmarkExecute(Sender: TObject);
var
  hwnd, chwnd : THandle;
  p : array[0..256] of Char;
begin
  hwnd := FindWindow(nil, nil);
  GetClassName(hwnd, P, SizeOf(P));

  while hwnd <> 0 do begin
    hwnd := GetWindow(hwnd, GW_HWNDNEXT);
    GetClassName(hwnd, P, SizeOf(P));

    {****
    * Firefox
    ****}

    if string(P) = 'MozillaUIWindowClassthen begin
      // Fenstertitel holen
      GetWindowText(hwnd, P, 255);
      site_Desc := P;
      // Url holen
      chwnd := FindWindowEx(hwnd, 0, 'MozillaWindowClass', nil);
      SendMessage(chwnd, WM_GETTEXT, SizeOf(P), Integer(@P));
      site_Url := string(P);

      ShowMessage('Firefox : '+site_Desc+#13#10+site_Url);
    end;

    {****
    * Internet Explorer
    ****}

    if string(P) = 'IEFramethen begin
      // Fenstertitel holen
      GetWindowText(hwnd, P, 255);
      site_Desc := P;
      // Url holen
      chwnd := FindWindowEx(hwnd, 0, 'WorkerW', nil);
      chwnd := FindWindowEx(chwnd, 0, 'ReBarWindow32', nil);
      chwnd := FindWindowEx(chwnd, 0, 'ComboBoxEx32', nil);
      SendMessage(chwnd, WM_GETTEXT, SizeOf(P), Integer(@P));
      site_Url := string(P);

      ShowMessage('IE : '+site_Desc+#13#10+site_Url);
    end;

    {****
    * Opera
    ****}

    if string(P) = 'OpWindowthen begin
      // Fenstertitel holen
      GetWindowText(hwnd, P, 255);
      site_Desc := P;
      // Url holen
      chwnd := FindWindowEx(hwnd, 0, 'OperaWindowClass', nil);
      SendMessage(chwnd, WM_GETTEXT, SizeOf(P), Integer(@P));
      site_Url := string(P);

      ShowMessage('Opera : '+site_Desc+#13#10+site_Url);
    end;

  end;
end;
Gibt es vielleicht ne möglichkeit alle unterklassen einer klasse angezeigt zu bekommen?

MfG und Thx, Frank
  Mit Zitat antworten Zitat