Autohotkey脚本仅在观看时有效

时间:2013-07-10 16:04:58

标签: windows autohotkey remote-desktop

我有一个autohotkey脚本可以自动导入向导GUI。当我RDP进入这个脚本所在的机器时,我可以运行它运行得很漂亮的脚本。该脚本运行10分钟。如果我在计划运行时将RDP加入计算机,我可以看到该脚本运行得很漂亮。

当我退出RDP(或者甚至只是最小化窗口)时,脚本按计划运行并挂起导入向导中的第一个窗口。如果我回到RDP,我会看到那个窗口坐在那里,我看到我的脚本在等待下一个窗口出现时挂起。如果我在打开的窗口上单击“确定”(这正是ahk脚本的功能),那么我的脚本会继续并运行正常。

tldr:我的自动热键脚本仅在我正在观看时才有效!

这是一些代码......

#NoTrayIcon
#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
#Warn  ; Enable warnings to assist with detecting common errors.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.

saexe_file = C:\test.exe
company_file = Z:\ABC.SAI
import_file = D:\test.imp

Run, %saexe_file%

WinWait Simply Accounting Import - Select Company
WinActivate
Send %company_file%{Enter}

; IT HANGS HERE
WinWait Simply Accounting Import - Select File to Import from
WinActivate, Simply Accounting Import - Select File to Import from
Send %import_file%{Enter}

编辑07-12-2013 :找到解决方案:

不要断开与RDP的连接,而是运行此批处理文件......

for / f“usebackq skip = 1 tokens = 3”%% i in(query user %USERNAME%)do%windir%\ System32 \ tscon.exe %% i / dest:console

3 个答案:

答案 0 :(得分:1)

本身的脚本不是问题。

当您在RDP会话中工作时,您的帐户已登录,并且该脚本会在您的帐户下运行。

要在“不看”时运行它,您必须获取系统帐户才能操作文件的执行。

尝试使用Windows任务计划程序运行脚本,并在询问时使用系统帐户。

答案 1 :(得分:0)

如上所述,关闭或断开RDP会话将不起作用。

相反,从命令窗口执行此命令(如果需要,可以将其放在bat文件中):

tscon RDP-Tcp#0 /dest:console

#字符后面的数字是您当前的RDP会话#。您可以在任务管理器/用户选项卡中找到它

这会导致您的RDP会话切换到“控制台”模式,并且GUI将继续在此模式下运行

为我工作!

答案 2 :(得分:0)

SET TEMPFILE="%TEMP%\%RANDOM%.TXT"
query user %USERNAME% >%TEMPFILE%
for /f "usebackq skip=1 tokens=3" %%i in (%TEMPFILE%) do %windir%\System32\tscon.exe %%i /dest:console
del %TEMPFILE%

由于错误“系统找不到文件查询”,需要隔离查询用户。当从单个 for 表达式调用时。请注意,这需要提升运行。