Autohotkey 中文论坛
多个热键任意切换同时终止前面的线程 - 可打印的版本

+- Autohotkey 中文论坛 (http://ahkcn.net)
+-- 版块: AutoHotkey (/forum-3.html)
+--- 版块: 作品展示 (/forum-7.html)
+--- 主题: 多个热键任意切换同时终止前面的线程 (/thread-6595.html)



多个热键任意切换同时终止前面的线程 - feiyue - 2018-07-06 21 : 57

以前对于这个问题讨论已不少了,我想到一个新思路,采用双进程,一个接受热键,一个专门执行。Smile

代码:
/*

多个热键任意切换同时终止前面的线程  By FeiYue

*/


#NoEnv
#NoTrayIcon
#SingleInstance off
if 0 = 0
  ok:="Main"
else
  ok:="Sub"
;-----------------------
DetectHiddenWindows, On
Gui, ok:Show, Hide, [%ok%]
Gui, ok:+Hwndmyid
WinGet, list, List, [%ok%] ahk_class AutoHotkeyGUI
Loop, % list {
  IfEqual, myid, % id:=list%A_Index%, Continue
  WinGet, pid, PID, ahk_id %id%
  WinClose, ahk_class AutoHotkey ahk_pid %pid%,, 3
  IfWinExist, ahk_id %id%
    Process, Close, %pid%
}
DetectHiddenWindows, Off
;-----------------------
if 0 = 0
{
  Menu, Tray, Icon
  For k,v in ["F1","F2","F3"]
    Hotkey, %v%, %v%
  return
}
if IsLabel(k:=%True%)
  Goto, %k%
return

ok() {
  static arg:=%True%
  if (arg="")
  {
    Run, %A_AhkPath% "%A_ScriptFullPath%" %A_ThisLabel%
    KeyWait, % RegExReplace(A_ThisHotkey,"\W+")
    Exit
  }
}


;========== 下面是自己的代码 ==========


F1:
ok()
Loop {
  Sleep, 100
  ToolTip, F1-%A_Index%
}
return

F2:
ok()
Loop {
  Sleep, 100
  ToolTip, F2-%A_Index%
}
return

F3:
ok()
ExitApp


;========== 脚本结束 ==========

;