SendInput、SendKeys、PostMessage、SendMessage、SendNotifyMessage、keybd_eventなどのあらゆる種類の問題をいじった後、私は疑問に思っています。それをうまく見つけるには...キーボード入力を別の非フォアグラウンドプロセスに送信しようとするのは、非常に面倒で信頼性がありません。
Zオーダーをだまして(現在のウィンドウを一番上に保つため)SendInputの方法を試し、サードパーティのウィンドウをすばやく前面に出し、入力を送信し、ウィンドウを再度前面に出しました。これは最終的に失敗し、また、どういうわけか、フォアグラウンドではなく、ウィンドウでもキーストロークを処理することができました (プロセスを閉じることができるまで、2 つのウィンドウ間で送受信の無限ループが発生します)。
SendMessage と PostMessage のさまざまな組み合わせを試しました。1 つはダウン用、もう 1 つはアップ用です。ダウンとアップの両方を使用すると問題が発生するためです。たとえば、PostMessage を両方に使用すると、受信ウィンドウでキーが重複します。または SendMessage の両方で、テキスト入力に問題が発生しましたが、他の機能は正常に機能しました。keydown の SendMessage と keyUp の PostMessage はすべての関数で機能しましたが、信頼性が大幅に低下し、キー イベントにレイテンシが追加されました。keydown 用の PostMessage と keyup 用の SendMessage の組み合わせのみが、何らかの有用な処理を行うことができ、keyup 登録の失敗率はおそらく 5 ~ 10% でした。同じことが SentNotifyMessage にも当てはまります (信頼性に関する限り、SendMessage と基本的に同じように動作します)。
つまり、本質的に、私は終わりに近づいており、フックをターゲットウィンドウに直接挿入し、ブードゥーを実行してキーストロークをそのように送信し、メッセージキューなどをバイパスすることについて知りたかったのです。グローバル キー イベントを発生させず、ターゲット ウィンドウにのみ影響します。唯一のことは、インジェクション/フッキングなどに関しては、私はかなり知識がないということです。だから、コミュニティの皆さんに頼ります。
どーする?