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



BeitragVerfasst: Mi 08.02.06 16:15 
Hallo,

ich hoffe mir kann jemand ein Anstupps geben wie ich bei folgenden Problem vorgehen kann:

Auf dem Desktop sind sagen wir mal 10 Browserfenster geöffnet, 4x Firefox, 4x IE und 2x Opera.

Ich will jetzt, wenn ich in meinem Programm auf ein Button klick, die URL des Browserfensters auslesen was am weitesten vorne ist.

Mit GetForegroundWindow wird es bestimmt nicht gehen weil ja mein Programm ganz vorne ist, außerdem interessieren mich ja nur die Browser.

Gibt es eine möglichkeit die Fenster an hand der Klassennamen zu finden und dann herauszufinden welches am weitesten vorn ist???

Danke für eure Hilfe...

MfG

Frank
digi_c
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1905

W98, XP
D7 PE, Lazarus, WinAVR
BeitragVerfasst: Mi 08.02.06 16:46 
Getforegroundwindow würde ja evtl. dein eigenes Programm finden.

Du musst alle Fenster durchgehen und die ausfiltern die keine Browser sind. von denen nimmst du das mit der höchsten Z-Order.
FrankBurian Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 57



BeitragVerfasst: Mi 08.02.06 17:59 
hi, habs so hinbekommen...
so bekomm ich die der reihe nach muss halt nach dem ersten gefunden abbrechen
ausblenden 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:
arr_BrowserClasses  : array[1..2of string = ('MozillaUIWindowClass','IEFrame');
...
var
  hwnd, chwnd : THandle;
  p : array[0..256of Char;
begin
  hwnd := FindWindow(nilnil);
  GetClassName(hwnd, P, SizeOf(P));
  while hwnd <> 0 do begin
    hwnd := GetWindow(hwnd, GW_HWNDNEXT);
    GetClassName(hwnd, P, SizeOf(P));
    // Firefox 1.0 - 1.5
    if string(P) = arr_BrowserClasses[1then begin
      // Fenstertitel holen
      GetWindowText(hwnd, P, 255);
      ShowMessage(P);
    end;
    // IE 6.0
    if string(P) = arr_BrowserClasses[2then begin
      // Fenstertitel holen
      GetWindowText(hwnd, P, 255);
      ShowMessage(P);
    end;

  end;


aber mein problem ist, ich hab zwar jetzt die fenstertitel, aber wie komm ich an die URL???

Wenn ich die Klasse der Adressleisten weiß, wie kann ich an die ran kommen????

habs mit findwindowex versucht, aber ohne erfolg!

????

wenn ich
digi_c
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1905

W98, XP
D7 PE, Lazarus, WinAVR
BeitragVerfasst: Do 09.02.06 09:06 
Da müsstest du mal mit dem FensterTool von Assarbard schauen welches GUI Element die jeweiligen Browser haben und dessen Text auslesen. Assarbard hat IMHO auch sehr gute Tutorials zu sowas....

www.assarbad.net