/* 【RunMenuZz】超轻便自由的快速启动应用工具 联系:hui0.0713@gmail.com 讨论QQ群:3222783、271105729、493194474 by Zz @2016.11.06 */ #Persistent ;~让脚本持久运行 #NoEnv ;~不检查空变量为环境变量 #SingleInstance,Force ;~运行替换旧实例 ListLines,Off ;~不显示最近执行的脚本行 SetBatchLines,-1 ;~脚本全速执行(默认10ms) SetControlDelay,0 ;~控件修改命令自动延时(默认20) SetWorkingDir,%A_ScriptDir% ;~脚本当前工作目录 SplitPath,A_ScriptFullPath,,,,fileNotExt iniFile:=fileNotExt ".ini" IfNotExist,%iniFile% gosub,iniFileWrite gosub,MenuTray MenuObj:=Object() menuRoot:=Object() menuRoot.Insert("AppMenu") menuLevel:=1 ;~;[设定自定义显示菜单热键] IniRead,menuKey,%iniFile%,key try{ Hotkey,%menuKey%,MenuShow,On }catch{ MsgBox,1,,[key]`n%menuKey%`t<—热键语法不正确`n`n`n详细请参照AutoHotkey按键列表,需要打开吗? IfMsgBox OK Run,http://ahkcn.sourceforge.net/docs/KeyList.htm return } ;~;[读取软件安装目录下所有exe] IniRead,appPath,%iniFile%,appPath Loop,parse,appPath,`n { IfExist,%A_LoopField% { Loop,%A_LoopField%*.exe,0,1 { fileName:=RegExReplace(A_LoopFileName,"i).exe$","") MenuObj[(fileName)]:=A_LoopFileLongPath } }else{ MsgBox,路径不对: %A_LoopField% } } ;~;[读取自定义树形菜单设置] IniRead,menuName,%iniFile%,menuName Loop,parse,menuName,`n { if(RegExMatch(A_LoopField,"^-")){ ;~;[生成目录树层级结构] menuItem:=RegExReplace(A_LoopField,"^-+") menuLevel:=StrLen(RegExReplace(A_LoopField,"(^-+).*","$1")) if(menuItem){ Menu,%menuItem%,add Menu,% menuRoot[menuLevel],add,%menuItem%,:%menuItem% menuLevel+=1 menuRoot[menuLevel]:=menuItem }else if(menuRoot[menuLevel]){ Menu,% menuRoot[menuLevel],Add } }else if(InStr(A_LoopField,"|")){ ;~;[生成有前缀备注的应用] menuDiy:=StrSplit(A_LoopField,"|") appName:=RegExReplace(menuDiy[2],"i).exe$") if(MenuObj[appName]){ MenuObj[menuDiy[1]]:=MenuObj[appName] }else{ MenuObj[menuDiy[1]]:=menuDiy[2] } MenuAdd(menuRoot[menuLevel],menuDiy[1]) }else if(RegExMatch(A_LoopField,"i)^(\\|.:\).*?.exe$") && FileExist(A_LoopField)){ ;~;[生成完全路径的应用] SplitPath,A_LoopField,fileName,,,nameNotExt MenuObj[nameNotExt]:=A_LoopField MenuAdd(menuRoot[menuLevel],nameNotExt) }else{ ;[生成已取到的应用] appName:=RegExReplace(A_LoopField,"i).exe$") if(!MenuObj[appName]) MenuObj[appName]:=A_LoopField MenuAdd(menuRoot[menuLevel],appName) } } if(ini){ TrayTip,,RunMenuZz菜单初始化完成,3,1 Run,%iniFile% } ini=true return ;~;[生成菜单] MenuAdd(menuName,menuItem){ global MenuObj Menu,%menuName%,add,%menuItem%,MenuRun try { Menu,%menuName%,Icon,%menuItem%,% MenuObj[(menuItem)],0 } catch e { ;~ Menu,%MenuName%,Delete,%menuItem% } } ;~;[显示菜单] MenuShow: if(!ini){ TrayTip,请不要太急,RunMenuZz菜单正在生成中...再试一下,3,1 return } try{ Menu,% menuRoot[1],Show }catch{ MsgBox,菜单显示错误,请检查%iniFile%中[menuName]下面的菜单配置 } return ;~;[菜单运行] MenuRun: Run,% MenuObj[(A_ThisMenuItem)] return ;~;[托盘菜单] MenuTray: Menu,Tray,NoStandard Menu,Tray,add,重启(&R),Menu_Reload Menu,Tray,add Menu,Tray,add,挂起(&S),Menu_Suspend Menu,Tray,add,暂停(&A),Menu_Pause Menu,Tray,add,退出(&X),Menu_Exit Menu,Tray,Default,重启(&R) Menu,Tray,Click,1 return Menu_Reload: Reload return Menu_Suspend: Menu,tray,ToggleCheck,挂起(&S) Suspend return Menu_Pause: Menu,tray,ToggleCheck,暂停(&A) Pause return Menu_Exit: ExitApp return ;~;[配置生成] iniFileWrite: ini:=true FileAppend,% ";【RunMenuZz】超轻便自由的快速启动应用工具`n;联系:hui0.0713@gmail.com 讨论QQ群:3222783、271105729、493194474`n;by Zz @2016.11.06`n;初次使用请先按一下F1显示菜单`n",%iniFile% FileAppend,% "[key]`nF1`n;【自定义显示菜单热键】参照AutoHotkey按键列表`n;单键如:【``】【F1】【LWin】【RAlt】【AppsKey】`n;组合键如:左Alt+z:【<!z】左Win+z:【<#z】左Ctrl+``:【<^``】右Shift+/:【>+/】`n`n",%iniFile% FileAppend,% "[appPath]`n;【软件安装根目录】`n;已加入系统[运行]路径的目录无需添加,如:C:Windows的应用`nC:Program Files\`nC:Program Files (x86)\`n`n[menuName]`n;【自定义树形启动菜单】`n;如果有多个同名应用,请加上全路径`n;目录前-为1级目录,--为2级以此类推,分隔符亦是如此`n",%iniFile% FileAppend,% "cmd.exe`n-`n-app`n计算器|calc.exe`n--img`n 画图|mspaint.exe`n ---`n 截图|SnippingTool.exe`n--sys`n ---media`n wmplayer.exe`n--佳软`n StrokesPlus.exe`n TC|Totalcmd64.exe`n Everything.exe`n-edit`n notepad.exe`n 写字板|wordpad.exe`n-`nIE(&E)|C:Program FilesInternet Exploreriexplore.exe`n-`n设置|Control.exe`n",%iniFile% return