程序在 Windows' 运行 中运行,但不与 AHK 的 运行

A program runs in Windows' Run, but not with AHK's Run

我正在尝试 运行 使用 AHK 的 Juniper Network 的 Junos Pulse。它在我使用 Windows' 运行 应用程序时有效,但在我的 AHK 脚本中无效。没有错误 - 没有任何反应:

#j::
    Run, C:\Program Files (x86)\Common Files\Juniper Networks\JamUI\Pulse.exe
Return

我尝试过的东西:

此外,当我在命令中添加 MsgBox 打开时,它打开正常 - 没问题,但 Pulse 打不开,也没有发生错误。

更新:由于上一行不适用于 Pulse,并且您的答案需要特定的屏幕坐标和任务栏中的位置,因此我制定了这个解决方法,它可能适用于每台 PC,而不管它是 resolution/taskbar:

#j::
Send #r
Sleep, 1
clipboard:="C:\Program Files (x86)\Common Files\Juniper Networks\JamUI\Pulse.exe"
Send ^v
Sleep, 1
ControlClick, OK, Run
return

或者,如果您想保留 'Clipboard' 并使用 'Enter' 而不是 'ControlClick':

#j::
Send #r
Sleep, 1
Send C:\Program Files (x86)\Common Files\Juniper Networks\JamUI\Pulse.exe
Sleep, 1
Send {Enter}
return

ps:增加 'Sleep' 时间以在慢速计算机上获得更安全的结果。

尝试运行脚本作为管理员(上下文菜单), 或将此添加到 auto-execute 部分(脚本顶部,第一个 return 或热键之前):

if not A_IsAdmin
{
    Run *RunAs "%A_ScriptFullPath%"
    ExitApp
}

长话短说:

Pulse 的 GUI 实现忽略了标准的 AHK 输入。您需要使用更多间接输入来与 Pulse 交互。试试这个脚本,更改点击坐标以匹配您自己的屏幕:

#CommentFlag ;//

;// Run Junos Pulse
#j::
    Send, {LWinDown}4{LWinUp} ;// If Pulse is pinned to your taskbar in the 4th position
    Sleep 100
    Click 568,315 ;// the position of the Connect button on my screen
    Sleep 7000
    Click 641,32 ;// the position of the Minimize button
Return


详情

自定义 GUI 实现

一些应用程序使用自定义 GUI 实现。这通常是因为他们希望更好地控制 OS 可以访问的内容以及访问方式。

一个很好的例子是Google的Chrome,它在Windows中的表现是这样的。他们可能不想与 Windows 分享您的数据,因为这样对他们来说更有价值。

Junos Pulse 也是一种特殊的 GUI 实现,原因如下:1) 他们希望在尽可能多的平台上工作。 2) 他们想通过限制 Windows 访问它的方式的数量来增加安全性。 3)这是一个写得不好的应用程序。 4) 它是为 Windows 8 编写的,实际上从未为 Windows 10 更新过。

因为他们使用自定义实现而不是标准的 MS 实现,所以他们有意或无意地禁止看似无害的功能。

因为 Chrome 与 AHK 一起工作 semi-well,它可能对如何作为应用程序访问它的限制较少,而对 Windows 如何访问它存储的数据的限制更多.这也是几乎不可能从计算机中完全删除 Chrome 数据的部分原因。

另一方面,Junos Pulse 可能将 AHK 与侵入性或不安全的恶意软件混为一谈。

但是,还有希望

Pulse 仍然响应鼠标和键盘等间接交互。所以这就是你必须使用的。

记住:

  • 您可以通过将程序添加到任务栏并按 win + 数字 - 对应于固定到任务栏的应用程序的顺序来打开它们。
  • Junos Pulse 是我任务栏上的第 4 个程序:

所以我可以用win+4打开。我发送它和一些鼠标点击以自动登录,然后最小化 window。请记住,这是特定于我的屏幕 (MS Surface Pro) 以及打开时 Pulse window 的位置:

#CommentFlag ;//

;// Run Junos Pulse
#j::
    Send, {LWinDown}4{LWinUp}
    Sleep 100
    Click 568,315 ;// the position of the Connect button on my screen
    Sleep 7000
    Click 641,32 ;// the position of the Minimize button
Return

使用 WindowSpy(SciTE4AutoHotkey 中的一个工具)获取 Click 命令的精确鼠标坐标。