【问题标题】:Auto hot key script only works when watchingAutohotkey 脚本仅在观看时有效
【发布时间】:2013-07-08 16:11:11
【问题描述】:

我有一个自动热键脚本,可以自动导入向导 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}

EDIT 07-12-2013:找到了解决方案:

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

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

【问题讨论】:

  • 错误信息是什么,你以什么权限运行脚本。
  • @Armin 没有错误消息。选择公司窗口打开。 AHK 激活它并发送文本,然后等待“选择文件”窗口打开。但它永远不会打开,因为“选择公司”窗口没有关闭。计划任务使用管理员用户帐户运行。
  • 那你的其他程序好像有问题。
  • 除非有用户登录,否则 GUI 交互可能无法工作。您使用的是控制台会话吗?解决这个问题的一种方法可能是使用 vnc 客户端,因此机器认为有人已登录并可以执行 GUI 交互。

标签: windows autohotkey remote-desktop


【解决方案1】:

你的脚本本身没有问题。

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

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

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

【讨论】:

    【解决方案2】:

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

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

    tscon RDP-Tcp#0 /dest:console
    

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

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

    为我工作!

    【讨论】:

      【解决方案3】:
      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 表达式调用时。请注意,这需要提升运行。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-11
        • 1970-01-01
        • 2016-06-17
        • 2018-05-07
        • 2020-02-07
        相关资源
        最近更新 更多