Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Fragen zu WebBrowser.Handle?


jackie05 - Mi 07.04.10 01:48
Titel: Fragen zu WebBrowser.Handle?
Hallo,
ich habe in meinem Programm mehrere WebBrowser, die ich beim starten des Programms erzeuge und die Handle des einzelnen WebBrowser Speicher ich gleich mit.

Jetzt möchte ich z.B. den WebBrowser suchen mit folgende Handle: 1115926

ich hab das so versucht:

Delphi-Quelltext
1:
wndChild := FindWindowEx(wndChild, 0'Shell Embedding', PChar(WebHandle[liste.ItemIndex]));                    

das geht so leider nicht.
Wie könnte ich das ambesten lösen?

Ich bedanke mich schonmal im Voraus.

MfG

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt


Delete - Mi 07.04.10 02:41

Warum nimmst du nicht den Namen der Komponente zum identifizieren?


jackie05 - Mi 07.04.10 02:55

Danke Dir.

Wie kann ich das ambesten machen?

Also ich weise jede WebBrowser Komponent einen Namen zu und wie identifizier ich jede einzelne WebBrowser Komponent über ihren Namen?

MfG


Delete - Mi 07.04.10 02:57

Wie verwaltest du denn die Komponenten? In einem Array? In einer Objektliste? Eventuell solltest du dir mal FindComponente angucken.


jackie05 - Mi 07.04.10 03:08

In einem Array:


Delphi-Quelltext
1:
2:
3:
4:
var
  Form1: TForm1;
  wb: array of TWebBrowser;
  WebHandle: array of HWND;


Wenn ich z.B. ein beliebige WebBrowser suchen möchte, dann wird immer das zuletzt erstellte WebBrowser angesprochen, deshalb möchte ich über WebBrowser.Handle oder WebBrowser.Name diesen Komponent suchen.


Andreas L. - Mi 07.04.10 10:19

Du kannst durch das Array iterieren um an die einzelnen WebBrowser-Instanzen zu kommen:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
var
  i: Integer;
begin
  for i := Low(wb) to High(wb) do
  begin
    wb[i].Navigate('http://www.delphiforum.de');
    //mehr Code...
  end;
end;


Xion - Mi 07.04.10 10:22

insbesondere kannst du dann mit


Delphi-Quelltext
1:
if wb[i].Handle=MeinGesuchtesHandle then                    


den entsprechenden raussuchen. Allerdings fände ich es sinnvoller, statt dem handle gleich die id (i) zu verwenden :nixweiss:


jackie05 - Mi 07.04.10 23:15

Danke euch.

Das ist mir klar, aber wie kann ich dann z.B. eine Message mit PostMessage an das WebBrowser senden anhand der Handle?
Weil wenn ich eine Message dann senden möchte, dann wird trotzdem die Message an das zuletzt erstellte WebBrowser gesendet.

Danke schonmal.

MfG