Autor Beitrag
FrankBurian
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 57



BeitragVerfasst: Do 09.02.06 10:43 
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????

ausblenden volle Höhe 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:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
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) = 'MozillaUIWindowClass' then 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) = 'IEFrame' then 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) = 'OpWindow' then 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
FrankBurian Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 57



BeitragVerfasst: Fr 10.02.06 18:26 
keiner eine idee?