Windows でアクティブなアプリケーションではない特定のアプリケーションに pressKey イベントを送信したいので、sendMessage/postMessage API 呼び出しを使用する必要があります。
ただし、アプリケーションでアクティブになっている正確な子ウィンドウを知り、それに pressKey メッセージを送信する必要があります...
GetTopWindow および GetWindow(GW_CHILD) API 呼び出しを使用して、メイン ウィンドウの一番上の子ウィンドウを取得し、取得した子ウィンドウで再度実行して一番上の grandchildWindow を取得し、子ウィンドウがなくなるまでそれを続けました。 . これは一部のアプリケーションではうまく機能しますが、場合によっては機能しません。親ウィンドウが子ウィンドウではなくアクティブなウィンドウである場合があるため、親の最上位の子ウィンドウを取得しても、メッセージが間違ったウィンドウに送信されてしまいます。
これを行う唯一の方法 (実際のアクティブなウィンドウのハンドラーを取得する) は、GuiThreadInfo API 呼び出しを使用することでしたが、ターゲット アプリケーションが Windows でアクティブなアプリケーションである場合にのみ機能します。冒頭で述べたように、ハンドラが null になるわけではありません。
setForegroundWindow api 呼び出しを使用してアプリケーションを最上位に移動できますが、これはしたくありません。また、AttachThreadInput および GetFocus api 呼び出しも試しましたが、ターゲット アプリケーションが Windows のアクティブなアプリケーションである場合にのみ機能します。
何か案は?ありがとう