[Hardware] Auf Notebookknöpfe reagieren
-
Hi!
An meinem Notebook (Acer Aspire 5920G) befinden sich mehrere Knöpfe, denen durch ein spezielles im Hintergrund laufendes Programm Funktionen, wie das Aufrufen des Mailprogrammes, zugewiesen sind.
Da dieses Programm nicht meinen Ansprüchen entspricht, möchte ich ein Äquivalentes Programm unter C++ entwickeln.
Habt ihr eine Idee, wie ich die Buttons abfragen kann? Kann ich dafür möglicherweise das vorhandene Acerprogramm benutzen, und diesem mit einem Tool Informationen entlocken?
Die programmatische Lösung sollte sowohl unter Linux als auch Windows funktionieren.
Danke im Voraus!
-
Unter Windows kannst du die sog. "Virtual-Key Codes" nutzen. Die erweiterten Tasten haben dabei die Bezeichnung "VK_OEM_..." (s. WinSDK-Hilfe oder bei MSDN)
Mittels der Funktion 'GetAsyncKeyState(int vKey)' kannst du dabei den Status der einzelnen Tasten abfragen (du mußt jetzt nur noch rausfinden, welchen Code deine zusätzlichen Tasten haben).
Unter Linux weiß ich auf Anhieb erstmal keine konkrete Funktion dafür (wobei es die sicherlich gibt).
-
OK, danke, werde ich mal in der MSND nachschauen..
Wie würde man sowas denn am sinnvollsten ansetzen? Einfach mit einer Dauerschleife getasynckeystate aufrufen erscheint mir doch sehr verschwenderisch bezüglich der Systemressourcen zu sein.
Gibt es eine andere, performantere Möglichkeiten wie z.B. einen Callback, wenn die Tasten gedrückt werden, oder ist das mit getasynckeystate schon performant?
-
Du könntest entweder in einer Warteschleife die Tasten abfragen (z.B. Sleep(x), d.h. alle x/1000 Sekunde) oder aber die Windows-Message "WM_KEYDOWN" abfragen. Dazu schaust du am besten in die WinAPI-Dokumentation oder hier im WinAPI-Forum.
-
ja, das ist kein Problem.
Die Frage ist: Was ist weniger belastend für das System? Ich möchte, dass mein Tool, welches dann ja die ganze Zeit mitlaufen würde, möglichst ressourcenschonend arbeitet.
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ 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.
-
Viele dieser Tasten lösen ein WM_APPCOMMAND aus!
Im Allgemeinen langt es einen WH_SHELLHOOK zu setzen!
Kann aber auch gut sein, dass kein normaler Scancode erzeugt wird...