自动执行非活动/非聚焦窗口

时间:2016-09-16 22:52:51

标签: autoit

有没有办法在窗口上运行AutoIt脚本而不在顶部?

示例:浏览Facebook,而脚本正在浏览器后面的游戏上运行。

我可以这样做吗?

2 个答案:

答案 0 :(得分:0)

如果游戏在窗口模式下运行,您应该能够使用命令WinGetHandle使用标题来处理特定窗口。使用返回的句柄,您可以使用ControlSend将各种文本和键发送到窗口。

很难帮助你,你的问题很模糊。如果您提供有关您想要完成的具体内容的更多详细信息,我们可能会为您提供更多帮助。

答案 1 :(得分:0)

我将不得不同意Bibz的回答。需要对此问题进行修改,以便更详细地介绍您尝试做的事情。对此的答案实际上取决于游戏及其运行方式。例如:基于网络的游戏,例如coolmath-games.com上的游戏。这些游戏似乎主要是基于Adobe FLASH的游戏,它们在Web浏览器中运行。另一个例子是Minecraft。这个游戏是通过它自己的窗口运行的。我的最后一个例子是像魔兽世界这样的游戏,它在全屏窗口中运行。在所有这些情况下,使用AutoIt自动执行任何过程都会有很大差异。

如果您想在浏览网页或执行任何其他功能时在后台使用AutoIt,最好的办法是使用{Bibz推荐的WinGetHandleControlSend。请务必避免使用Send()MouseClick()或类似功能,因为这会影响您的浏览。

请查看以下示例。它会打开一个Internet Explore实例,导航到Google,然后在后台搜索一个术语。在脚本的最后,我将其设置为使浏览器可见,以便您可以看到搜索实际上已完成。

#CS
    This example opens up a webpage in the background, navigates to Google,
    and searches something.
#CE

#include <GUIConstants.au3>
#Include <IE.au3>

$a = "THIS IS WHAT I'M GOOGLING"
Preview($a)

Func Preview($Submit = "")
    $oIE = _IECreate ("http://www.google.com", 0, 0)
    $oForm = _IEFormGetObjByName ($oIE, "f")
    $oQuery = _IEFormElementGetObjByName ($oForm, "q")
    _IEFormElementSetValue ($oQuery, $Submit)
    _IEFormSubmit ($oForm)
    Sleep(3000)
    MsgBox(0,"Showing IE","Now making IE visible",3)
    _IEAction($oIE,"visible")
EndFunc

#CS
    Notice, the browser is being used to Google something, then it's becoming visible AFTER the search was done.
#CE

我希望这有帮助!

谢谢,