你在某脚本(老板1)中设置一个热键,可以暂停另一个脚本(员工2)的



 两个脚本:1常用  2临时用
在1中设置一个热键,可以暂停2的运行,

 就是老板可以让临时工随时滚蛋... 



以暂停为例,,老板脚本如下:


#F1::
DetectHiddenWindows, on
SetTitleMatchMode, 2
PostMessage, 0x111, 65306,,, 这里写将被暂停的脚本名(员工脚本名).ahk - AutoHotkey
return



65305 挂起

65306 暂停

65307退出

65304编辑


【应用】

#NoEnv
;sunwind 2013年3月30日21:59:41
;关闭除Needle变量之外的所有ahk进程
result:=GetProcessInfo("AutoHotkey.exe")
;Needle为保留ahk列表 感谢逆风飞扬帮助完善!
Needle =
(
脚本1名字
脚本2名字

)
Loop, parse, result, `n
{
StringLeft,pid,A_LoopField,InStr(A_LoopField,"|")-1
FoundPos := RegExMatch(A_LoopField, "[^\\]*\.ahk", Match) ;
StringTrimRight,ming,Match,4
;~ MsgBox, % "FoundPos: " FoundPos "`n" "Match: " Match
IfNotInString,Needle,%ming%
PostMessage,0x111,65405,0,,ahk_pid %pid%
       ;~ Process, Close,%pid%
}
return

GetProcessInfo(iProcessName,iProcessId="",iMode=1) {
FROM=SELECT * FROM Win32_Process WHERE Name='%iProcessName%'


psvc := ComObjGet("winmgmts:{impersonationLevel=impersonate}!" . "\\.\root\cimv2")
penm := psvc.ExecQuery(FROM)._NewEnum 
While penm[pobj] {
       PID := pobj.ProcessId           ; 获取进程PID
       CMDLine := pobj.CommandLine ; 获取进程命令行
       cDate := pobj.CreationDate      ; 获取创建时间(瞎翻译的)
       regexmatch(CMDLine, "i)\s+(.*)", ff_)   ; 正则匹配命令行参数
       StringReplace,ff,ff_1,`",,All
       regexmatch(cDate, "Ui)^[0-9]{8}([0-9]{2})([0-9]{2})([0-9]{2})\..+$", dd_) ; 正则匹配时间
       ;~ if (iProcessId=PID)
               ;~ break
       ;~ MsgBox,0,% iProcessId,% PID   
       result:=result . PID . "|" . ff . "|" . "`n"
       }
       if iMode=0 ;返回进程PID
               return %PID%
       if iMode=1 ;返回进程命令行
               return %result%
       if iMode=2 ;返回创建时间
               return % dd_1 . ":" . dd_2 . ":" . dd_3
}