0

我正在使用 c#.NET 构建一个 Windows 窗体应用程序,并希望使用 AutoITX3.dll 来运行/执行简单的窗口脚本。我已经正确引用了 AutoItX3Lib,以下是我的代码。

我浏览程序以使窗口“标题”处于活动状态,但是,程序不会继续执行脚本,也不会打印“ITS ACTIVE”行。它似乎卡在 WinWaitActive 上,我不确定为什么。

autoit = new AutoItX3Lib.AutoItX3Class();                           
autoit.AutoItSetOption("WinTitleMatchMode", 2);   
autoit.WinActivate("Title");
autoit.WinWaitActive("Title");    
System.Console.WriteLine("ITS ACTIVE"); 
4

1 回答 1

0

好的,这是处理WinWaitActive("sometitle"),如果它看不到标题,它将冻结 - 也就是说,它将无限期地等待窗口变为活动状态,因为它没有看到您指定的参数。


解决方案:使用 AutoIt 检查器获取窗口的标题,并将您拥有的所有代码放入实际的AutoIt 脚本中(这样您就可以排除库本身存在错误的可能性)。然后,使用该 AutoIt 脚本并对其进行调整。

有时,我们无法匹配 AutoIt 标题,因此您可以执行以下操作:

While( True )
     $winTitle = WinGetTitle("[active]")
     $matchText = "Title" ; put the title you want to match here
     $match = WinActive($matchText) ; If this is 0, then it didn't match.
     ConsoleWrite($winTitle & " : " & $match)
WEnd

我注意到您还想匹配标题的子字符串。我发现最好不要使用该选项并使用正则表达式来匹配标题。

如果您发布标题,我将帮助您找到一个正则表达式或一些与其匹配的代码,并为您提供在 C# 中使用它的完整代码。

[注意:我没有验证我发布的任何代码,所以我不能保证它不会出错。我在 Mac 上,现在无法测试]

祝你好运!

于 2012-09-30T11:28:54.127 回答