2

我有一个自动导入向导 GUI 的自动热键脚本。当我 RDP 进入该脚本所在的机器时,我可以运行该脚本,它运行良好。该脚本按 10 分钟的时间表运行。如果我在计划运行时将 RDP 加入机器,我可以看到脚本运行良好。

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

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

这是一些代码……</p>

#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 的连接,而是运行这个批处理文件……</p>

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

4

3 回答 3

1

你的脚本本身没有问题。

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

要让它在你“不看”时运行,你必须获得系统帐户来操作文件的执行。

尝试使用 Windows 任务计划程序运行脚本,如果需要,请使用系统帐户。

于 2013-07-10T21:35:53.537 回答
0

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

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

tscon RDP-Tcp#0 /dest:console

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

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

为我工作!

于 2017-12-20T17:16:02.753 回答
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 表达式调用时。请注意,这需要提升运行。

于 2021-06-16T14:23:59.657 回答