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 wann g_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 wann g_pKeyboard->Acquire() ausgeführt wird, um rauszubekommen ob bei g_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 auch d3ddevice->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?


Anmelden zum Antworten