在c#.Net中运行AutoIT脚本-WinWaitActive存在问题

在c#.Net中运行AutoIT脚本-WinWaitActive存在问题,c#,.net,autoit-c#-wrapper,C#,.net,Autoit C# Wrapper,我正在使用c#.NET构建一个windows窗体应用程序,并希望使用AutoITX3.dll运行/执行简单的窗口脚本。我已经正确地引用了AutoItX3Lib,下面是我的代码 我在程序中使用tab键使窗口“标题”处于活动状态,但程序不会继续使用脚本,也不会打印“其活动”行。它似乎被困在WinWaitActive,我不确定为什么 autoit = new AutoItX3Lib.AutoItX3Class(); autoit.AutoItSet

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

我在程序中使用tab键使窗口“标题”处于活动状态,但程序不会继续使用脚本,也不会打印“其活动”行。它似乎被困在WinWaitActive,我不确定为什么

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

好的,这里是关于
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
我注意到您还希望匹配标题的子字符串。我发现最好不要使用这个选项,而是使用正则表达式来匹配标题

如果您发布标题,我将帮助您找到一个regexp或一些与之匹配的代码,并提供在C#中使用它的完整代码

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

祝你好运