スクリプトを使用して、キーボードやマウスの入力などのイベントを送信し、別のプログラムを自動化したいと思います。たとえば、ゲームをプレイするボットを考えてみましょう (ただし、私はビデオゲームをプレイしません)。
これを複数の(スクリプト、プログラム)ペアで同時に実行したいと思います。
Windows では、autoit または win32 API を使用してマウスとキーボードを自動化できることはわかっていますが、Windows には「アクティブ ウィンドウ」という概念があります。つまり、一度にアクティブになるウィンドウは 1 つだけであり、これが入力を受け取ることができるウィンドウです。
この「アクティブウィンドウ」の概念のため、自動化することはできません複数プログラムを一度に実行します。
他にどんな選択肢がありますか?
編集:別のプログラムを待たずにプログラムを自動化する必要があります。キーボード ショートカットを使用してアクティブ ウィンドウを切り替えても、それができません。また、プログラムがバックグラウンドで自動化されている間にコンピューターを使用したいです。
答え1
現在のユーザーの入力を拘束する代替手段を含むように更新されました
オートイット autoitを使用すると、次のようなことができます。
Opt("WinTitleMatchMode", 2)
While WinActive('Search')
Send("{ALT DOWN}")
Send("{TAB}")
Send("{ALT UP}")
WEnd
「search」にはウィンドウのタイトルの一部が含まれます。
ウィンドウのフォーカスの順序がわかっている場合は、指定されたウィンドウに到達するまで、単にタブを何回も送信するだけで済みます。
alt+tab の順序は常に逆フォーカス順になります。
ウィン32 これは他のスレッドで回答されており、プログラミングのより深い部分になります。この方法を使用する場合は、必要なプロセスに Windows メッセージを送信する必要があります。次の点を確認してください。Windows API を使用してウィンドウをアクティブ化せずにキーストロークをウィンドウに送信するにはどうすればよいでしょうか?
信頼性が低いようで、多くの落とし穴があるようです。特定のアプリケーションでキーボード入力が処理される方法について仮定を立てる必要があります。
何を達成しようとしているのか分かりませんが、仮想マシンを使用してそのインスタンスでマクロ/スクリプトを実行できるようにすることをお勧めします。これにより、ユーザーは使用しているデスクトップを拘束することなく、コンピューターを引き続き使用できるようになります。