![]() |
Re: Tastaturdruck Emulieren
hoi luckie,
ne, vieleicht habe ich mich eben falsch ausgedrückt, es soll ein tastaturdruck simuliert werden,...sagen wir einfach mal das ein <A> in die "luft" geschrieben wird |
Re: Tastaturdruck Emulieren
Du kannst nichts in die "Luft" schreiben. Irgendwo muß es ja landen, sonst kannst du dir das gleich sparen. BTW was ist für dich Luft?
|
Re: Tastaturdruck Emulieren
sagen wir mal ich schreibe einfach ein "A"(als beispiel) in einem IE Fenster, dawürde ja nichts passieren, da ja kein schreibfeld etc da ist, aber das Programm das ich habe loggt den geschriebenen buchstaben (also als tastendruck). Ich möchte das mein programm, wenn ich button1 anklicke, ein "A" schreibt, ein Ziel gibt es eigentlich nicht, nur das andere Programm muss diesen registrieren
|
Re: Tastaturdruck Emulieren
Moin Silent,
wenn Du nicht das Handle hast, an das Du die Taste schicken willst, musst Du es mit keybd_event machen. Dabei stehst Du mit Deiner Umsetzung allerdings vor einem Problem: keybd_event wirkt sich auf das Fenster aus, das den Tastaturfokus hat, was automatisch Deines ist, wenn Du dabei einen Button anklickst. Nimm mal einen Button und einen Timer und mach mal das Notepad auf.
Delphi-Quellcode:
Als erstes startest Du Dein Programm mal mit Timer1.Enabled := false, wechselst auf das Notepad, und klickst dann den Button in Deinem Formular an. Im Notepad rührt sich nichts.
procedure TForm1.Button1Click(Sender: TObject);
begin keybd_event(VK_SHIFT,0,0,0); keybd_event(ord('A'),0,0,0); keybd_event(ord('A'),0,KEYEVENTF_KEYUP,0); keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0); end; procedure TForm1.Timer1Timer(Sender: TObject); begin Button1Click(nil); end; Jetzt noch einmal das gleiche mit aktiviertem Timer. Es werden im Sekundenabstand A in das Notepad geschrieben. Im ersten Fall hat der Button den Tastaturfokus, und erhält das A, darum klappt es nicht. |
Re: Tastaturdruck Emulieren
hoi Christian,
danke für den Code, der funzt einwandfrei :) Das Programm loggt den zwar nicht (muss wohl irgendwie ein schutz sein :(). Aber wenigstens weiss ich wie es überhaupt geht keys zu senden 8) |
Re: Tastaturdruck Emulieren
nochmal vielleicht zur Verdeutlichung, da mir der Christian in dme anderem Thread geholfen hatte
SendMessage(Handle,WM_KEYDOWN,VK_DOWN,0); Handle : Handle zur Komponente/Fenster in der Tastendruck simuliert werden soll WM_KEYDOWN: bedeutet simuliere einen keydown-Ereignis (bei WM_KEYUP wird halt ein keyup-Ereignis simuliert) VK_DOWN: <-- der Tastendruck der ausgelöst werden soll (VK_DOWN = Richtungstaste nach oben, hier kann man alle möglichen virtuellen Tasten angeben, also auch z.B. VK_RETURN, VK_ESCAPE...usw.) so dass sollte jetzt zum Verständnis für jeden reichen... ... hat ja auch für mich gereicht :lol: |
Re: Tastaturdruck Emulieren
Keybd_Event(VK_RETURN, 0, 0, 0); //key down
Keybd_Event(VK_RETURN, 0, KEYEVENTF_KEYUP, 0); //key up |
Re: Tastaturdruck Emulieren
hoi,
ich habe immernoch das problem...also der simulierte tastendruck funktioniert zwar, aber das prog das diese keys loggt, loggt diesen nicht mit bzw zählt ihn nicht..gibt es nich noch ne andere möglichkeit? also mit :
Delphi-Quellcode:
loggt das prog (nicht meins) diesen key nicht
Keybd_Event(VK_RETURN, 0, 0, 0); //key down
Keybd_Event(VK_RETURN, 0, KEYEVENTF_KEYUP, 0); //key up |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:21 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 by Thomas Breitkreuz