一个程序在Windows中运行'跑,但没有AHK的跑步

时间:2017-01-18 20:18:06

标签: autohotkey

我尝试使用AHK运行Juniper Network的Junos Pulse。当我使用Windows'运行App,但不能在我的AHK脚本中运行。没有错误 - 没有任何反应:

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

我尝试过的事情:

  • Run, Pulse.exe, %Path%
  • Run, '%Path%Pulse.exe'
  • Run, "%Path%Pulse.exe"
  • Run %Path%Pulse.exe

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

3 个答案:

答案 0 :(得分:3)

更新:由于上一行无法使用Pulse,并且您的答案需要特定的屏幕坐标和任务栏中的位置,因此我做了这个解决方法,可能适用于每个PC的分辨率/任务栏:

#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

或者,如果您想保留“剪贴板”并使用“输入”代替“ControlClick”:

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

ps:增加“睡眠”时间,以便在慢速计算机上获得更安全的结果。

答案 1 :(得分:1)

尝试运行脚本作为管理员(上下文菜单), 或者将其添加到自动执行部分(脚本的顶部,在第一次返回或热键之前):

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

答案 2 :(得分:0)

TL; DR:

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实施。这通常是因为他们希望更多地控制操作系统可以访问的内容以及它如何访问它。

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

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

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

由于Chrome与AHK的效果很好,因此对于如何作为应用程序访问它可能的限制较少,而且对Windows如何访问其存储的数据的限制更多。这也是几乎无法从计算机中完全删除Chrome数据的部分原因。

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

但是,有希望

Pulse仍然响应间接交互,例如鼠标和键盘。这就是你必须使用的东西。

<强>记住:

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

My Taskbar with numbers corresponding to the applications pinned there.

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

#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命令的精确鼠标坐标。