Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Keystroke "Tab" an TWebBrowser senden.. (https://www.delphipraxis.net/24845-keystroke-tab-twebbrowser-senden.html)

emploi 27. Jun 2004 13:25


Keystroke "Tab" an TWebBrowser senden..
 
Hi guys!

Hab da nen kleines Problem. Also ich hab in mein Programm einen WebBrowser eingebaut. Wenn
man beim laufenden Programm die Tab Taste innerhalb des Browsers drückt sieht man ja, dass
er von Link zu Link (bzw Button / Eingabefeld) springt. Ich würde das gerne Simulieren.
Da ich nicht will, dass das Programm im Vordergrund sein muss kann man ja mit dem WinAPI
keybd_event() nicht arbeiten. Ich hab es deswegen mit dem Handle vom Programm versucht und auch
mit dem Handle für den Webbrowser. Wenn ich ihm aber ein "Tab" sende passiert einfach nix.
Gibt keinen Fehler oder so aber der Tab / Sprung zum nächsten Objekt passiert einfach nicht...
Weiss nicht ob das dann überhaupt geht :? . Vielleicht könnt ihr mir ja helfen!!

[EDIT]

Oi Oi, dass sieht bei der Resonanz nicht gut aus :(. Falls jemand das mal selber ausprobieren will
hier sind die verschiedenen Arten wie man einen Tastendruck simulieren kann. Ich habe es mit
"3. With keybd_event API" probiert.

[/EDIT]

MFG emploi

emploi 28. Jun 2004 16:39

Re: Keystroke "Tab" an TWebBrowser senden..
 
Tio so kanns gehen. Ansatz war ja ok, und dennoch falsch...
Habs jetzt selber hinbekommen!

Für alle die es interessieren sollte:

Input Button Click:
Code:
procedure TForm1.Button1Click(Sender: TObject);
var
  ovElements: OleVariant;
  i,j: Integer;
begin
  for j := 0 to (WebBrowser1.OleObject.Document.forms.Length - 1) do
  begin
      ovElements := WebBrowser1.OleObject.Document.forms.item(j).elements;
      for i := 0 to (ovElements.Length - 1) do
          if ((ovElements.item(i).tagName = 'INPUT') and (ovElements.item(i).type = 'submit') and (ovElements.item(i).Value = 'Login2')) then
              ovElements.item(i).Click;
  end;
end;
Link Click:
Code:
procedure TForm1.Button2Click(Sender: TObject);
var i:integer;
    ovLinks: OleVariant;
begin
      ovLinks := Webbrowser1.OleObject.Document.links;
      for i := 0 to (ovLinks.Length - 1) do
          IF ovLinks.Item(i).InnerText = 'Link 4' THEN
              ovLinks.Item(i).Click;
end;
MFG emploi


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:40 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz