Est-il possible d’utiliser Windows Raw Input API sans fenêtre (c’est-à-dire depuis une application console)?

Est-il possible d’utiliser Windows Raw Input API sans fenêtre (c’est-à-dire depuis une application console)?

J’ai essayé d’utiliser RegisterRawInputDevices, mais mes boucles de messages ne semblent pas recevoir d’ événements de GetMessage et par conséquent, elles se bloquent.

Voulez-vous dire RegisterRawInputDevices ?

Puisque la structure RAWINPUTDEVICE nécessite que vous RAWINPUTDEVICE un HWND pour recevoir les messages WM_INPUT , il est impossible de le faire sans une fenêtre.

Les applications de console peuvent créer des fenêtres et la fenêtre peut probablement recevoir WM_INPUT caché, mais vous avez besoin d’une fenêtre.

De cette façon, je l’ai fait (pas sûr que ce soit la manière la plus confortable …):

J’ai lancé un thread (pour remplir mon tampon d’entrée). Dans cette discussion, j’ai créé une fenêtre contenant uniquement des messages (elle est masquée et peut recevoir des données d’entrée) avec une classe de fenêtre appropriée.

Ensuite, enregistré les périphériques d’entrée bruts.

Ce thread a sa propre boucle de gestionnaire de messages. Dans le WindowProc de la classe de fenêtre, j’ai manipulé les entrées.

(Pour buffer, vous pouvez utiliser boost: circular_buffer, ça ROCKS!: D)

Dans cette solution, vous avez besoin d’une fenêtre, mais il semble que vous ne l’ayez pas. 🙂

J’espère que cela peut aider.