我正在为 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 网站或扫雷器上对此进行了测试,出于某种原因,如果我从 Autoit 脚本程序中执行它,而不是从我的 C# 程序中执行它,则代码可以工作......
2012 年 6 月 20 日:我很确定这与手柄通过的方式有关。我已经通过调用 AutoIt EXE 文件并使用从 C# 代码中获得的句柄作为参数进行了一些测试,我必须向其中添加一个0x
,然后在 AutoIt 代码中我必须将它从字符串转换为一个 HWnd,所以这可能是什么,在这种情况下,我不知道该怎么做,因为导入的函数依赖于句柄的字符串输入。