アクティブ化のために特定のホットキーの組み合わせを登録するプログラムがあります。この質問の目的のために、このホットキーが Ctrl + Alt + D であるとしましょう。組み合わせが押されると、私のプログラムは SendInput を使用してアクティブなウィンドウへの他のキーボード イベントをシミュレートします。たとえば、Ctrl + A をシミュレートできます。私の問題は、ホットキーの組み合わせから Ctrl キーがまだ押されているため、(私が思うに) Ctrl + A のシミュレーションが正しく機能しないことです。私が考えている解決策の 1 つは、ホットキーの組み合わせのすべてのキーに対して Key Up イベントを送信し、Ctrl + A をシミュレートすることですが、これが適切な処理方法であるかどうかを確認したかったのですか?
1 に答える
まず、キーボード メッセージの送信方法に関する質問が頻繁に寄せられることを理解してください。以前の回答を探すのに多くの時間を費やしていないと思います。次に、初心者は、キーボード メッセージを送信することが最も簡単で効果的な解決策であると誤解していることが多いことを理解してください。真実は、それは通常、最も簡単ではなく、最も効果的でもなく、最も信頼できるものでもないということです.
そのような Windows メッセージを処理する場合は、Spy++ の使用方法を学んでください。それが何かわからない場合は、VS Tools メニューで使用できるツールをよく理解してください。
WM_GETTEXT および WM_SETTEXT メッセージを使用すると、より簡単で効果的で信頼性の高い解決策となる可能性があります。将来の質問を予想して、別のアプリケーションでボタンを押すには、ボタンの親に BN_CLICKED 通知を送信します。Spy++ を使用して、メッセージの質問に対するより多くの回答を得ることができます。
SendInput を使用することが最善の解決策かもしれませんが、確実に言うには十分な要件が提供されていません。私の意見では、SendInput は最後の手段であり、他の可能性が不可能な場合にのみ使用する必要があります。質問に関連する多数の記事と以前の回答のいくつかを読んでください。