![]() |
Tastaturereignis an Website übermitteln
Auf der Website
![]() Da man die Maus so viel präziser steuern kann, möchte ich gerne ein Delphiprogramm schreiben, um die Maus- und Tastaturereignisse auszulösen. Das Laden der Website im Internetexplorer sowie das Auslösen der Mausereignisse funktionieren auch schon. Bei den Tastaturereignissen habe ich bereits verschiedene Dinge ausprobiert (SendMessage, PostMessage, KeyBd_Event), aber nichts hat funktioniert. Hier ein "Codeschnippsel" der fehlgeschlagenen Versuche:
Delphi-Quellcode:
Hat jemand eine Idee, woran es liegen könnte, dass das Tastaturereignis nicht übermittelt wird. Merkwürdig ist allerdings, dass das Minimieren des Browserfensters mit SendMessage funktioniert hat.
hExplorer := FindWindow('IEFrame', nil);
if hExplorer <> 0 then //SendMessage(hExplorer, WM_SYSCOMMAND, SC_MINIMIZE, 0); PostMessage(hExplorer, WM_CHAR, ord('c'), 0); Sleep(400); KeyBd_Event(Ord('C'), MapvirtualKey(Ord('C'), 0), 0, 0); Vielen Dank für jede Hilfe! Und hier der Code, der soweit bereits funktioniert. Das Close-Ereignis ist aber noch nicht optimal, da es eine Fehlermeldung gibt, falls ein anderes Browserfenster beim Schließen geöffnet ist als die betreffende Website.
Delphi-Quellcode:
unit UMain;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComObj, StdCtrls, Buttons; type TForm1 = class(TForm) SpeedButton1: TSpeedButton; SpeedButton2: TSpeedButton; procedure Button1Click(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; IEApp: OLEVariant; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var Nr: Integer; begin IEApp := CreateOLEObject('InternetExplorer.Application'); IEApp.Visible := True; IEApp.Top := 0; IEApp.Left := 0; IEApp.Width := Screen.Width; IEApp.Height := Screen.Height; IEApp.Navigate('http://thisissand.com/'); Sleep(5000); mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0); for Nr := 100 downto 0 do begin SetCursorPos(450 + Nr, 150); Sleep(500); end; mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0); end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); var WinHandle: HWnd; begin WinHandle := FindWindow('IEFrame', nil); if (WinHandle <> 0) then begin IEApp.Quit; end; end; end. |
Re: Tastaturereignis an Website übermitteln
Hallo, simuliere einen Character so:
Delphi-Quellcode:
procedure Simulate_Key(Key: Char);
begin keybd_event(Ord(Key),MapVirtualKey(Ord(Key), 0), 0, 0); keybd_event(Ord(Key),MapVirtualKey(Ord(Key), 0), KEYEVENTF_KEYUP, 0); end; procedure Simulate_C; begin Simulate_Key('C'); end; |
Re: Tastaturereignis an Website übermitteln
Vielen Dank!
Es hat sofort funktioniert :-D . Jetzt kann ich damit "weiterbasteln". Falls daraus mal ein brauchbares Progrämmchen wird, werde ich es hier posten, falls jemand auch Interesse daran hat. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz