私が知りたいのは、クローズド ソースでパブリック API を持たない GUI アプリに入力を与える方法です。
より簡潔にするために、ソリティアを開いて、プログラムを介してそれをプレイしたいとしましょう。または、基本的なことを言うと、ボタン付きの GUI アプリがあり、別のプログラムでそれをクリックしたいとします。
質問が少し漠然としていることは承知していますが、それが私が表現できる最高のものです。より具体的にするために、編集やコメントを手伝ってください。
私が知りたいのは、クローズド ソースでパブリック API を持たない GUI アプリに入力を与える方法です。
より簡潔にするために、ソリティアを開いて、プログラムを介してそれをプレイしたいとしましょう。または、基本的なことを言うと、ボタン付きの GUI アプリがあり、別のプログラムでそれをクリックしたいとします。
質問が少し漠然としていることは承知していますが、それが私が表現できる最高のものです。より具体的にするために、編集やコメントを手伝ってください。
調査しSendInput()
ます。マウスの動きとキーの押下をシミュレートするために使用できます。
GUI を使用して Windows アプリケーションをEnumWindows()
見つけるには、特定のタイトルのウィンドウを見つけるために使用できます。これにより、ウィンドウ ハンドルが提供されます。そのウィンドウにフォーカスを与えるには、次のことができます。
EnumWindows()
GetWindowRect()
ウィンドウの四角形の座標を取得するために使用しますSendInput()
してマウス クリックをシミュレートします。SendInput()
私はこれを一度やったことがありますが、正しくするのは腹立たしいほど難しいです。プログラムを開始したら、手の上に座ってください。マウスやキーボードには触れないでください。
(Linuxでこのようなことを行う方法については知りません)
Linux の X11 アプリであると仮定すると、プロセスを名前付きパイプの一方の端に接続し、X-Input イベントをパイプのもう一方の端にエコーすることができます。