私は Flash ゲーム用のボットを作成しており、すべてのAutoIt関数を C# コードにインポートする方法を見つけました。
string title = "Minesweeper";
string full = auto.WinGetTitle(title,"");
string handle = auto.WinGetHandle(full, "");
if (auto.WinExists(full, "") == 1)
textBox1.Text = "window exists";
addressBox.Text = full;
for (int r = 1; r < 40; r++)
{
auto.ControlClick(full, "", "", "left", 2, r * 10, r * 10);
//auto.ControlClick(handle, "", "", "left", 2, r * 10, r * 10);
}
(コメントされていないものはハンドル付きのものである必要があり、その逆も同様であると確信していますが、これはMinesweeperで機能します。)
したがって、マインスイーパで機能し、アクティブなウィンドウである必要はありません。Flash ゲームで動作させようとすると、Internet Explorer ウィンドウをアクティブにする必要があります。これは Flash が必要とするものですか、それともゲームが最小化されているときに動作させるためにできることはありますか?
これは、AutoIt インポートを使用して行う必要はありません。ある時点で user32 からのSendMessageも試しましたが、Flash コンテンツではまったく機能しませんでした。
Flash サイトやマインスイーパではなく、ランダムな Web サイトでこれをテストしたところ、何らかの理由で Autoit スクリプト プログラム内から実行するとコードが機能しますが、C# プログラムからは機能しません...
2012 年 6 月 20 日: これは、ハンドルが渡される方法と関係があると確信しています。AutoIt EXE ファイルを呼び出し、C# コードから取得したハンドルを引数として使用していくつかのテストを行いました0x
。その場合、インポートされた関数はハンドルの文字列入力に依存しているため、何をすべきかわかりません。