Makros mit DirectInput programmieren
-
Hallo Leute,
da ich momentan die Programmierung mit DirectX9 lerne, wollte ich als Übung ein Programm schreiben, mit welchem ich z.B. strg+alt+e drücken kann um den Internet Explorer zu starten.
Das ganze klappt so weit ganz gut.
Doch in manchen Anwendungen, werden die Eingaben einfach nicht angenommen.
z.B. in manchen Spielen.das ganze sieht in etwa so aus:
HRESULT r = g_pKeyboard->GetDeviceState(256, aKey); if(r == DIERR_INPUTLOST) g_pKeyboard->Acquire(); for(int a = 0; a < 256; a++) { if(aKey[a] & 0x80) {//tue etwas}
Kann mir jemand sagen, woran das liegt? Und wie ich das villeicht ändern kann?
Wäre super, wenn ihr mir ein wenig helft.
Mit freundlichen Grüßen
xXSlayerXx
-
Hi,
du bist im falschen Forum gelandet :p. Ich denke mal das gehört ins WinAPI Forum.
-
ach misst
nicht schon wieder.
Tut mir leid.Könnte jemand das Thema verschieben?
-
Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (auch C++0x und C++11) in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
TRACE
mal raus wanng_pKeyboard->Acquire
ausgeführt wird.
Vielleicht liegt es daran.Als Alternative könntest du
GetAsyncKeyState
bzw. Raw-Input (WM_INPUT
) versuchen.
-
ok ich gucke heute abend mal.
Eigentlich wollte ich ja speziell DirectInput benutzen, um den umgang damit zu erlernen.Mit GetAsyncKeystate habe ich vorher schon sehr viel mit gearbeitet.
Naja ich werd trotzdem mal schauen ib es vllt Klappt.
-
SO ich führe nun in jedem Frame g_pKeyboard->Acquire() aus.
Dennoch kommt von dem Fenster keine Nachricht an.Irgendwie komisch, denn in jedem anderen Fesnter egal ob Internet Explorer, Visual C++, chats, Steam funktioniert alles genau wie ich es möchte.
Kann es sein, dass die eingaben irgendwie abgefangen werden und geändert werden?
EDIT:
habe gerade mal ein kleines Programm geschrieben, dass versucht mit GetAsyncKeyState eine gedrückte Taste abzufragen, doch vergebens.
Auch da kommt einfach keine Eingabe an.
-
xXSlayerXx schrieb:
SO ich führe nun in jedem Frame g_pKeyboard->Acquire() aus.
So hab' ich das nicht gemeint.
Ich meinte du sollst ausgeben wanng_pKeyboard->Acquire()
ausgeführt wird, um rauszubekommen ob beig_pKeyboard->GetDeviceState
evtl.DIERR_INPUTLOST
zurückkommt.
Das würde nämlich darauf hindeuten dass das Programm selbst DirectInput verwendet, und dir dein Device wegschnappt.In dem Fall
g_pKeyboard->Acquire()
aufzurufen wird dann vermutlich nix bringen, da es einfach fehlschlagen wird so lange das andere Fenster aktiv ist. Genau so wie auchd3ddevice->Reset()
nix bringt so lange ein anderes D3D Fullscreen Device "vorne" ist.Ist aber schon reichlich lange her dass ich mir DirectInput angesehen habe, vielleicht gibt's da doch noch irgendwelche Möglichkeiten.
Ansonsten probier es mit Raw-Input.
xXSlayerXx schrieb:
habe gerade mal ein kleines Programm geschrieben, dass versucht mit GetAsyncKeyState eine gedrückte Taste abzufragen, doch vergebens.
Auch da kommt einfach keine Eingabe an.Wie? Überhaupt nicht, oder nur mit bestimmten Programmen nicht?