AutoHotKey - 一次发送一次运行程序

时间:2015-09-09 12:12:40

标签: autohotkey

我对AutoHotkey很新,但是我设法启动我想要的程序并向其发送一个Enter键,但问题是,程序应该只启动一次,如果启动它应该只接收输入键,当我再次按下击键时,它应该只发送输入键。

程序应该保持在后台,并且在收到回车键后不能聚焦。

我的代码:

#n::
Run F:\V..c.exe
Send {enter}
return

2 个答案:

答案 0 :(得分:1)

检测是否process exists并启动程序minimized,然后wait for its window出现。

#n::
  process, exist, PROGRAM.EXE
  if (errorlevel = 0) {
    run, d:\program.exe, , min
    winwait, ahk_class PROGRAM_WINDOW_CLASS
  }
  controlSend, , {Enter}, ahk_class PROGRAM_WINDOW_CLASS
  ;or use the line below
  ;controlSend, ahk_parent, {Enter}, ahk_class PROGRAM_WINDOW_CLASS
  return

PROGRAM.EXE替换为程序的可执行文件名,将PROGRAM_WINDOW_CLASS替换为可在“开始”菜单中的Autohotkey Window Spy实用程序或Autohotkey文件夹(AU3_Spy.exe)中看到的窗口类或者在Autohotkey托盘图标的右键菜单中。

除了最小化运行程序之外,还可以使用SW_SHOWNOACTIVATE的{​​{1}}标记,因此您可以将shellExecute替换为:

run, d:\program,, min

答案 1 :(得分:0)

你可以尝试:

hasran := false
#n::
if (!hasran) {
    Run F:\V..c.exe
    hasran := true
}
Send {enter}
return

它不会检查是否存在该窗口,但它只会运行一次该程序。然后你可以导航到该程序,它只会点击回车键。 (如果那个程序不是gui我不认为你可以向它发送关键事件)