我正在使用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");
答案 0 :(得分: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&我现在无法测试]
祝你好运!