![]() |
Tastendruck simulieren in anderem Programm
Hallo,
bitte zerfleischt mich nicht. Ich sage gleich am Anfang, ich habe Windos Vista, und kann deshalb nicht auf die Delphie Hilfe zurückgreifen, was ich sehr doof finde -,- Naja, ich suche Hilfe bei folgenden Problemen und möchte wissen wie ich sie lösen kann: - ich möchte, dass eine Taste (Leertaste) über einen gewissen zeitraum in einem anderen Programm gehalten wird. - ich möchte, dass eine Taste in einem anderen Programm gedrückt wird (und natürlich wieder losgelassen) normaler einmaliger druck). - ich möchte, dasseine Tastenkombination (Strg-H) in einem andere Programm gedrückt wird. (- die Tastendrücke sollen nur in dem einen andern Programm erfolgen.) Ja, also bitte bitte deutlich erklären, bin ein ziemlicher Anfänger, beiße mich aber durch ;) Hab schon gesucht und einige Themen gefunden. Nur leider wiedersprechen sich die meisten und in den restlichen wird es so kanpp erklärt, dass ich es nicht verstehen. Ich möchte nciht einfach einen Code kopieren, sonden es ansatzweise verstehen! Also wenn jemand ein Tutorial schreiben könnte, oder mir es hier detaliert erklären könnte fände ich das Super !!! Danke schonmal fürs durchlesen =) MFG CreekMary |
Re: Tastendruck simulieren in anderem Programm
Hallo
Grundsätzlich hast du zwei Möglichkeiten zum Simulieren von Tasten. 1) Keybd_event / SendInput 2) SendMessage / PostMessage Bei (1) muss die Anwendung im Vordergrund sein. Bei (2) funktioniert das Senden auch dann, wenn die Anwendung minimiert ist. Du brauchst jedoch ein Fenster Handle. Dieses findest du mit der FindWindow API. Jedoch wird das Senden von Strg + ... nicht oder nicht zuverlässig funktionieren. |
Re: Tastendruck simulieren in anderem Programm
könnte mir vllt jemand ein allgemeines Beispiel Source schreiben? wäre net
|
Re: Tastendruck simulieren in anderem Programm
Zitat:
Delphi-Quellcode:
keybd_event( VK_SPACE, MapVirtualKey( VK_SPACE,0), 0, 0);
Sleep(1000); // Pause keybd_event( VK_SPACE, MapVirtualKey( VK_SPACE,0), KEYEVENTF_KEYUP, 0); Zitat:
Siehe :arrow: ![]() |
Re: Tastendruck simulieren in anderem Programm
Hab jetzt folgenden Code:
Delphi-Quellcode:
hab nun mit dem neuen WinSpy folgendes aus der Anwendung herausgelesen:
procedure TForm1.Button1Click(Sender: TObject);
var wnd: HWND; begin wnd := FindWindow('*', nil); if wnd <> 0 then begin wnd := FindWindowEx(wnd, 0, '*2', nil); PostMessage(wnd, WM_KEYDOWN, VK_NUMPAD6, 0); end; end; ![]() Welche Daten muss ich jetzt bei * und bei *2 einsetzen, dass die NumPadtaste 6 im Spiel gedrückt wird? Vielen Dank |
Re: Tastendruck simulieren in anderem Programm
bei dem ersten stern musst du das hauptfenster eintragen, also den fenster namen, bei dem 2 stern, musst du den fensternamen des untergeordneten fensters eingeben, zb ein edit, beide namen kannst du mit dem winspy ermitteln..
|
Re: Tastendruck simulieren in anderem Programm
Hallo,
Den FindWindow() Code kannst du von WinSpy automatisch erzeugen lassen. Menü Tools | Code Generator... |
Re: Tastendruck simulieren in anderem Programm
Hallo
Habe jetzt noch 2 Probleme:
Delphi-Quellcode:
1. Wie finde ich mit WinSpy das hier heraus: wndMain := FindWindowEx(wndMain, 0, 'Edit', nil);
begin
wndMain := FindWindow('Notepad','Neues Textdokument.txt - Editor'); if wndMain <> 0 then begin wndMain := FindWindowEx(wndMain, 0, 'Edit', nil); PostMessage(wndMain, WM_KEYDOWN, VK_NUMPAD6, 0); end; end; 2. WinSpy klappt bei mir hervorragen bei Word, Editor, Exel und so, aber bei einem PC Spiel zB nicht. Gibt es eine Möglichkeit das noch hinzubekommen, oder kann man die 2 benötigten Angaben noch anderswo herbekommen? 3. Wie mach ich das, dass ununterbrochen Numpad6 gesendet wird, bis ich dies mit einem ButtonClick stope? Was muss ich dazu bei der Zahl hinter VK_Numpad6 eingeben? Dank sconmal und MFG |
Re: Tastendruck simulieren in anderem Programm
zu 3.
Delphi-Quellcode:
bei onClick dieses Butoons musst du isRunning auf false setzen, vor der schleife eben isRunning auf true, und GANZ wichtig, voher deklarieren!while isRunning do begin Application.ProcessMessages; PostMessage(wndMain, WM_KEYDOWN, VK_NUMPAD6, 0); end; mfg |
Re: Tastendruck simulieren in anderem Programm
ok danke Problem 3 gelöst. =)
1+2 bestehen immer noch, will das ganze ja nicht im Notepad laufen lassen sondern im Spiel^^ Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:43 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