Serviceを読んで理解し、同意したものとみなします。スタック・オーバーフローはプログラマーとプログラミングに熱心な人のためのQ&Aサイトです。381件0WindowsアプリケーションをC++で開発しています。キーイベントを取得するには、まずはWM_KEYDOWNを取得。早く知りたい場合は、グローバルフック。早く知りたい場合は、KeyboardFilterDriverを開発...このようにしてWindowsのキー入力について深堀してきたのですが、ハードからのキー入力をどのようにソフトで処理しているのか、一連の流れがつかめません。ハードからカーネル、ドライバ、ユーザーランド、ユーザーアプリケーション....といったキー入力の一連の流れを詳しく教えてはいただけないでしょうか。目的は、ユーザーランド側(システムではない方)でいち早くキー入力を取得したいのです。ドライバ開発からすればシステムの一部としてキー入力を取得できるかもしれませんが、それではアプリケーションを利用できる層は限られています。(管理者でないといけない)なので、キー入力の仕組みをきちんと理解して、キー入力を取得できるようにしたいのです。個の銅バッジ質問したまま放置するのではなく解決したのであれば承認を、解決していないのであれば何を求めているのか補足をしてください。マルチポストは嫌われる傾向にあり、回答が集まりにくいことを理解してください。6:08申し訳ありません。マルチポストの質問をしています。リンク先のサイト(ミクプラ)でStackOverflowで質問するといいとのアドバイスを頂いたので、質問させていただきます。ミクプラでは具体的な回答をいただくことができず、未解決の問題となっています。ミクプラでのスレッドは既に締め切っていますのでご安心ください。6:20前半は他サイトについてではなく、本サイトにおける過去の質問についての指摘でした。広範囲に説明されていると思われます。頑張って読み取ってください。7:10ありがとうございます。新しいことばかりで難しいですが、なんとか理解しました。この文中でRawInputThreadの話が出てきていますが、この中でいち早く処理を受けるところはどこなのでしょうか。2011年の記事なので、Windows10では何かしらの変更が入っている可能性はあります。1.4がそれぞれ以下になります。1.2.のGetAsyncnKeyState/GetKeyStateですが、これの呼び出しはキーのUp/Downと連携出来ないので、データを取りこぼすか、頻繁に呼び出して、むやみにシステムの負荷が高くなる、といった可能性が多くなります。比較的に安定して早いのは、1.4.のRawInputでしょう。これに使われるWM_INPUTはデフォルトでは通知されないので、明示的に受け取る仕組みを作って動かしておく必要があります。Inputデフォルトでは、アプリケーションは生の入力を受け取りません。デバイスから生の入力を受け取るには、アプリケーションはデバイスを登録する必要があります。こちらに、複数のキーボードを接続して、特定のキーボードからの入力を無視する仕組みのデモと解説の記事があります。ソフト開発の参考になるでしょう。Hookは使っていません。フックに関しては、事はもう少しトリッキーになります。Hook(WH_KEYBOARD_LL)を使おうとしました。Inputイベントを生成しないことを意味します。message(WM_INPUT)を取得できません。Hook(WH_KEYBOARD)を使用する必要があります。これは設定が少し困難です。このフックをグローバルに、つまり実行中のアプリケーションに対して使用したい場合、そのプロシージャは別のDLLモジュール内になければなりません。上記のように組み合わせても、メッセージが通知されなかったり、色々と奇妙な現象が発生することが記載されています。注意しておいてください。|回答スタック・オーバーフローに参加してくれて、ありがとうございます!質問の回答を共有してください。回答を説明し、自分の検討結果も共有してください。意見を述べること(意見を述べるなら、参照リソース、自分の経験で意見をサポートしてください)さらにサポートが必要な場合このヘルプを参考してください。“回答を投稿”をクリックすることで利用規約、プライバシーポリシー、及びクッキーポリシーに同意したものとみなされます。タグが付いた他の質問を参照するか、自分で質問をする。defenderを自動的にフルスキャンをしたい0WIndows10でのデスクトップアプリ製作について0Windowsアプリ(C++)でPDFの表示をしたい。質問のフィードこのRSSフィードを購読するには、このURLをコピーしてRSSリーダーに貼り付けてください。