【发布时间】:2016-02-25 04:57:19
【问题描述】:
有一个问题我自己解决不了。
我已经写了这个脚本部分:
If WinExists("Application") then
WinActivate("Application")
...
...
Else
MsMsgBox($MB_OK,"Attention", "openSiebelOrderScreen: Application not found!")
_endAutoIT() // ends the script at all
EndIf
这适用于除一台以外的所有 Windows 8 计算机。有一个笔记本电脑系统,也运行 Windows 8,但我无法说服这台计算机使用给定的脚本部分将应用程序窗口放在前面。
我已经设置了Opt("WinTitleMatchMode", 2)。
有人遇到同样的问题,或者可能有解决方案吗?
【问题讨论】:
-
你看过WinExsts之类的返回码吗?
-
好吧,WinExists 不会引发错误。我试图用 WinGetState 获取窗口状态。在麻烦的笔记本电脑上,结果是数字“16”,因此 AutoIT 检测到应用程序窗口存在,但已最小化。我将尝试强制最大化应用程序窗口。希望届时它会成为焦点。
-
好的,我现在解决了这个问题,因为我发现应用程序 Windows 被 AutoIt 检测为最小化,但我需要区分 WinActivate 和 WinSetState。这也让我很困惑。但现在: 'WinActivate("Application") Sleep (500) Local $WinHandle = WinWait("Application","",10) If BitAND(WinGetState($WinHandle),16) = 16 Then WinSetState($WinHandle, " ", @SW_MAXIMIZE) EndIf'
-
不错。展示你的代码,也许还有改进的余地。
-
同时,我在这里找到了其他笔记本电脑,可以解决这个问题。但也有一些笔记本电脑可以在不应用此解决方法的情况下工作。除了其他硬件,一切都是一样的。很奇怪。