![]() |
Tastatur Eingabe emulieren
Hallo,
vor folgendem Problem stehe ich. Ich möchte eine eine Taste z.b. " q " über ein Gamepad als Tastatur Eingabe emulieren. Das ganze wollte ich mit dem programm Xpadder realisieren. Funktioniert sogar. Jedoch funktioniert es nicht im Spiel " You dont Know Jack "... Ich vermute das das spiel eine art Key Hook benutzt und die Tasten abfängt. Vielleicht hat jemand eine Idee wie ich mit Delphi vor diesen Key Hook komme bzw erfahrungen ? Irgendwie muss es ja gehen :/ danke im vorraus für jeden tip mfg |
AW: Tastatur Eingabe emulieren
Hallo R600,
ich kenne das Spiel nicht, aber vielleicht kann man ja die Tastatureingabe "faken", etwa so:
Delphi-Quellcode:
Beste Grüße :)
procedure TForm1.Button1Click(Sender: TObject);
var hNotepad: HWND; begin hNotepad := FindWindow('notepad', nil); if hNotepad <> 0 then begin SetForegroundWindow(hNotepad); Sleep(250); // Drop down &Bearbeiten (Edit) menu in the "german" Notepad keybd_event(VK_MENU, MapVirtualKey(VK_MENU, 0), 0, 0); keybd_event(Ord('B'), MapVirtualKey(Ord('B'), 0), 0, 0); keybd_event(Ord('B'), MapVirtualKey(Ord('B'), 0), KEYEVENTF_KEYUP, 0); keybd_event(VK_MENU, MapVirtualKey(VK_MENU, 0), KEYEVENTF_KEYUP, 0); ... |
AW: Tastatur Eingabe emulieren
Hallo madtom,
Danke für deine antwort und SORRY das ich so spät antworte. Leider war ich in der Klausurenphase und hab mich gestern in der Nacht wieder an mein Projekt gesetzt und dein Post gesehen. Ich hab jetzt mal mit "uispy" das Spiel untersucht. Es existiert ein Fenster das so heisst wie das Spiel, und es hat eine HandleID: ClassName: "ThunderRT6FormDC" ControlType: "ControlType.Window" Da drin befindet sich ein Bereich mit einem Adobe Flash Objekt auch mit einer HandleID: ClassName: "MacromediaFlashPlayerActiveX" ControlType: "ControlType.Pane" Jedoch haben beide kein Keyboard Focus laut spy... Versucht habe ich es mit : keybd_event(VK_MENU, MapVirtualKey(VK_MENU, 0), 0, 0); und SendMessage(fHandle, WM_CHAR, Ord(fText[i]), 0); Es funktioniert aber trotzdem nicht :/ Mit dem Notepad Editor z.b. funktioniert es ohne probleme. Es muss doch irgendwie eine möglichkeit geben das ich dieses Fenster richtig ansteuern kann. Mit Programmen wie "Xpadder" oder autoklick funktioniert es leider auch nicht. Ich vermute mal weil es sich um ein primitives Flash handelt. Aber grad dann müßte es doch einfach anzusprechen sein. Ich hab grad mal 3 Stunden geschlafen weil es mich irre macht :) und ich weiterhin nach einer lösung suche. Vielleicht hat noch jemand ein guten tip ? mfg r600 |
AW: Tastatur Eingabe emulieren
Ich poste mal die Properties komplett vom uispy :
Vielleicht sieht jemand was, was ich nicht sehe. Aufgefallen ist mir das das Fenster ein Control-Pattern besitzt:
Code:
Der Flash Bereich besitzt den nicht. Ich weiß aber nicht ob
WindowInteractionState: "ReadyForUserInteraction"
das relevant ist oder nicht :/ Den egal wohin ich den Tastendrucksende. Er kommt anscheind nicht an :/ mfg Vom "Fenster" "-=You Don't Know Jack 4=-"
Code:
AutomationElement
General Accessibility AccessKey: "" AcceleratorKey: "" IsKeyboardFocusable: "False" LabeledBy: "(null)" HelpText: "" State IsEnabled: "True" HasKeyboardFocus: "False" Identification ClassName: "ThunderRT6FormDC" ControlType: "ControlType.Window" Culture: "(null)" AutomationId: "" LocalizedControlType: "Fenster" Name: "-=You Don't Know Jack 4=-" ProcessId: "284 (_YDKJ Germany)" RuntimeId: "42 199388" IsPassword: "False" IsControlElement: "True" IsContentElement: "True" Visibility BoundingRectangle: "(0, 0, 640, 480)" ClickablePoint: "(null)" IsOffscreen: "False" Misc NativeWindowHandle: "199388" ItemType: "" Orientation: "None" FrameworkId: "Win32" IsRequiredForForm: "False" ItemStatus: "" ControlPatterns Window CanMaximize: "True" CanMinimize: "True" IsModal: "False" WindowVisualState: "Normal" WindowInteractionState: "ReadyForUserInteraction" IsTopmost: "False" Vom "Bereich" ""
Code:
AutomationElement
General Accessibility AccessKey: "" AcceleratorKey: "" IsKeyboardFocusable: "False" LabeledBy: "(null)" HelpText: "" State IsEnabled: "True" HasKeyboardFocus: "False" Identification ClassName: "MacromediaFlashPlayerActiveX" ControlType: "ControlType.Pane" Culture: "(null)" AutomationId: "78318272" LocalizedControlType: "Bereich" Name: "" ProcessId: "284 (_YDKJ Germany)" RuntimeId: "42 264898" IsPassword: "False" IsControlElement: "True" IsContentElement: "True" Visibility BoundingRectangle: "(0, 0, 640, 480)" ClickablePoint: "(null)" IsOffscreen: "False" Misc NativeWindowHandle: "264898" ItemType: "" Orientation: "None" FrameworkId: "Win32" IsRequiredForForm: "False" ItemStatus: "" |
AW: Tastatur Eingabe emulieren
Ich bin jetzt ein großen Schritt weiter :
Anscheind lag das Problem daran, das dass Spiel groß Buchstaben als eingabe erwartet. Da ich es intervall mäßig immer unterschiedlich ausprobiert habe funktionierte es heute plötzlich... Vielleicht wenn mal jemand so ein ähnliche Problem hat! mfg |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:06 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