Open 100730088 opened 1 year ago
` ; #SingleInstance ; Persistent
; SetTitleMatchMode 2 ; DetectHiddenWindows 1
; ScriptArrayTemp := Map() ; ScriptArrayFile := Map()
; SplitPath(A_AhkPath, , &WorkDir) ; 设置工作路径 ; WorkDir_Lib := WorkDir . "\Lib\" ; WorkDir_Scripts := WorkDir . "\Scripts\" ; WorkDir_Shortcut := WorkDir . "\Scripts\Shortcut\" ; WorkDir_Resource := WorkDir . "\Scripts\Resource\"
ScriptManager_Menu: { scripts_menu_open_more := Menu() scripts_menu_open_more.Add() scripts_menu_open_more.Delete()
scripts_menu_open := Menu() scripts_menu_open.Add("更多脚本(&Q)", scripts_menu_open_more) scripts_menu_open.Add() scripts_menu_close := Menu() scripts_menu_close.Add("全部关闭(&C)", scripts_func_closeall) scripts_menu_close.Disable("全部关闭(&C)") scripts_menu_close.Add() scripts_menu_reload := Menu() scripts_menu_reload.Add("全部重载(&R)", scripts_func_reloadall) scripts_menu_reload.Disable("全部重载(&R)") scripts_menu_reload.Add() ; scripts_menu_reload.Delete() scripts_menu_edit_more_self := Menu() scripts_menu_edit_more := Menu() scripts_menu_edit := Menu() scripts_menu_edit.Add("程序配置(&A)", scripts_menu_edit_more_self) scripts_menu_edit.Add("更多脚本(&E)", scripts_menu_edit_more) scripts_menu_edit.Add() scripts_menu_help := Menu() scripts_menu_help.Add("AutoHotkey.chm", scripts_func_open.Bind(,,WorkDir "\AutoHotkey.chm")) scripts_menu_help.Add Tray := A_TrayMenu Tray.Delete Tray.ClickCount := 1 Tray.Add("启动(&Q)", scripts_menu_open) Tray.Add("关闭(&C)", scripts_menu_close) ; Tray.Add() Tray.Add("重载(&S)", scripts_menu_reload) Tray.Add("编辑(&E)", scripts_menu_edit) Tray.Add() Tray.Add("帮助(&H)", scripts_menu_help) Tray.Add("目录(&D)", scripts_func_dir) Tray.Add() Tray.Add("暂停(&P)", scripts_func_pause) Tray.Add("重启(&R)", scripts_func_reload_self)
}
ScriptManager_Loop()
Return
ScriptManager_Loop() { scripts_menu_open.Delete scripts_menu_open_more := Menu() scripts_menu_open.Add("更多脚本(&Q)", scripts_menu_open_more) scripts_menu_open.Add
scripts_menu_close.Delete scripts_menu_close.Add("全部关闭(&C)", scripts_func_closeall) scripts_menu_close.Disable("全部关闭(&C)") scripts_menu_close.Add() scripts_menu_reload.Delete scripts_menu_reload.Add("全部重载(&R)", scripts_func_reloadall) scripts_menu_reload.Disable("全部重载(&R)") scripts_menu_reload.Add() scripts_menu_edit.Delete scripts_menu_edit_more_self := Menu() scripts_menu_edit_more := Menu() scripts_menu_edit.Add("程序配置(&A)", scripts_menu_edit_more_self) scripts_menu_edit.Add("更多脚本(&E)", scripts_menu_edit_more) scripts_menu_edit.Add() Loop Files (WorkDir_Scripts "*.ahk") ;循环查找脚本 { SplitPath(A_LoopFileFullPath, &name, &dir, &ext, &name_no_ext, &drive) script_name := (ext == "ahk") ? name_no_ext : name_no_ext "__L" ; ahkl的脚本加上后辍 If (InStr(name, "Autohotkey")) ;脚本名包含'Autohotkey' { scripts_menu_edit_more_self.Add(script_name, scripts_func_edit.Bind(,,A_LoopFileFullPath)) ; 编辑脚本>>>程序配置 } Else If (InStr(name, "!")) ;脚本名包含'!' { If WinExist(A_LoopFileName "ahk_class AutoHotkey") ;脚本在运行:编辑>更多、关闭、重载 { scripts_menu_edit_more.Add(script_name, scripts_func_edit.Bind(,,A_LoopFileFullPath)) ; 编辑脚本>>>更多脚本 scripts_menu_close.Add(script_name, scripts_func_close.Bind(,,A_LoopFileFullPath)) ; 关闭脚本 scripts_menu_reload.Add(script_name, scripts_func_reload.Bind(,,A_LoopFileFullPath)) ; 重载脚本 } Else ;脚本未运行:编辑>更多、启动>更多 { scripts_menu_edit_more.Add(script_name, scripts_func_edit.Bind(,,A_LoopFileFullPath)) ; 编辑脚本>>>更多脚本 scripts_menu_open_more.Add(script_name, scripts_func_open.Bind(,,A_LoopFileFullPath)) ; 启动脚本>>>更多脚本 } } Else ;脚本文件名正常 { If WinExist(A_LoopFileName "ahk_class AutoHotkey") ;脚本在运行:编辑、关闭、重载 { scripts_menu_edit_more.Add(script_name, scripts_func_edit.Bind(,,A_LoopFileFullPath)) ; 编辑脚本 scripts_menu_close.Add(script_name, scripts_func_close.Bind(,,A_LoopFileFullPath)) ; 关闭脚本 scripts_menu_reload.Add(script_name, scripts_func_reload.Bind(,,A_LoopFileFullPath)) ; 重载脚本 } Else ;脚本未运行:编辑、启动 { scripts_menu_edit.Add(script_name, scripts_func_edit.Bind(,,A_LoopFileFullPath)) ; 编辑脚本 scripts_menu_open.Add(script_name, scripts_func_open.Bind(,,A_LoopFileFullPath)) ; 启动脚本 } } } Loop Files (WorkDir "\Help\*.chm") ;循环查找帮助文件 { SplitPath(A_LoopFileFullPath, &name, &dir, &ext, &name_no_ext, &drive) scripts_menu_help.Add(name_no_ext, scripts_func_open.Bind(,,A_LoopFileFullPath)) }
scripts_func_show(ItemName, ItemPos, MyMenu) ;显示主菜单 { ScriptManager_Loop() Sleep(0) Tray.Show }
scripts_func_dir(ItemName, ItemPos, MyMenu) ;打开主脚本路径 { Run(WorkDir) }
scripts_func_help(ItemName, ItemPos, MyMenu) ;打开帮助文件 { Run(WorkDir "\autohotkey.chm", , "max") }
scripts_func_pause(ItemName, ItemPos, MyMenu) ;暂停主脚本 { ; WM_COMMAND := 0x011 ; ID_FILE_SUSPEND := 65305 ; PostMessage WM_COMMAND, ID_FILE_SUSPEND,,, "X:\WebDAV\AutoHotkey\Scripts\AutoHotkey-CapsLayout!.ahk"
Suspend(-1) if (A_IsSuspended = 1) ;脚本已暂停 { Tray.Rename("暂停程序(&P)", "继续程序(&P)") ;更改菜单文本 A_IconTip := "AutoHotkey-Pause" ;更改任务栏鼠标提示 TraySetIcon(WorkDir_Resource "\ICO\AutoHotkey-Pause.ico" ,,1) ;更改任务栏图标 } Else ;脚本已继续 { Tray.Rename("继续程序(&P)", "暂停程序(&P)") ;更改菜单文本 A_IconTip := "AutoHotkey" ;更改任务栏鼠标提示 TraySetIcon(WorkDir_Resource "\ICO\AutoHotkey.ico") ;更改任务栏图标 }
scripts_func_reload_self(ItemName, ItemPos, MyMenu) ;重启主脚本 { Reload() }
scripts_func_open(ItemName, ItemPos, Path, MyMenu) ;打开选中脚本 { Run(Path) }
scripts_func_close(ItemName, ItemPos, Path, MyMenu) ;关闭选中脚本 { WinClose(Path "ahk_class AutoHotkey") }
scripts_func_closeall(ItemName, ItemPos, MyMenu) ;关闭所有脚本 { ; For ScriptArrayTemp_Index, ScriptArrayTempValue in ScriptArrayTemp ; { ; thisscript := ScriptArrayFile["Name" ScriptArrayTemp_Index] ; If ScriptArrayTemp_Value = 1 ; { ; WinClose(thisScript "ahk_class AutoHotkey") ; ScriptArrayTemp[ScriptArrayTemp_Index] := 0 ; ; ScriptsMenuName := StrReplace(thisscript, ".ahk",,,, 1) ; ScriptsMenuName := thisscript ; if InStr(thisscript, "!") ; { ; scripts_menu_open_more.Add(ScriptsMenuName, scripts_func_open.Bind(,,A_LoopFileFullPath)) ; scripts_menu_close.Delete(ScriptsMenuName) ; scripts_menu_reload.Delete(ScriptsMenuName) ; } ; Else ; { ; scripts_menu_open.Add(ScriptsMenuName, scripts_func_open.Bind(,,A_LoopFileFullPath)) ; scripts_menu_close.Delete(ScriptsMenuName) ; scripts_menu_reload.Delete(ScriptsMenuName) ; } ; } ; } }
scripts_func_reload(ItemName, ItemPos, Path, MyMenu) ;重启选中脚本 { WinClose(Path) Sleep(1000) Run(Path) }
scripts_func_reloadall(ItemName, ItemPos, MyMenu) ;重启所有脚本 { }
scripts_func_edit(ItemName, ItemPos, Path, MyMenu) ;编辑选中脚本 { ; msgbox(Path) Run("X:\Program\EverEdit\EverEdit.exe "" Path """) }
"" Path "
`
1.x 的时候,用这个用的多: https://www.dcmembers.com/justice/download/axem/ 也发上来供参考。
ahk v1
https://github.com/WeiWan5675/Ahk-Script-Manager
AHK管理软件使用 文件名前缀有 "!" , 则需要手动启动 文件名前缀无 "!" , 则随AHK管理软件的自动而启动
` ; #SingleInstance ; Persistent
; SetTitleMatchMode 2 ; DetectHiddenWindows 1
; ScriptArrayTemp := Map() ; ScriptArrayFile := Map()
; SplitPath(A_AhkPath, , &WorkDir) ; 设置工作路径 ; WorkDir_Lib := WorkDir . "\Lib\" ; WorkDir_Scripts := WorkDir . "\Scripts\" ; WorkDir_Shortcut := WorkDir . "\Scripts\Shortcut\" ; WorkDir_Resource := WorkDir . "\Scripts\Resource\"
ScriptManager_Menu: { scripts_menu_open_more := Menu() scripts_menu_open_more.Add() scripts_menu_open_more.Delete()
}
ScriptManager_Loop()
Include "%A_ScriptDir%\AutoHotkey-HurryRun!.ahk"
Return
ScriptManager_Loop() { scripts_menu_open.Delete scripts_menu_open_more := Menu() scripts_menu_open.Add("更多脚本(&Q)", scripts_menu_open_more) scripts_menu_open.Add
}
scripts_func_show(ItemName, ItemPos, MyMenu) ;显示主菜单 { ScriptManager_Loop() Sleep(0) Tray.Show }
scripts_func_dir(ItemName, ItemPos, MyMenu) ;打开主脚本路径 { Run(WorkDir) }
scripts_func_help(ItemName, ItemPos, MyMenu) ;打开帮助文件 { Run(WorkDir "\autohotkey.chm", , "max") }
scripts_func_pause(ItemName, ItemPos, MyMenu) ;暂停主脚本 { ; WM_COMMAND := 0x011 ; ID_FILE_SUSPEND := 65305 ; PostMessage WM_COMMAND, ID_FILE_SUSPEND,,, "X:\WebDAV\AutoHotkey\Scripts\AutoHotkey-CapsLayout!.ahk"
}
scripts_func_reload_self(ItemName, ItemPos, MyMenu) ;重启主脚本 { Reload() }
scripts_func_open(ItemName, ItemPos, Path, MyMenu) ;打开选中脚本 { Run(Path) }
scripts_func_close(ItemName, ItemPos, Path, MyMenu) ;关闭选中脚本 { WinClose(Path "ahk_class AutoHotkey") }
scripts_func_closeall(ItemName, ItemPos, MyMenu) ;关闭所有脚本 { ; For ScriptArrayTemp_Index, ScriptArrayTempValue in ScriptArrayTemp ; { ; thisscript := ScriptArrayFile["Name" ScriptArrayTemp_Index] ; If ScriptArrayTemp_Value = 1 ; { ; WinClose(thisScript "ahk_class AutoHotkey") ; ScriptArrayTemp[ScriptArrayTemp_Index] := 0 ; ; ScriptsMenuName := StrReplace(thisscript, ".ahk",,,, 1) ; ScriptsMenuName := thisscript ; if InStr(thisscript, "!") ; { ; scripts_menu_open_more.Add(ScriptsMenuName, scripts_func_open.Bind(,,A_LoopFileFullPath)) ; scripts_menu_close.Delete(ScriptsMenuName) ; scripts_menu_reload.Delete(ScriptsMenuName) ; } ; Else ; { ; scripts_menu_open.Add(ScriptsMenuName, scripts_func_open.Bind(,,A_LoopFileFullPath)) ; scripts_menu_close.Delete(ScriptsMenuName) ; scripts_menu_reload.Delete(ScriptsMenuName) ; } ; } ; } }
scripts_func_reload(ItemName, ItemPos, Path, MyMenu) ;重启选中脚本 { WinClose(Path) Sleep(1000) Run(Path) }
scripts_func_reloadall(ItemName, ItemPos, MyMenu) ;重启所有脚本 { }
scripts_func_edit(ItemName, ItemPos, Path, MyMenu) ;编辑选中脚本 { ; msgbox(Path) Run("X:\Program\EverEdit\EverEdit.exe
"" Path "
"") }`