├── ICO ├── 默认.ini ├── Q-Dir.ico ├── dopus.ico ├── 程序图标.ico ├── Totalcmd.ico ├── XYplorer.ico ├── doublecmd.ico ├── DoubleCommander.ico └── 常用路径写法说明.txt ├── XiaoYao_快速跳转.exe ├── 辅助 ├── Everything.dll ├── Everything64.dll ├── get_tabs.lua ├── 外部调用跳转.ahk ├── 解决菜单不消失.ahk ├── 设置默认路径.ahk ├── 设置更多子分类常用路径.ahk ├── 自动弹出常驻窗口.ahk ├── 用户设置GUI.ahk └── 常驻跟随窗口.ahk ├── XiaoYao_快速跳转.ahk ├── README.md ├── 使用说明(必看).txt └── 主程序.ahk /ICO/默认.ini: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lch319/XiaoYao_QuickJump/HEAD/ICO/默认.ini -------------------------------------------------------------------------------- /ICO/Q-Dir.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lch319/XiaoYao_QuickJump/HEAD/ICO/Q-Dir.ico -------------------------------------------------------------------------------- /ICO/dopus.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lch319/XiaoYao_QuickJump/HEAD/ICO/dopus.ico -------------------------------------------------------------------------------- /ICO/程序图标.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lch319/XiaoYao_QuickJump/HEAD/ICO/程序图标.ico -------------------------------------------------------------------------------- /ICO/Totalcmd.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lch319/XiaoYao_QuickJump/HEAD/ICO/Totalcmd.ico -------------------------------------------------------------------------------- /ICO/XYplorer.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lch319/XiaoYao_QuickJump/HEAD/ICO/XYplorer.ico -------------------------------------------------------------------------------- /XiaoYao_快速跳转.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lch319/XiaoYao_QuickJump/HEAD/XiaoYao_快速跳转.exe -------------------------------------------------------------------------------- /ICO/doublecmd.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lch319/XiaoYao_QuickJump/HEAD/ICO/doublecmd.ico -------------------------------------------------------------------------------- /辅助/Everything.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lch319/XiaoYao_QuickJump/HEAD/辅助/Everything.dll -------------------------------------------------------------------------------- /辅助/Everything64.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lch319/XiaoYao_QuickJump/HEAD/辅助/Everything64.dll -------------------------------------------------------------------------------- /ICO/DoubleCommander.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lch319/XiaoYao_QuickJump/HEAD/ICO/DoubleCommander.ico -------------------------------------------------------------------------------- /XiaoYao_快速跳转.ahk: -------------------------------------------------------------------------------- 1 | #NoEnv 2 | ;#Persistent ;~让脚本持久运行 3 | #NoTrayIcon ;~不显示托盘图标 4 | #SingleInstance,Force ;~运行替换旧实例 5 | 6 | run,"%A_ScriptDir%\XiaoYao_快速跳转.exe" "%A_ScriptDir%\主程序.ahk" 7 | /* 8 | OnExit, 退出时运行 9 | Return 10 | 11 | 退出时运行: 12 | run,%comSpec% /c taskkill /f /im XiaoYao_快速跳转.exe,,Hide 13 | ExitApp 14 | Return 15 | */ -------------------------------------------------------------------------------- /辅助/get_tabs.lua: -------------------------------------------------------------------------------- 1 | local tmp = os.tmpname() 2 | 3 | local success, result = pcall(function() 4 | return DC.ExecuteCommand("cm_SaveTabs", "filename=" .. tmp, "savedirhistory=0") 5 | end) 6 | 7 | local file = io.open(tmp, 'r') 8 | if file then 9 | local xml = file:read("*a") 10 | file:close() 11 | local out = io.open(os.getenv("TEMP") .. "\\dc_tabs_output.txt", 'w') 12 | if out then 13 | for path in xml:gmatch("([^<]+)") do 14 | out:write(path, "\n") 15 | end 16 | out:close() 17 | end 18 | os.remove(tmp) 19 | end -------------------------------------------------------------------------------- /辅助/外部调用跳转.ahk: -------------------------------------------------------------------------------- 1 | #NoEnv 2 | #SingleInstance Force ;~运行替换旧实例 3 | #NoTrayIcon ;~不显示托盘图标 4 | #Include %A_ScriptDir%\公用函数.ahk 5 | SetWinDelay, -1 ;设置在每次执行窗口命令,使用 -1 表示无延时 6 | SetBatchLines, -1 ;让操作以最快速度进行. 7 | SetTimer, ExitScript, -5000 ; 设置5秒后执行退出函数 8 | 9 | 10 | global 参数1 := A_Args[1] ;第一个参数是另存为窗口的句柄 11 | global 参数2 := A_Args[2] ;第二个参数是跳转目标路径 12 | global 参数3 := A_Args[3] 13 | global 参数4 := A_Args[4] 14 | ;MsgBox, 外部调用跳转 15 | if not (参数1="") 16 | 跳转方式4(参数1,参数2,参数3) 17 | ExitApp 18 | 19 | 20 | RemoveToolTip: 21 | ToolTip 22 | return 23 | 24 | ExitScript: 25 | ExitApp ; 退出脚本 26 | return 27 | /* 28 | 29 | F1:: 30 | 31 | SelectedPath:= "C:\Users\Administrator\Downloads" 32 | DialogHwnd:= WinExist("A") 33 | MsgBox, 1 34 | 跳转方式4(DialogHwnd,SelectedPath) 35 | return 36 | */ -------------------------------------------------------------------------------- /ICO/常用路径写法说明.txt: -------------------------------------------------------------------------------- 1 | 一、常用路径填写格式【示例】: 2 | 3 | D:\下载 4 | D:\软件 5 | %A_Desktop% 6 | %A_MyDocuments% 7 | ahk_exe QQ.exe=D:\软件\安装版 8 | ahk_exe QQ.exe=D:\软件\单文件 9 | ahk_exe dopus.exe=D:\软件\绿色版 10 | ahk_exe Weixin.exe=D:\软件\绿色版 11 | 12 | 13 | 1.支持"程序专属路径",仅在指定程序才显示的常用路径,达到不同程序显示不同路径的目的。 14 | 填写格式为:ahk_exe 程序名=文件夹路径 比如:ahk_exe QQ.exe=C:\ 15 | 16 | 2.支持替换双斜杠\\ 单反斜杠/ 为单斜杠\ 并移除双引号[默认关闭,需高级设置里手动开启] 17 | D:\\软件\\XiaoYao_快速跳转 18 | D:/软件/QQ 19 | "D:\软件\Weixin" 20 | 21 | 3.常见的ahk内置变量:更多请查阅 https://wyagd001.github.io/zh-cn/docs/Variables.htm#BuiltIn 22 | A_Desktop 用户的"桌面"文件夹路径 23 | A_MyDocuments 用户的"我的文档"文件夹路径 24 | A_AppData 当前用户的应用数据文件夹路径(例如 C:\Users\Username\AppData\Roaming),常用于存放配置文件 25 | A_ScriptDir 当前脚本所在目录的绝对路径,不包含末尾的反斜杠 26 | 27 | A_YYYY 4 位数表示的当前年份(例如 2004) 28 | A_MM 2 位数表示的当前月份(01-12) 29 | A_DD 2 位数表示的当前月份的日期(01-31) 30 | A_Hour 在 24 小时制(例如, 17 表示 5pm) 中 2 位数表示的当前小时数(00-23) 31 | A_Min 2 位数表示的当前分钟数(00-59). 32 | A_Sec 2 位数表示的当前秒数(00-59). -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # XiaoYao_快速跳转 - 文件对话框路径直达利器 2 | 3 | > 在打开或保存对话框中,快速跳转到当前 资源管理器/TC/DO/XY/Q-Dir中打开的文件夹路径 4 | 5 |

6 | 功能演示 7 |
8 | ▶️ 视频演示 | 9 | 💬 QQ群 10 |

11 | 12 | 13 | ## 核心功能 14 | 在 **打开/保存对话框** 中一键直达: 15 | - 资源管理器 / Total Commander (TC) / Double Commander (DC) / **Directory Opus (DO)** / XYplorer / Q-Dir 的当前路径 16 | - ⭐ 特别适配 DO 文件管理器的收藏夹功能 17 | 18 | ## 功能亮点 19 | 20 | ### 智能跟随 21 | - 在文件对话框激活时,自动弹出路径跳转窗口(可设置)。 22 | 23 | ### 快捷键操作 24 | - 仅文件对话框生效的快捷键。可在“设置”中自由修改快捷键。 25 | - 支持设置全局快捷键,随时可用。 26 | 27 | | 快捷键 | 功能描述 | 28 | | ---------- | -------------------------------------------------------- | 29 | | `Ctrl + G` | 呼出路径菜单(包含常用路径、资源管理器路径、DO收藏夹等) | 30 | | `Ctrl + F` | 直接跳转到当前活动路径 | 31 | | `Ctrl + D` | 呼出常驻跟随窗口 | 32 | 33 | ### 智能特性 34 | 35 | - **路径记忆**: 可设置每次打开“另存为”对话框时,自动跳转到上次使用的路径或固定的默认路径。([自动跳转默认路径 图]) 36 | 37 | ![自动跳转默认路径 图](https://raw.githubusercontent.com/lch319/cangku1/refs/heads/master/%E8%87%AA%E5%8A%A8%E8%B7%B3%E8%BD%AC%E5%88%B0%E9%BB%98%E8%AE%A4.jpg) 38 | 39 | - **广泛兼容**: 支持多种常见文件对话框类型([支持的窗口类型图])。 40 | 41 | ![支持窗口类型 图](https://raw.githubusercontent.com/lch319/cangku1/refs/heads/master/%E6%94%AF%E6%8C%81%E7%AA%97%E5%8F%A3%E6%8B%BC%E5%9B%BE.jpg) 42 | 43 | - **灵活扩展**: 对于不支持自动弹出的特殊对话框,支持在设置中手动添加窗口规则([手动添加窗口动态图])。 44 | 45 | ![手动添加窗口动态图](https://github.com/lch319/cangku1/blob/master/%E6%89%8B%E5%8A%A8%E6%B7%BB%E5%8A%A0%E7%AA%97%E5%8F%A3.gif?raw=true) 46 | 47 | - **专属常用路径**:仅在指定程序才显示的常用路径,达到不同程序显示不同路径的目的 48 | 49 | ![专属路径](https://github.com/user-attachments/assets/a5b439bc-0575-469b-8017-362d7d5c5da6) 50 | 51 | 52 | - **支持深色主题**:可设置跟随系统自动切换 53 | 54 | 暗色主题 55 | 56 | ### 更多使用说明 57 | 58 | **在Double Commander中的设置步骤**: 59 | 60 | 1.进入【配置】-【选项】-【工具栏】,点击“插入新的按钮” 61 | 2.命令选择 cm_ExecuteScript,参数填写 get_tabs.lua 的完整路径(例如 D:\XiaoYao_快速跳转\辅助\get_tabs.lua),热键可设置为 Ctrl+Shift+F12 62 | 3.在【配置】-【选项】-【杂项】中,勾选“在主窗口标题栏中显示当前目录” 63 | 64 | # 致谢 (灵感与参考): 65 | 66 | 本工具的开发借鉴或使用了以下优秀项目的思路和代码,在此深表感谢: 67 | 68 | - RunAny: https://github.com/hui-Zz/RunAny 69 | 70 | - QuickSwitch: https://github.com/gepruts/QuickSwitch 71 | 72 | - Autohotkey 社区讨论: https://www.autohotkey.com/boards/viewtopic.php?f=6&t=124771 73 | -------------------------------------------------------------------------------- /使用说明(必看).txt: -------------------------------------------------------------------------------- 1 | 功能说明:在打开或保存对话框中,快速定位到当前 资源管理器/TC/DO/XY/Q-Dir中打开的文件夹路径 2 | 3 | 在 打开或保存对话框 窗口界面 按快捷键 "Ctrl + G" 呼出路径菜单。可在“设置”里修改呼出热键,也可设置全局呼出 4 | 按快捷键 "Ctrl + F" 可一键跳转到当前活动路径 5 | 按快捷键 "Ctrl + D" 可呼出常驻跟随窗口 6 | 7 | 注意:如果出现跳转失败,有以下解决办法 8 | 1.软件权限原因,可在设置里勾选管理员启动 9 | 2.可先复制路径到剪切板再手动粘贴 10 | 3.在“设置-高级设置”里,切换其他“跳转方式”,比如 跳转方式=2 11 | 12 | 关于数据备份与升级:保存 个人配置.ini ,替换到新版本 13 | 14 | 20251222 15 | [完成]集成everything(简称ev)的搜索功能。默认开启,只需ev在后台运行即可。 16 | [完成]常驻跟随窗口 新增 单击即可运行跳转 的选项(设置-高级设置-单击运行跳转) 17 | [完成]常驻跟随窗口 新增一个名称列(开启 "目录名在前" 后可见),并且可设置名称列的最大显示宽度。 18 | [完成]常驻跟随窗口 新增水平滚动条。 19 | [完成]修复一些已知bug。 20 | 21 | 20251213 22 | [完成]新增:深色(暗色)主题:支持在设置中选择“跟随系统自动切换”,或手动设置为“始终浅色”/“始终深色”。(感谢 @windwhim 提供技术支持) 23 | [完成]新增:常驻跟随窗口 顶部按钮自定义:可对固定显示的7个按钮设置显示名称,并支持单独隐藏或显示。 24 | [完成]新增:常用路径分类扩展:现支持添加更多独立子分类,方便用户按需整理个人常用路径。 25 | [完成]优化与调整:大量代码进行优化与精简,提升运行效率及可维护性。 26 | 27 | 20251207 28 | [完成]新增:现已兼容 Double Commander(感谢 @H1DDENADM1N 提供技术支持) 29 | 在 DoubleCmd 中的设置步骤如下: 30 | 1.进入【配置】-【选项】-【工具栏】,点击“插入新的按钮” 31 | 2.命令选择 cm_ExecuteScript,参数填写 get_tabs.lua 的完整路径(例如 D:\XiaoYao_快速跳转\辅助\get_tabs.lua),热键可设置为 Ctrl+Shift+F12 32 | 3.在【配置】-【选项】-【杂项】中,勾选“在主窗口标题栏中显示当前目录” 33 | [完成]修复了当前窗口处于最大化时,使用全局热键呼出不显示的 bug 34 | [完成]修复了在多显示屏环境下界面显示错位的问题 (感谢 QQ群友@程。测试) 35 | 36 | 20251112 37 | [完成]新增:管理员运行程序 38 | 39 | 20251019 40 | [完成]新增:常用路径支持"程序专属路径",仅在指定程序才显示的常用路径,达到不同程序显示不同路径的目的。 41 | 填写格式为:ahk_exe 程序名=文件夹路径 比如:ahk_exe QQ.exe=C:\ 42 | [完成]新增:常用路径填写相关。支持替换双斜杠\\ 单反斜杠/ 为单斜杠\ 并移除双引号[默认关闭,需高级设置里手动开启] 43 | 44 | 20250903 45 | [完成]新增:失效路径显示设置,默认开启。可在 设置-高级设置 里关闭,关闭后常用路径及do收藏夹里的失效路径将不显示 46 | [完成]新增:屏蔽xiaoyao程序列表(在禁用的程序中,将禁止所有热键和自动弹出) 47 | [完成]新增:窗口黑名单(禁止自动弹出的窗口) 48 | [完成]新增:支持网络路径比如 ftp://192.168.11.122:3711/ 49 | [完成]新增:默认路径的填写支持ahk变量 50 | [完成]修复:当开启自动跳转到默认路径时,偶现的cpu飙升bug 51 | 52 | 20250812 53 | [完成]新增:默认路径。当开启"自动跳转到默认路径"后,每次打开另存为对话框时自动跳转到上次跳转的路径,也可设置只固定跳转一个路径 54 | [完成]新增:支持更多第三方文件管理器。 XYplorer、Q-DIR 55 | [完成]新增:更多跳转方式。 56 | [完成]优化代码,大量重构代码 57 | 58 | 20250730 59 | [完成]新增:自动弹出次数和手动弹出次数统计 60 | [完成]新增:任务栏托盘图标支持隐藏/显示 61 | [完成]新增:用户自定义添加的窗口列表支持热键触发 62 | [完成]新增:常驻菜单的路径列表 行距 设置 63 | [完成]优化对旧式对话框的跳转支持 64 | [完成]右键菜单新增直接粘贴当前路径功能 65 | [完成]常驻窗口 初始文本框内容 设置,如果选择了 当前打开,但后台无当前打开路径时,初始文本内容将显示 常用路径 66 | 67 | 20250727 68 | [完成]常驻窗口增加 自定义 添加 对话框窗口 的设置 69 | [完成]支持文件夹树类型的对话框 70 | [完成]常驻窗口的置顶功能新增 粘贴, 点击该按钮,将复制当前选中的路径到剪切板,并粘贴到当前窗口的文本框中 71 | [完成]常驻窗口可自定义初始文本框显示的内容 72 | [完成]菜单中 常用路径,超过9个会被列入二级菜单。现增加高级设置 允许自定义一级菜单显示数量 73 | 74 | 20250725 75 | [完成]增加全局热键 呼出菜单 呼出常驻[全局版] 鼠标位置 76 | [完成]修复 右键 复制到剪切板存留<> 77 | [完成]快捷菜单新增 父窗口X + 父窗口W的相对位置 鼠标位置(或者不填) 78 | [完成]可以自定义 双击要执行什么操作(全局版) 复制到剪切板还是打开 79 | [完成]可设置文件夹名称显示在前 80 | 81 | 20250615 82 | [完成]关于 添加致谢 83 | https://github.com/gepruts/QuickSwitch 84 | https://github.com/ThioJoe/ThioJoe-AHK-Scripts/releases 85 | https://www.autohotkey.com/boards/viewtopic.php?f=6&t=101054 -------------------------------------------------------------------------------- /辅助/解决菜单不消失.ahk: -------------------------------------------------------------------------------- 1 | #SingleInstance,Force ;~运行替换旧实例 2 | #NoTrayIcon ;~不显示托盘图标 3 | #Persistent ;;~让脚本持久运行 4 | FileAppend,%A_ScriptHwnd%`n,%A_Temp%\后台隐藏运行脚本记录.txt 5 | Loop 6 | { 7 | if WinExist("ahk_class #32768 ahk_exe " A_AhkPath){ 8 | WinGet, active_id, ID, ahk_class #32768 ahk_exe %A_AhkPath% 9 | KeyWait, LButton, D 10 | ;MsgBox, 3 11 | MouseGetPos,,, Win 12 | WinGetClass, this_class, ahk_id %Win% 13 | WinGet,path,ProcessPath ,ahk_id %Win% 14 | if not (this_class = "#32768" and path = A_AhkPath){ 15 | WinClose,ahk_id %active_id% 16 | ;MsgBox, 测试 17 | } 18 | } 19 | Sleep, 100 20 | } 21 | 22 | ;方法1占cpu大----------------------------------------- 23 | /* 24 | ;MsgBox, %A_AhkPath% 25 | SetTimer,检测窗口关闭, 10 26 | 27 | ;Return 28 | 检测窗口关闭: 29 | WinWait, ahk_class #32768 ahk_exe %A_AhkPath% 30 | WinGet, active_id, ID, ahk_class #32768 ahk_exe %A_AhkPath% 31 | 32 | KeyWait, LButton, D 33 | ;MsgBox, 3 34 | MouseGetPos,,, Win 35 | WinGetClass, this_class, ahk_id %Win% 36 | WinGet,path,ProcessPath ,ahk_id %Win% 37 | ;MsgBox, %active_id%`n%Win% `n %path% 38 | While (this_class = "#32768" and path = A_AhkPath){ 39 | KeyWait, LButton, D 40 | MouseGetPos,,, Win 41 | WinGetClass, this_class, ahk_id %Win% 42 | WinGet,path,ProcessPath ,ahk_id %Win% 43 | ;MsgBox, 1 44 | } 45 | ;Sleep, 100 46 | WinClose,ahk_id %active_id% 47 | Win:="" 48 | this_class:="" 49 | path:="" 50 | MsgBox, 2 51 | Return 52 | */ 53 | 54 | /* 55 | ;方法2占cpu大----------------------------------------- 56 | SetTimer,Label_ClearMEM,-1000 57 | Loop 58 | { 59 | WinWait, ahk_class #32768 ahk_exe %A_AhkPath% 60 | WinGet, active_id, ID, ahk_class #32768 ahk_exe %A_AhkPath% 61 | 62 | KeyWait, LButton, D 63 | ;MsgBox, 3 64 | MouseGetPos,,, Win 65 | WinGetClass, this_class, ahk_id %Win% 66 | WinGet,path,ProcessPath ,ahk_id %Win% 67 | ;MsgBox, %active_id%`n%Win% `n %path% 68 | While (this_class = "#32768" and path = A_AhkPath){ 69 | KeyWait, LButton, D 70 | MouseGetPos,,, Win 71 | WinGetClass, this_class, ahk_id %Win% 72 | WinGet,path,ProcessPath ,ahk_id %Win% 73 | ;MsgBox, 1 74 | } 75 | ;Sleep, 100 76 | WinClose,ahk_id %active_id% 77 | Win:="" 78 | this_class:="" 79 | path:="" 80 | ;MsgBox, 2 81 | } 82 | Return 83 | 84 | Label_ClearMEM: ;清理内存 85 | pid:=() ? DllCall("GetCurrentProcessId") : pid 86 | h:=DllCall("OpenProcess", "UInt", 0x001F0FFF, "Int", 0, "Int", pid) 87 | DllCall("SetProcessWorkingSetSize", "UInt", h, "Int", -1, "Int", -1) 88 | DllCall("CloseHandle", "Int", h) 89 | Return 90 | */ 91 | 92 | -------------------------------------------------------------------------------- /辅助/设置默认路径.ahk: -------------------------------------------------------------------------------- 1 | #SingleInstance,off 2 | #NoTrayIcon ;~不显示托盘图标 3 | #Persistent ;~让脚本持久运行 4 | #Include %A_ScriptDir%\公用函数.ahk 5 | 6 | FileAppend,%A_ScriptHwnd%`n,%A_Temp%\后台隐藏运行脚本记录.txt 7 | 窗口标题名:="XiaoYao_快速跳转【默认路径设置】" 8 | SplitPath, A_ScriptDir,, 软件配置路径 9 | ;软件配置路径:="D:\RunAny\PortableSoft\XiaoYao_快速跳转\XiaoYao_快速跳转" 10 | 11 | ;避免重复打开 12 | if (Single("设置默认路径")) { ;独一无二的字符串用于识别脚本,或者称为指纹? 13 | WinActivate, %窗口标题名% ahk_class AutoHotkeyGUI 14 | ExitApp 15 | } 16 | Single("设置默认路径") 17 | 18 | 默认路径:=ReplaceVars(Var_Read("默认路径","","基础配置",软件配置路径 "\个人配置.ini","是")) 19 | 深浅主题切换:=Var_Read("深浅主题切换","跟随系统","基础配置",软件配置路径 "\个人配置.ini","是") 20 | 21 | ; 创建 GUI 窗口 22 | ;Gui, Add, Text, x10 y10 w80 h20, 默认路径: 23 | ;gui, +AlwaysOnTop 24 | 25 | ;深色/浅色主题切换1【开始】--------------------------------- 26 | if (IsDarkMode() and 深浅主题切换="跟随系统") or (深浅主题切换="深色"){ 27 | Gui, Color, 0x202020, 0x202020 ; 深色背景 28 | gui, font, s10 c0xE0E0E0 ; 浅色字体 29 | } 30 | ;深色/浅色主题切换1【结束】--------------------------------- 31 | 32 | Gui,+HwndGui_winID2 33 | FileAppend,%Gui_winID2%`n,%A_Temp%\后台隐藏运行脚本记录.txt 34 | gui, font, s10 35 | Gui, Add, Text, x10 y15 , 每次打开对话框时自动跳转到默认路径 36 | Gui, Add, Edit, x10 y35 w300 vDefaultPath HwndBtn1, %默认路径% ; 初始值设为桌面路径 37 | Gui, Add, Button, x315 y33 w80 gBrowseFolder HwndBtn2, 浏览... 38 | Gui, Add, Button, x95 y70 w80 h30 gSaveSettings HwndBtn3, 保存 39 | Gui, Add, Button, x195 y70 w80 h30 gCancel HwndBtn4, 取消 40 | 41 | ;深色/浅色主题切换2【开始】--------------------------------- 42 | if (IsDarkMode() and 深浅主题切换="跟随系统") or (深浅主题切换="深色"){ 43 | Loop, 4 44 | { 45 | ; 根据系统主题设置标题栏颜色(适用于Windows 10+) 46 | if (A_OSVersion >= "10.0.17763" && SubStr(A_OSVersion, 1, 3) = "10.") { 47 | attr := A_OSVersion >= "10.0.18985" ? 20 : 19 48 | DllCall("dwmapi\DwmSetWindowAttribute", "ptr", Gui_winID2, "int", attr, "int*", 1, "int", 4) 49 | } 50 | DllCall("uxtheme\SetWindowTheme", "ptr", Btn%A_Index%, "str", "DarkMode_Explorer", "ptr", 0) 51 | } 52 | 53 | } 54 | 55 | Gui, Show, , %窗口标题名% 56 | return 57 | 58 | ; 浏览文件夹按钮动作 59 | BrowseFolder: 60 | FileSelectFolder, SelectedFolder,, 3, 请选择默认路径 61 | if (SelectedFolder != "") ; 确保用户没有取消选择 62 | { 63 | GuiControl,, DefaultPath, %SelectedFolder% 64 | } 65 | return 66 | 67 | ; 保存按钮动作 68 | SaveSettings: 69 | Gui, Submit, NoHide 70 | ; 获取输入框内容但不关闭窗口 71 | ; 这里可以添加保存路径的代码(如写入配置文件/注册表) 72 | ;MsgBox, 已保存默认路径: %DefaultPath% 73 | 74 | if (ErrorLevel || DefaultPath="" || !FileExist(DefaultPath)){ 75 | ;DefaultPath:= ReplaceVars(DefaultPath) 76 | IniWrite, %DefaultPath%, %软件配置路径%\个人配置.ini,基础配置,默认路径 77 | ExitApp 78 | ;MsgBox, 输入错误或路径不存在! 79 | }Else{ 80 | IniWrite, %DefaultPath%, %软件配置路径%\个人配置.ini,基础配置,默认路径 81 | ExitApp 82 | } 83 | return 84 | 85 | ; 取消按钮动作 86 | Cancel: 87 | GuiClose: 88 | ExitApp 89 | 90 | RemoveToolTip: 91 | ToolTip 92 | return -------------------------------------------------------------------------------- /辅助/设置更多子分类常用路径.ahk: -------------------------------------------------------------------------------- 1 | #SingleInstance,off 2 | #NoTrayIcon ;~不显示托盘图标 3 | #Persistent ;~让脚本持久运行 4 | #Include %A_ScriptDir%\公用函数.ahk 5 | 6 | FileAppend,%A_ScriptHwnd%`n,%A_Temp%\后台隐藏运行脚本记录.txt 7 | 窗口标题名:="XiaoYao_快速跳转【更多子分类常用路径】" 8 | SplitPath, A_ScriptDir,, 软件配置路径 9 | ;软件配置路径:="D:\RunAny\PortableSoft\XiaoYao_快速跳转\XiaoYao_快速跳转" 10 | 11 | ;避免重复打开 12 | if (Single("设置更多子分类常用路径")) { ;独一无二的字符串用于识别脚本,或者称为指纹? 13 | WinActivate, %窗口标题名% ahk_class AutoHotkeyGUI 14 | ExitApp 15 | } 16 | Single("设置更多子分类常用路径") 17 | 18 | loop 5 19 | { 20 | 常用路径开关%A_Index%:= Var_Read("常用路径开关" A_Index,"0","基础配置",软件配置路径 "\个人配置.ini","是") 21 | 常用路径名称%A_Index%:= Var_Read("常用路径名称" A_Index,"常用" A_Index,"基础配置",软件配置路径 "\个人配置.ini","是") 22 | 常用路径%A_Index%:= Var_Read("","","常用路径" A_Index,软件配置路径 "\个人配置.ini","是") 23 | 24 | } 25 | 26 | Gui,+HwndGui_winID2 27 | FileAppend,%Gui_winID2%`n,%A_Temp%\后台隐藏运行脚本记录.txt 28 | 29 | Gui, Margin, 20, 20 30 | Gui, Font, W400, Microsoft YaHei 31 | 32 | Gui, Add, CheckBox,Checked%常用路径开关1% v常用路径开关1 g设置常用路径1, 常用路径1[名称]: 33 | Gui, Add, Edit, x+5 yp-2 w110 h25 v常用路径名称1 +Disabled, %常用路径名称1% 34 | Gui, Add, Edit, xm yp+24 w400 r4 v常用路径1 +Disabled HScroll -Wrap, %常用路径1% 35 | 36 | Gui, Add, CheckBox,Checked%常用路径开关2% v常用路径开关2 g设置常用路径2 xm+5 yp+100, 常用路径2[名称]: 37 | Gui, Add, Edit, x+5 yp-2 w110 h25 v常用路径名称2 +Disabled, %常用路径名称2% 38 | Gui, Add, Edit, xm yp+24 w400 r4 v常用路径2 +Disabled HScroll -Wrap, %常用路径2% 39 | 40 | Gui, Add, CheckBox,Checked%常用路径开关3% v常用路径开关3 g设置常用路径3 xm+5 yp+100, 常用路径3[名称]: 41 | Gui, Add, Edit, x+5 yp-2 w110 h25 v常用路径名称3 +Disabled, %常用路径名称3% 42 | Gui, Add, Edit, xm yp+24 w400 r4 v常用路径3 +Disabled HScroll -Wrap, %常用路径3% 43 | 44 | Gui, Add, CheckBox,Checked%常用路径开关4% v常用路径开关4 g设置常用路径4 xm+5 yp+100, 常用路径4[名称]: 45 | Gui, Add, Edit, x+5 yp-2 w110 h25 v常用路径名称4 +Disabled, %常用路径名称4% 46 | Gui, Add, Edit, xm yp+24 w400 r4 v常用路径4 +Disabled HScroll -Wrap, %常用路径4% 47 | 48 | Gui, Add, CheckBox,Checked%常用路径开关5% v常用路径开关5 g设置常用路径5 xm+5 yp+100, 常用路径5[名称]: 49 | Gui, Add, Edit, x+5 yp-2 w110 h25 v常用路径名称5 +Disabled, %常用路径名称5% 50 | Gui, Add, Edit, xm yp+24 w400 r4 v常用路径5 +Disabled HScroll -Wrap, %常用路径5% 51 | Gui, Add, Button, x115 y630 w80 h30 gSaveSettings HwndBtn3, 保存 52 | Gui, Add, Button, x215 y630 w80 h30 gCancel HwndBtn4, 取消 53 | 54 | 55 | gosub,设置常用路径1 56 | gosub,设置常用路径2 57 | gosub,设置常用路径3 58 | gosub,设置常用路径4 59 | gosub,设置常用路径5 60 | 61 | Gui, Show, , %窗口标题名% 62 | return 63 | RemoveToolTip: 64 | ToolTip 65 | return 66 | 67 | 设置常用路径1: 68 | Gui,Submit, NoHide 69 | if (常用路径开关1="1"){ 70 | GuiControl, Enable, 常用路径名称1 71 | GuiControl, Enable, 常用路径1 72 | }else{ 73 | GuiControl, Disable, 常用路径名称1 74 | GuiControl, Disable, 常用路径1 75 | } 76 | return 77 | 78 | 设置常用路径2: 79 | Gui,Submit, NoHide 80 | if (常用路径开关2="1"){ 81 | GuiControl, Enable, 常用路径名称2 82 | GuiControl, Enable, 常用路径2 83 | }else{ 84 | GuiControl, Disable, 常用路径名称2 85 | GuiControl, Disable, 常用路径2 86 | } 87 | return 88 | 设置常用路径3: 89 | Gui,Submit, NoHide 90 | if (常用路径开关3="1"){ 91 | GuiControl, Enable, 常用路径名称3 92 | GuiControl, Enable, 常用路径3 93 | }else{ 94 | GuiControl, Disable, 常用路径名称3 95 | GuiControl, Disable, 常用路径3 96 | } 97 | return 98 | 设置常用路径4: 99 | Gui,Submit, NoHide 100 | if (常用路径开关4="1"){ 101 | GuiControl, Enable, 常用路径名称4 102 | GuiControl, Enable, 常用路径4 103 | }else{ 104 | GuiControl, Disable, 常用路径名称4 105 | GuiControl, Disable, 常用路径4 106 | } 107 | return 108 | 设置常用路径5: 109 | Gui,Submit, NoHide 110 | if (常用路径开关5="1"){ 111 | GuiControl, Enable, 常用路径名称5 112 | GuiControl, Enable, 常用路径5 113 | }else{ 114 | GuiControl, Disable, 常用路径名称5 115 | GuiControl, Disable, 常用路径5 116 | } 117 | return 118 | 119 | SaveSettings: 120 | Gui, Submit, NoHide 121 | 122 | loop 5 123 | { 124 | 常用路径开关:= 常用路径开关%A_Index% 125 | 常用路径名称:= 常用路径名称%A_Index% 126 | 常用路径:= 常用路径%A_Index% 127 | IniWrite, %常用路径开关%, %软件配置路径%\个人配置.ini,基础配置,常用路径开关%A_Index% 128 | IniWrite, %常用路径名称%, %软件配置路径%\个人配置.ini,基础配置,常用路径名称%A_Index% 129 | IniDelete, %软件配置路径%\个人配置.ini,常用路径%A_Index% 130 | IniWrite, %常用路径%, %软件配置路径%\个人配置.ini,常用路径%A_Index% 131 | } 132 | ExitApp 133 | return 134 | ; 取消按钮动作 135 | Cancel: 136 | GuiClose: 137 | ExitApp -------------------------------------------------------------------------------- /辅助/自动弹出常驻窗口.ahk: -------------------------------------------------------------------------------- 1 | #SingleInstance,Force ;~运行替换旧实例 2 | #NoTrayIcon ;~不显示托盘图标 3 | #Persistent ;;~让脚本持久运行 4 | #Include %A_ScriptDir%\公用函数.ahk 5 | 6 | FileAppend,%A_ScriptHwnd%`n,%A_Temp%\后台隐藏运行脚本记录.txt 7 | SetWinDelay, -1 ;设置在每次执行窗口命令,使用 -1 表示无延时 8 | SetBatchLines, -1 ;让操作以最快速度进行. 9 | 10 | SplitPath, A_ScriptDir, , parentDir 11 | global 软件安装路径:= parentDir 12 | SetTitleMatchMode, 2 ; 使用部分匹配窗口标题 13 | 14 | 自动弹出常驻窗口:=Var_Read("自动弹出常驻窗口","开启","基础配置",软件安装路径 "\个人配置.ini","是") 15 | 自动跳转到默认路径:=Var_Read("自动跳转到默认路径","关闭","基础配置",软件安装路径 "\个人配置.ini","是") 16 | 默认路径:=ReplaceVars(Var_Read("默认路径","","基础配置",软件安装路径 "\个人配置.ini","是")) 17 | 历史路径设为默认路径:=Var_Read("历史路径设为默认路径","关闭","基础配置",软件安装路径 "\个人配置.ini","是") 18 | 屏蔽xiaoyao程序列表:=Var_Read("屏蔽xiaoyao程序列表","War3.exe,dota2.exe,League of Legends.exe","基础配置",软件安装路径 "\个人配置.ini","是") 19 | 20 | 默认常驻窗口窗口列表:=" 21 | ( 22 | 选择解压路径 ahk_class #32770 ahk_exe Bandizip.exe 23 | 选择 ahk_class #32770 ahk_exe Bandizip.exe 24 | 解压路径和选项 ahk_class #32770 ahk_exe WinRAR.exe 25 | 选择目标文件夹 ahk_class #32770 ahk_exe dopus.exe 26 | )" 27 | 常驻窗口窗口列表:=Var_Read("",默认常驻窗口窗口列表,"窗口列表1",软件安装路径 "\个人配置.ini","是") 28 | ;常驻窗口窗口列表:="选择解压路径 ahk_class #32770 ahk_exe Bandizip.exe`n选择 ahk_class #32770 ahk_exe Bandizip.exe" 29 | ; 解析窗口列表到数组 30 | windows := [] 31 | Loop, Parse, 常驻窗口窗口列表, `n, `r 32 | { 33 | if not (RegExMatch(A_LoopField, "^\s*$")) ; 跳过空行 34 | windows.Push(Trim(A_LoopField)) 35 | } 36 | 37 | ;----------------黑名单窗列表读取----------- 38 | 屏蔽xiaoyao窗口列表:=Var_Read("","ahk_exe IDMan.exe","窗口列表2",软件安装路径 "\个人配置.ini","是") 39 | 40 | ;常驻窗口窗口列表:="选择解压路径 ahk_class #32770 ahk_exe Bandizip.exe`n选择 ahk_class #32770 ahk_exe Bandizip.exe" 41 | ; 解析窗口列表到数组 42 | windows2 := [] 43 | Loop, Parse, 屏蔽xiaoyao窗口列表, `n, `r 44 | { 45 | if not (RegExMatch(A_LoopField, "^\s*$")) ; 跳过空行 46 | windows2.Push(Trim(A_LoopField)) 47 | } 48 | Loop, Parse, 屏蔽xiaoyao程序列表, `, 49 | { 50 | if not (RegExMatch(A_LoopField, "^\s*$")) ; 跳过空行 51 | windows2.Push(Trim("ahk_exe " A_LoopField)) 52 | } 53 | ;----------------黑名单窗列表读取----------- 54 | 55 | if (自动弹出常驻窗口 != "开启") and (自动跳转到默认路径 != "开启") ;如果配置文件中设置了关闭,则退出脚本 56 | ExitApp 57 | 58 | ; 设置定时器检查窗口(每秒检查一次) 59 | 60 | SetTimer, 检查窗口列表, 10 61 | 62 | ReplaceBrowseForFolder(true) 63 | 64 | loop 65 | { 66 | 黑名单窗口:="0" 67 | WinWaitActive, ahk_class #32770 68 | ;sleep, 200 69 | ;MsgBox, %黑名单窗口% 70 | if WinActive("ahk_class #32770"){ 71 | ;----------------黑名单窗口跳过----------- 72 | for index, winTitle2 in windows2 73 | { 74 | ;检查窗口是否存在 75 | ;MsgBox, %winTitle2% 76 | if WinActive(winTitle2){ 77 | 黑名单窗口:="1" 78 | Break 79 | } 80 | } 81 | if (黑名单窗口="1"){ 82 | 黑名单窗口:="0" 83 | ;MsgBox, 1 84 | Continue 85 | } 86 | 87 | ;----------------黑名单窗口跳过----------- 88 | 89 | WinID2 := WinExist("A") 90 | 91 | 自动跳转到默认路径:=Var_Read("自动跳转到默认路径","关闭","基础配置",软件安装路径 "\个人配置.ini","否") 92 | 历史路径设为默认路径:=Var_Read("历史路径设为默认路径","关闭","基础配置",软件安装路径 "\个人配置.ini","否") 93 | 默认路径:=ReplaceVars(Var_Read("默认路径","","基础配置",软件安装路径 "\个人配置.ini","否")) 94 | 95 | if (自动跳转到默认路径 = "开启"){ 96 | 97 | result2 := CheckStringInFile(A_Temp "\跳转默认打开记录.txt",WinID2) 98 | sleep, 10 99 | if (result2 = "" or result2 = "FILE_ERROR"){ 100 | 101 | if (历史路径设为默认路径 = "开启"){ 102 | FileRead, 全部历史跳转路径, %软件安装路径%\ICO\历史跳转.ini 103 | if (全部历史跳转路径 !=""){ 104 | ;MsgBox, %全部历史跳转路径% 105 | Loop, parse, 全部历史跳转路径, `n, `r 106 | { 107 | if !(RegExMatch(A_LoopField, "^\s*$")){ ;判断是否是空白行 108 | 默认路径 := A_LoopField 109 | ;MsgBox,1 %默认路径% `n %A_LoopField% 110 | Break 111 | } 112 | } 113 | } 114 | } 115 | 116 | run,"%A_AhkPath%" "%A_ScriptDir%\常驻跟随窗口.ahk" -跳转事件 %WinID2% "%默认路径%" 117 | FileAppend,%WinID2%`n,%A_Temp%\跳转默认打开记录.txt 118 | 119 | } 120 | 121 | } 122 | 123 | if (自动弹出常驻窗口="开启"){ 124 | ; 示例调用 125 | result := CheckStringInFile(A_Temp "\常驻窗口关闭记录.txt",WinID2) 126 | sleep, 10 127 | if (result != ""){ 128 | if (result != "FILE_ERROR") 129 | Continue 130 | } 131 | sleep, 100 132 | DialogType := SmellsLikeAFileDialog(WinID2) 133 | If DialogType{ 134 | WinGetClass, WindowClass, ahk_id %WinID2% ; 获取目标窗口的类名 135 | if (WindowClass = "#32770"){ ; 判断类名是否为 #32770 136 | run,"%A_AhkPath%" "%A_ScriptDir%\常驻跟随窗口.ahk" -常驻窗口跟随 %WinID2% 自动弹出 137 | DialogType := "" 138 | } 139 | } 140 | } 141 | 142 | } 143 | WinWaitNotActive, ahk_class #32770 144 | sleep, 100 145 | ;Menu ContextMenu, Delete 146 | WinID2 := "" 147 | DialogType :="" 148 | } 149 | 150 | ;------------------------------------------- 151 | 152 | ; 函数:检查文件中是否存在包含目标字符串的行 153 | ; 参数: 154 | ; filePath - 文本文件路径 155 | ; targetString - 要查找的字符串 156 | ; 返回值: 157 | ; 成功找到:返回匹配行的完整内容 158 | ; 未找到:返回空字符串 "" 159 | ; 文件读取错误:返回 "FILE_ERROR" 160 | CheckStringInFile(filePath, targetString) { 161 | ; 尝试读取文件 162 | FileRead, fileContent, %filePath% 163 | ;MsgBox, %fileContent% 164 | if (ErrorLevel) ; 文件读取失败 165 | return "FILE_ERROR" 166 | 167 | ; 逐行检查 168 | foundLine := "" 169 | Loop, Parse, fileContent, `n, `r ; 处理不同换行符 170 | { 171 | if InStr(A_LoopField, targetString) 172 | { 173 | foundLine := A_LoopField 174 | break ; 找到后立即退出循环 175 | } 176 | } 177 | 178 | return foundLine 179 | } 180 | 181 | ReplaceBrowseForFolder(Params*) { 182 | Static EVENT_OBJECT_SHOW := 0x8002 183 | , OBJID_WINDOW := 0 184 | , INDEXID_CONTAINER := 0 185 | , hHook := 0 186 | If IsObject(Params) { 187 | Return hHook := Params[1] 188 | ? DllCall("SetWinEventHook", "Int", EVENT_OBJECT_SHOW 189 | , "Int", EVENT_OBJECT_SHOW, "Ptr", 0, "Ptr" 190 | , RegisterCallback(A_ThisFunc) 191 | , "Int", 0, "Int", 0, "Int", 0, "Ptr") 192 | : DllCall("UnhookWinEvent", "Ptr", hHook), DllCall("CoUninitialize") 193 | } Else { 194 | hwnd := NumGet(params+0, 2*A_PtrSize, "Ptr") 195 | idObject := NumGet(params+0, 3*A_PtrSize, "Int") 196 | idChild := NumGet(params+0, 4*A_PtrSize, "Int") 197 | If (idObject != OBJID_WINDOW || idChild != INDEXID_CONTAINER) 198 | Return 199 | WinGetClass wndClass, % "ahk_id" hwnd 200 | If (wndClass != "#32770") 201 | Return 202 | WinGet CtlList, ControlList, % "ahk_id" hwnd 203 | If !( InStr(CtlList, "SHBrowseForFolder ShellNameSpace Control") 204 | || CtlList = "Static1`nStatic2`nSysTreeView321`nButton1`nButton2" ) 205 | Return 206 | ;If (SelectedPath := SelectFolderEx(, , hwnd)) 207 | ;SetPathForBrowseForFolder(SelectedPath, hwnd) 208 | ;Else 209 | ;WinClose % "ahk_id" hwnd 210 | WinID2 := WinExist("A") 211 | run,"%A_AhkPath%" "%A_ScriptDir%\常驻跟随窗口.ahk" -常驻窗口跟随 %WinID2% 自动弹出 212 | } 213 | } 214 | 215 | 检查窗口列表: 216 | ;----------------黑名单窗口跳过----------- 217 | for index, winTitle2 in windows2 218 | { 219 | ;检查窗口是否存在 220 | if WinActive(winTitle2) 221 | Return 222 | } 223 | ;----------------黑名单窗口跳过----------- 224 | 225 | for index, winTitle in windows 226 | { 227 | ; 检查窗口是否存在 228 | if WinActive(winTitle){ 229 | WinID2 := WinExist(winTitle) 230 | 自动跳转到默认路径:=Var_Read("自动跳转到默认路径","关闭","基础配置",软件安装路径 "\个人配置.ini","否") 231 | 历史路径设为默认路径:=Var_Read("历史路径设为默认路径","关闭","基础配置",软件安装路径 "\个人配置.ini","否") 232 | 默认路径:=ReplaceVars(Var_Read("默认路径","","基础配置",软件安装路径 "\个人配置.ini","否")) 233 | 234 | if (自动跳转到默认路径 = "开启"){ 235 | 236 | result2 := CheckStringInFile(A_Temp "\跳转默认打开记录.txt",WinID2) 237 | sleep, 10 238 | if (result2 = "" or result2 = "FILE_ERROR"){ 239 | if (历史路径设为默认路径 = "开启"){ 240 | FileRead, 全部历史跳转路径, %软件安装路径%\ICO\历史跳转.ini 241 | if (全部历史跳转路径 !=""){ 242 | ;MsgBox, %全部历史跳转路径% 243 | Loop, parse, 全部历史跳转路径, `n, `r 244 | { 245 | if !(RegExMatch(A_LoopField, "^\s*$")){ ;判断是否是空白行 246 | 默认路径 := A_LoopField 247 | ;MsgBox,1 %默认路径% `n %A_LoopField% 248 | Break 249 | } 250 | } 251 | } 252 | } 253 | 254 | run,"%A_AhkPath%" "%A_ScriptDir%\常驻跟随窗口.ahk" -跳转事件 %WinID2% "%默认路径%" 255 | FileAppend,%WinID2%`n,%A_Temp%\跳转默认打开记录.txt 256 | } 257 | 258 | } 259 | 260 | if (自动弹出常驻窗口="开启"){ 261 | ; 示例调用 262 | result := CheckStringInFile(A_Temp "\常驻窗口关闭记录.txt",WinID2) 263 | sleep, 10 264 | if (result = "" or result = "FILE_ERROR"){ 265 | run,"%A_AhkPath%" "%A_ScriptDir%\常驻跟随窗口.ahk" -常驻窗口跟随 %WinID2% 自动弹出 266 | } 267 | ;MsgBox, 0x40, 窗口出现提示, 检测到目标窗口:`n"%activeTitle%"`n`n匹配条件:`n%winTitle% 268 | } 269 | 270 | WinWaitNotActive,% winTitle 271 | break ; 每次只处理一个出现的窗口 272 | } 273 | } 274 | return 275 | 276 | 277 | RemoveToolTip: 278 | ToolTip 279 | return -------------------------------------------------------------------------------- /辅助/用户设置GUI.ahk: -------------------------------------------------------------------------------- 1 | #SingleInstance,Off ;关闭自带互斥功能 2 | #NoTrayIcon ;~不显示托盘图标 3 | #Persistent ;~让脚本持久运行 4 | #Include %A_ScriptDir%\公用函数.ahk 5 | 6 | FileAppend,%A_ScriptHwnd%`n,%A_Temp%\后台隐藏运行脚本记录.txt 7 | 窗口标题名:="XiaoYao_快速跳转v4.5.2.2" 8 | SplitPath, A_ScriptDir,, 软件配置路径 9 | ;软件配置路径:="D:\RunAny\PortableSoft\XiaoYao_快速跳转\XiaoYao_快速跳转" 10 | 11 | ;避免重复打开 12 | if (Single("456")) { ;独一无二的字符串用于识别脚本,或者称为指纹? 13 | WinActivate, %窗口标题名% ahk_class AutoHotkeyGUI 14 | if not WinExist(窗口标题名 " ahk_class AutoHotkeyGUI") 15 | WinKill, %窗口标题名% ahk_class AutoHotkeyGUI 16 | Else 17 | ExitApp 18 | } 19 | Single("456") 20 | 21 | Gosub, 读取配置 22 | Gosub, 设置可视化 23 | 24 | Return 25 | 26 | 读取配置: 27 | if not FileExist(软件配置路径 "\个人配置.ini") 28 | FileCopy,%软件配置路径%\ICO\默认.ini, %软件配置路径%\个人配置.ini 29 | 30 | if FileExist(软件配置路径 "\个人配置.ini"){ 31 | 热键:=Var_Read("热键","","基础配置",软件配置路径 "\个人配置.ini","否") 32 | 自动弹出菜单:=Var_Read("自动弹出菜单","关闭","基础配置",软件配置路径 "\个人配置.ini","是") 33 | 菜单背景颜色:=Var_Read("菜单背景颜色","","基础配置",软件配置路径 "\个人配置.ini","是") 34 | 延迟自动弹出时间:=Var_Read("延迟自动弹出时间","100","基础配置",软件配置路径 "\个人配置.ini","是") 35 | 36 | 自定义常用路径2:=Var_Read("","","常用路径",软件配置路径 "\个人配置.ini","是") 37 | 自定义常用路径2:=ReplaceVars(自定义常用路径2) 38 | 39 | 替换双斜杠单反斜杠双引号:=Var_Read("替换双斜杠单反斜杠双引号","关闭","基础配置",软件配置路径 "\个人配置.ini","是") 40 | DirectoryOpus全标签路径:=Var_Read("DirectoryOpus全标签路径","开启","基础配置",软件配置路径 "\个人配置.ini","是") 41 | 弹出位置X坐标:=Var_Read("弹出位置X坐标","","基础配置",软件配置路径 "\个人配置.ini","是") 42 | 弹出位置Y坐标:=Var_Read("弹出位置Y坐标","","基础配置",软件配置路径 "\个人配置.ini","是") 43 | 44 | 一键跳转热键:=Var_Read("一键跳转热键","","基础配置",软件配置路径 "\个人配置.ini","否") 45 | 跳转方式:=Var_Read("跳转方式","1","基础配置",软件配置路径 "\个人配置.ini","是") 46 | 保留个数:=Var_Read("历史跳转保留数","5","基础配置",软件配置路径 "\个人配置.ini","是") 47 | 开机自启:=Var_Read("开机自启","关闭","基础配置",软件配置路径 "\个人配置.ini","是") 48 | 49 | DO的收藏夹:=Var_Read("DO的收藏夹","开启","基础配置",软件配置路径 "\个人配置.ini","是") 50 | 51 | 自动弹出常驻窗口:=Var_Read("自动弹出常驻窗口","开启","基础配置",软件配置路径 "\个人配置.ini","是") 52 | 常驻搜索窗口呼出热键:=Var_Read("常驻搜索窗口呼出热键","","基础配置",软件配置路径 "\个人配置.ini","否") 53 | 窗口初始坐标x:=Var_Read("窗口初始坐标x","父窗口X + 父窗口W","基础配置",软件配置路径 "\个人配置.ini","是") 54 | 窗口初始坐标y:=Var_Read("窗口初始坐标y","父窗口Y + 20","基础配置",软件配置路径 "\个人配置.ini","是") 55 | 窗口初始宽度:=Var_Read("窗口初始宽度","300","基础配置",软件配置路径 "\个人配置.ini","是") 56 | 窗口初始高度:=Var_Read("窗口初始高度","360","基础配置",软件配置路径 "\个人配置.ini","是") 57 | 窗口背景颜色:=Var_Read("窗口背景颜色","","基础配置",软件配置路径 "\个人配置.ini","是") 58 | 窗口字体颜色:=Var_Read("窗口字体颜色","","基础配置",软件配置路径 "\个人配置.ini","是") 59 | 窗口字体名称:=Var_Read("窗口字体名称","","基础配置",软件配置路径 "\个人配置.ini","是") 60 | 窗口字体大小:=Var_Read("窗口字体大小","9","基础配置",软件配置路径 "\个人配置.ini","是") 61 | 窗口透明度:=Var_Read("窗口透明度","245","基础配置",软件配置路径 "\个人配置.ini","是") 62 | 失效路径显示设置:=Var_Read("失效路径显示设置","开启","基础配置",软件配置路径 "\个人配置.ini","是") 63 | 文件夹名显示在前:=Var_Read("文件夹名显示在前","关闭","基础配置",软件配置路径 "\个人配置.ini","是") 64 | 菜单全局热键:=Var_Read("菜单全局热键","","基础配置",软件配置路径 "\个人配置.ini","否") 65 | 常驻窗口全局热键:=Var_Read("常驻窗口全局热键","","基础配置",软件配置路径 "\个人配置.ini","否") 66 | 全局性菜单项功能:=Var_Read("全局性菜单项功能","复制到剪切板","基础配置",软件配置路径 "\个人配置.ini","是") 67 | 初始文本框内容:=Var_Read("初始文本框内容","当前打开","基础配置",软件配置路径 "\个人配置.ini","是") 68 | 是否加载图标:=Var_Read("是否加载图标","开启","基础配置",软件配置路径 "\个人配置.ini","是") 69 | 给dc发送热键:=Var_Read("给dc发送热键","^+{F12}","基础配置",软件配置路径 "\个人配置.ini","是") 70 | 常用路径最多显示数量:=Var_Read("常用路径最多显示数量","9","基础配置",软件配置路径 "\个人配置.ini","是") 71 | 72 | 默认常驻窗口窗口列表:=" 73 | ( 74 | 选择解压路径 ahk_class #32770 ahk_exe Bandizip.exe 75 | 选择 ahk_class #32770 ahk_exe Bandizip.exe 76 | 解压路径和选项 ahk_class #32770 ahk_exe WinRAR.exe 77 | 选择目标文件夹 ahk_class #32770 ahk_exe dopus.exe 78 | )" 79 | 常驻窗口窗口列表:=Var_Read("",默认常驻窗口窗口列表,"窗口列表1",软件配置路径 "\个人配置.ini","是") 80 | 屏蔽xiaoyao程序列表:=Var_Read("屏蔽xiaoyao程序列表","War3.exe,dota2.exe,League of Legends.exe","基础配置",软件配置路径 "\个人配置.ini","是") 81 | 屏蔽xiaoyao窗口列表:=Var_Read("","ahk_exe IDMan.exe","窗口列表2",软件配置路径 "\个人配置.ini","是") 82 | 深浅主题切换:=Var_Read("深浅主题切换","跟随系统","基础配置",软件配置路径 "\个人配置.ini","是") 83 | 84 | 名称列最大宽度:=Var_Read("名称列最大宽度","200","基础配置",软件配置路径 "\个人配置.ini","是") 85 | 隐藏软件托盘图标:=Var_Read("隐藏软件托盘图标","关闭","基础配置",软件配置路径 "\个人配置.ini","是") 86 | 手动弹出计数:=Var_Read("手动弹出计数","0","基础配置",软件配置路径 "\个人配置.ini","是") 87 | 自动弹出菜单计数:=Var_Read("自动弹出菜单计数","0","基础配置",软件配置路径 "\个人配置.ini","是") 88 | 自动弹出常驻窗口次数:=Var_Read("自动弹出常驻窗口次数","0","基础配置",软件配置路径 "\个人配置.ini","是") 89 | 90 | 自动跳转到默认路径:=Var_Read("自动跳转到默认路径","关闭","基础配置",软件配置路径 "\个人配置.ini","是") 91 | 历史路径设为默认路径:=Var_Read("历史路径设为默认路径","关闭","基础配置",软件配置路径 "\个人配置.ini","是") 92 | 默认路径:=ReplaceVars(Var_Read("默认路径","","基础配置",软件配置路径 "\个人配置.ini","是")) 93 | 管理员启动:=Var_Read("管理员启动","开启","基础配置",软件配置路径 "\个人配置.ini","是") 94 | 95 | 自定义_当前打开:=Var_Read("自定义_当前打开","1","基础配置",软件配置路径 "\个人配置.ini","是") 96 | 自定义_常用路径:=Var_Read("自定义_常用路径","1","基础配置",软件配置路径 "\个人配置.ini","是") 97 | 自定义_历史打开:=Var_Read("自定义_历史打开","1","基础配置",软件配置路径 "\个人配置.ini","是") 98 | 自定义_全部路径:=Var_Read("自定义_全部路径","1","基础配置",软件配置路径 "\个人配置.ini","是") 99 | 自定义_do收藏夹:=Var_Read("自定义_do收藏夹","1","基础配置",软件配置路径 "\个人配置.ini","是") 100 | 自定义_粘贴:=Var_Read("自定义_粘贴","1","基础配置",软件配置路径 "\个人配置.ini","是") 101 | 自定义_更多:=Var_Read("自定义_更多","1","基础配置",软件配置路径 "\个人配置.ini","是") 102 | 103 | 自定义_当前打开_文本 :=Var_Read("自定义_当前打开_文本","当前","基础配置",软件配置路径 "\个人配置.ini","是") 104 | 自定义_常用路径_文本 :=Var_Read("自定义_常用路径_文本","常用","基础配置",软件配置路径 "\个人配置.ini","是") 105 | 自定义_历史打开_文本 :=Var_Read("自定义_历史打开_文本","历史","基础配置",软件配置路径 "\个人配置.ini","是") 106 | 自定义_全部路径_文本 :=Var_Read("自定义_全部路径_文本","全部","基础配置",软件配置路径 "\个人配置.ini","是") 107 | 自定义_do收藏夹_文本 :=Var_Read("自定义_do收藏夹_文本","dopus","基础配置",软件配置路径 "\个人配置.ini","是") 108 | 自定义_粘贴_文本 :=Var_Read("自定义_粘贴_文本","粘贴","基础配置",软件配置路径 "\个人配置.ini","是") 109 | 自定义_更多_文本 :=Var_Read("自定义_更多_文本","更多","基础配置",软件配置路径 "\个人配置.ini","是") 110 | 111 | 单击运行跳转:=Var_Read("单击运行跳转","关闭","基础配置",软件配置路径 "\个人配置.ini","是") 112 | ev排除列表:=Var_Read("ev排除列表","!C:\Windows* !?:\$RECYCLE.BIN* !?:\Users\*\AppData\Local\Temp\* !?:\Users\*\AppData\Roaming\*","基础配置",软件配置路径 "\个人配置.ini","是") 113 | 返回的最多结果次数:=Var_Read("返回的最多结果次数","150","基础配置",软件配置路径 "\个人配置.ini","是") 114 | 启用ev进行搜索:=Var_Read("启用ev进行搜索","开启","基础配置",软件配置路径 "\个人配置.ini","是") 115 | 搜索延迟:=Var_Read("搜索延迟","50","基础配置",软件配置路径 "\个人配置.ini","是") 116 | } 117 | Return 118 | 119 | 设置可视化: 120 | 121 | Auto_Launch:=开机自启 122 | Auto_Launch:= Auto_Launch="关闭"?0:1 123 | 124 | 自动弹出:=自动弹出菜单 125 | 自动弹出:= 自动弹出="关闭"?0:1 126 | 127 | ;自动弹出常驻窗口:=自动弹出常驻窗口 128 | 自动弹出常驻窗口:= 自动弹出常驻窗口="关闭"?0:1 129 | 130 | 隐藏软件托盘图标:= 隐藏软件托盘图标="关闭"?0:1 131 | 132 | 文件夹名显示在前:= 文件夹名显示在前="关闭"?0:1 133 | 134 | 是否加载图标:= 是否加载图标="关闭"?0:1 135 | 136 | 全局性菜单项功能:= 全局性菜单项功能="直接打开"?0:1 137 | 138 | 自动跳转到默认路径:= 自动跳转到默认路径="关闭"?0:1 139 | 历史路径设为默认路径:= 历史路径设为默认路径="关闭"?0:1 140 | 141 | 失效路径显示设置:= 失效路径显示设置="关闭"?0:1 142 | 143 | 替换双斜杠单反斜杠双引号:= 替换双斜杠单反斜杠双引号="关闭"?0:1 144 | 145 | 管理员启动:= 管理员启动="关闭"?0:1 146 | 启用ev进行搜索:= 启用ev进行搜索="关闭"?0:1 147 | 148 | DO全标签:=DirectoryOpus全标签路径 149 | DO全标签:= DO全标签="关闭"?0:1 150 | 跳转方式1:=跳转方式 151 | 跳转方式1 := 跳转方式1="1"?0:跳转方式1="2"?1:跳转方式1="3"?2:跳转方式1="4"?3:跳转方式1="5"?4:3 152 | 自动弹出时间:=延迟自动弹出时间 153 | X坐标:=弹出位置X坐标 154 | Y坐标:=弹出位置Y坐标 155 | 历史打开数量:=保留个数 156 | 菜单颜色:=菜单背景颜色 157 | 热键1:=热键 158 | 热键2:=一键跳转热键 159 | 160 | 深浅主题切换1:=深浅主题切换 161 | 深浅主题切换1 := 深浅主题切换1="跟随系统"?0:深浅主题切换1="浅色"?1:深浅主题切换1="深色"?2:1 162 | 163 | 单击运行跳转:= 单击运行跳转="关闭"?0:1 164 | 165 | IniRead, 自定义常用路径2, %软件配置路径%\个人配置.ini,常用路径 166 | 常用路径1:=自定义常用路径2 167 | 168 | DO收藏夹1:=DO的收藏夹 169 | DO收藏夹1:= DO收藏夹1="关闭"?0:1 170 | 171 | OnOffState := "关闭|开启" 172 | OnOffState2 := "直接打开|复制到剪切板" 173 | Gui_width_55 := 450 174 | tab_width_55 := Gui_width_55-20 175 | group_width_55 := tab_width_55-20 176 | global group_list_width_55 := tab_width_55-40 177 | text_width := 110 178 | left_margin := 10 179 | 180 | Gui, 55:Destroy 181 | 182 | Gui, 55:Default 183 | Gui, 55:+HwndGui_winID 184 | FileAppend,%Gui_winID%`n,%A_Temp%\后台隐藏运行脚本记录.txt 185 | 186 | Gui,55:Add, Tab3,x0, 设置|常驻跟随窗口|Everything|窗口设置|高级设置|关于 187 | 188 | Gui, 55:Margin, 20, 20 189 | Gui, 55:Font, W400, Microsoft YaHei 190 | 191 | Gui,55:Tab,设置,,Exact 192 | 193 | Gui, 55:Add, Text, xm+%left_margin% yp+55 cred, 开机自启 194 | Gui, 55:Add, DropDownList, x+5 yp-2 w%text_width% vAuto_Launch, %OnOffState% 195 | GuiControl, Choose, Auto_Launch,% Auto_Launch+1 196 | 197 | Gui, 55:Add, Text, x+57 yp+2 cred, 管理员启动: 198 | Gui, 55:Add, DropDownList, x+5 yp-2 w%text_width% v管理员启动, %OnOffState% 199 | GuiControl, Choose, 管理员启动, % 管理员启动+1 200 | 201 | Gui, 55:Add, GroupBox, xm y+10 w%group_width_55% h93, 菜单 热键配置【仅对话框生效】 202 | Gui, 55:Add, Text, xm+%left_margin% yp+25, 呼出菜单 203 | Gui, 55:Add, Hotkey, x+5 yp+2 w%text_width% v热键1, %热键1% 204 | Gui, 55:Add, Text, x+65 yp-2, 一键跳转 205 | Gui, 55:Add, Hotkey, x+5 yp+2 w%text_width% v热键2, %热键2% 206 | 207 | Gui, 55:Add, Text, xm+%left_margin% yp+35, 全局呼出菜单[可与局部热键相同]:(仅复制到剪切板) 208 | Gui, 55:Add, Hotkey, x+10 yp+2 w%text_width% v菜单全局热键, %菜单全局热键% 209 | 210 | Gui, 55:Add, GroupBox, xm y+10 w%group_width_55% h210, 菜单【更多】设置 211 | 212 | Gui, 55:Add, Text, xm+%left_margin% yp+25, 自动弹出时间 213 | Gui, 55:Add, Edit, x+5 yp-2 w60 h25 v自动弹出时间, %自动弹出时间% 214 | Gui, 55:Add, Text, x+10 yp+2, 毫秒 215 | 216 | Gui, 55:Add, Text, x+58 yp+2, 常用路径显示数量 217 | Gui, 55:Add, Edit, x+5 yp-2 w60 h25 v常用路径最多显示数量, %常用路径最多显示数量% 218 | Gui, 55:Add, Text, xm+%left_margin% yp+40, 菜单颜色 219 | Gui, 55:Add, Edit, x+5 yp-2 w60 h25 v菜单颜色, %菜单颜色% 220 | 221 | Gui, 55:Add, Text, x+45 yp+2, 菜单弹出位置 X: 222 | Gui, 55:Add, Edit, x+5 yp-2 w60 h25 vX坐标, %X坐标% 223 | Gui, 55:Add, Text, x+5 yp, Y: 224 | Gui, 55:Add, Edit, x+5 yp-2 w60 h25 vY坐标, %Y坐标% 225 | 226 | Gui, 55:Add, Text, xm+%left_margin% yp+40, 自动弹出菜单 227 | Gui, 55:Add, DropDownList, x+5 yp-2 w%text_width% v自动弹出, %OnOffState% 228 | GuiControl, Choose, 自动弹出, % 自动弹出+1 229 | 230 | Gui, 55:Add, Text, xm+%left_margin% yp+40, 是否加载图标 231 | Gui, 55:Add, DropDownList, x+5 yp-2 w%text_width% v是否加载图标, %OnOffState% 232 | GuiControl, Choose, 是否加载图标,% 是否加载图标+1 233 | 234 | Gui, 55:Add, GroupBox, xm y+50 w%group_width_55% h190, 常用路径设置【支持ahk内置变量】 235 | Gui, 55:Add, Button, x295 yp-5 g添加子分类, 添加子分类 236 | Gui, 55:Add, Text,Cblue x375 yp+5 w70 g打开使用文档, 更多写法: 237 | 238 | Gui, 55:Add, Edit, xm+%left_margin% yp+27 w400 r8 HScroll -Wrap v常用路径1, %常用路径1% 239 | 240 | Gui, 55:Add, Button, Default w75 x95 y600 G设置ok, 确定 241 | Gui, 55:Add, Button, w75 x+20 yp G取消ok, 取消 242 | Gui, 55:Add, Button, w75 x+20 yp G重置ok, 恢复默认 243 | Gui, 55:Add, Text, Cblue x+20 yp+5 G打开设置2, 配置文件 244 | ;Gui, wenjianpl: Add, Edit, w400 vThirdVar2, %filebatch5% 245 | ;------------------------------------------------------------------------- 246 | Gui,55:Tab,常驻跟随窗口,,Exact 247 | 距离最左边的长度:="10" 248 | 距离最上边的长度:="40" 249 | 250 | ;第一排 251 | Gui, 55:Add, Text, xm+%距离最左边的长度% ym+%距离最上边的长度% cred, 自动弹出常驻 252 | Gui, 55:Add, DropDownList, x+5 ym+%距离最上边的长度% w%text_width% v自动弹出常驻窗口, %OnOffState% 253 | GuiControl, Choose, 自动弹出常驻窗口,% 自动弹出常驻窗口+1 254 | 255 | Gui, 55:Add, Text, x+20 yp+2 cred, 目录名在前 256 | Gui, 55:Add, DropDownList, x+5 yp-2 w%text_width% v文件夹名显示在前, %OnOffState% 257 | GuiControl, Choose, 文件夹名显示在前, % 文件夹名显示在前+1 258 | 259 | ;第二排 260 | Gui, 55:Add, GroupBox, xm y+10 w%group_width_55% h93, 热键配置【仅对话框生效】 261 | Gui, 55:Add, Text, xm+%left_margin% yp+25, 呼出常驻 262 | Gui, 55:Add, Hotkey, x+5 yp+2 w%text_width% v常驻搜索窗口呼出热键2, %常驻搜索窗口呼出热键% 263 | Gui, 55:Add, Text, xm+%left_margin% yp+35, 全局呼出常驻[可与局部热键相同]:(仅复制到剪切板) 264 | Gui, 55:Add, Hotkey, x+5 yp+2 w%text_width% v常驻窗口全局热键, %常驻窗口全局热键% 265 | 266 | ;第三排 267 | Gui, 55:Add, GroupBox, xm y+10 w%group_width_55% h120, 【窗口坐标】设置 268 | 269 | Gui, 55:Add, Text, xm+%left_margin% yp+25, 坐标可用参数:父窗口X 父窗口Y 父窗口W 父窗口H 鼠标位置X 鼠标位置Y 270 | 271 | Gui, 55:Add, Text, xm+%left_margin% yp+30, 窗口初始坐标x: 272 | Gui, 55:Add, Edit, x+5 yp-2 w200 h25 v窗口初始坐标x2, %窗口初始坐标x% 273 | 274 | Gui, 55:Add, Text, xm+%left_margin% yp+30, 窗口初始坐标y: 275 | Gui, 55:Add, Edit, x+5 yp-2 w200 h25 v窗口初始坐标y2, %窗口初始坐标y% 276 | 277 | Gui, 55:Add, GroupBox, xm y+20 w200 h255, 【更多】设置 278 | Gui, 55:Add, GroupBox, x+10 yp w200 h255, 【顶部按钮显示/隐藏】设置 279 | 280 | Gui, 55:Add, Text, xm+%left_margin% yp+25, 初始宽度: 281 | Gui, 55:Add, Edit, x+5 yp-2 w120 h25 v窗口初始宽度2, %窗口初始宽度% 282 | 283 | Gui, 55:Add, CheckBox,Checked%自定义_当前打开% x+20 yp+2 v自定义_当前打开 gOnCheckBoxChange1, 当前打开: 284 | Gui, 55:Add, Edit, x+5 yp-2 w110 h25 v自定义_当前打开_文本 +Disabled, %自定义_当前打开_文本% 285 | 286 | Gui, 55:Add, Text, xm+%left_margin% yp+30, 初始高度: 287 | Gui, 55:Add, Edit, x+5 yp-2 w120 h25 v窗口初始高度2, %窗口初始高度% 288 | 289 | Gui, 55:Add, CheckBox,Checked%自定义_常用路径% x+20 yp+2 v自定义_常用路径 gOnCheckBoxChange2, 常用路径: 290 | Gui, 55:Add, Edit, x+5 yp-2 w110 h25 v自定义_常用路径_文本 +Disabled, %自定义_常用路径_文本% 291 | 292 | Gui, 55:Add, Text, xm+%left_margin% yp+30, 背景颜色: 293 | Gui, 55:Add, Edit, x+5 yp-2 w120 h25 v窗口背景颜色2, %窗口背景颜色% 294 | 295 | Gui, 55:Add, CheckBox,Checked%自定义_历史打开% x+20 yp+2 v自定义_历史打开 gOnCheckBoxChange3, 历史打开: 296 | Gui, 55:Add, Edit, x+5 yp-2 w110 h25 v自定义_历史打开_文本 +Disabled, %自定义_历史打开_文本% 297 | 298 | Gui, 55:Add, Text, xm+%left_margin% yp+30, 字体颜色: 299 | Gui, 55:Add, Edit, x+5 yp-2 w120 h25 v窗口字体颜色2, %窗口字体颜色% 300 | 301 | Gui, 55:Add, CheckBox,Checked%自定义_全部路径% x+20 yp+2 v自定义_全部路径 gOnCheckBoxChange4, 全部路径: 302 | Gui, 55:Add, Edit, x+5 yp-2 w110 h25 v自定义_全部路径_文本 +Disabled, %自定义_全部路径_文本% 303 | 304 | Gui, 55:Add, Text, xm+%left_margin% yp+30, 字体名称: 305 | Gui, 55:Add, Edit, x+5 yp-2 w120 h25 v窗口字体名称2, %窗口字体名称% 306 | 307 | Gui, 55:Add, CheckBox,Checked%自定义_do收藏夹% x+20 yp+2 v自定义_do收藏夹 gOnCheckBoxChange5, do收藏夹: 308 | Gui, 55:Add, Edit, x+1 yp-2 w110 h25 v自定义_do收藏夹_文本 +Disabled, %自定义_do收藏夹_文本% 309 | 310 | Gui, 55:Add, Text, xm+%left_margin% yp+30, 字体大小: 311 | Gui, 55:Add, Edit, x+5 yp-2 w120 h25 v窗口字体大小2, %窗口字体大小% 312 | 313 | Gui, 55:Add, CheckBox,Checked%自定义_粘贴% x+20 yp+2 v自定义_粘贴 gOnCheckBoxChange6, 粘贴: 314 | Gui, 55:Add, Edit, x+29 yp-2 w110 h25 v自定义_粘贴_文本 +Disabled, %自定义_粘贴_文本% 315 | 316 | Gui, 55:Add, Text, xm+%left_margin% yp+30, 透明度: 317 | Gui, 55:Add, Edit, x+17 yp-2 w120 h25 v窗口透明度2, %窗口透明度% 318 | 319 | Gui, 55:Add, CheckBox,Checked%自定义_更多% x+20 yp+2 v自定义_更多 gOnCheckBoxChange7, 更多: 320 | Gui, 55:Add, Edit, x+29 yp-2 w110 h25 v自定义_更多_文本 +Disabled, %自定义_更多_文本% 321 | 322 | Gui, 55:Add, Text, xm+%left_margin% yp+30 cred, 名称最大宽度: 323 | Gui, 55:Add, Edit, x+5 yp-2 w105 h25 v名称列最大宽度, %名称列最大宽度% 324 | 325 | Gui, 55:Add, Text, x+20 yp+2 cred, 初始文本框内容: 326 | if (初始文本框内容="" || 初始文本框内容="ERROR") 327 | 初始文本框内容:="当前打开" 328 | Gui, 55:Add, ComboBox, x+5 yp-2 w99 v初始文本框内容, %初始文本框内容%||当前打开|常用路径|历史打开|全部路径|do收藏夹 329 | 330 | Gui, 55:Add, Button, Default w75 x95 y600 G设置ok, 确定 331 | Gui, 55:Add, Button, w75 x+20 yp G取消ok, 取消 332 | Gui, 55:Add, Button, w75 x+20 yp G重置ok, 恢复默认 333 | Gui, 55:Add, Text, Cblue x+20 yp+5 G打开设置2, 配置文件 334 | ;---------------------------------------------- 335 | Gui,55:Tab,Everything,,Exact 336 | 337 | DetectHiddenWindows, On 338 | WinGet, evpath, ProcessPath,ahk_exe everything.exe 339 | if !(evpath) 340 | WinGet, evpath, ProcessPath,ahk_exe everything64.exe 341 | if !(evpath) 342 | evpath:="后台未运行" 343 | Gui, 55:Add, Text, x20 ym+%距离最上边的长度%, ev当前路径:%evpath% 344 | 345 | Gui, 55:Add, Text, x20 yp+30, 调用ev进行搜索 346 | Gui, 55:Add, DropDownList, x+5 yp-5 w%text_width% v启用ev进行搜索, %OnOffState% 347 | GuiControl, Choose, 启用ev进行搜索,% 启用ev进行搜索+1 348 | 349 | Gui, 55:Add, Text, x20 yp+40, 返回的最多结果个数: 350 | Gui, 55:Add, Edit, x+5 yp-5 w105 h25 v返回的最多结果次数, %返回的最多结果次数% 351 | 352 | Gui, 55:Add, Text, x+25 yp+2, 搜索延迟: 353 | Gui, 55:Add, Edit, x+5 yp-5 w60 h25 v搜索延迟, %搜索延迟% 354 | Gui, 55:Add, Text, x+5 yp+2, 毫秒 355 | 356 | Gui, 55:Add, GroupBox, x15 ym+130 w420 h180, ev排除列表 357 | Gui, 55:Add, Edit, xm yp+25 w400 h150 vev排除列表, %ev排除列表% 358 | 359 | Gui, 55:Add, Button, Default w75 x95 y600 G设置ok, 确定 360 | Gui, 55:Add, Button, w75 x+20 yp G取消ok, 取消 361 | Gui, 55:Add, Button, w75 x+20 yp G重置ok, 恢复默认 362 | Gui, 55:Add, Text, Cblue x+20 yp+5 G打开设置2, 配置文件 363 | ;---------------------------------------------- 364 | Gui,55:Tab,窗口设置,,Exact 365 | Gui, 55:Add, GroupBox, x10 ym+%距离最上边的长度% cred w420 h215, 窗口列表[自动弹出] 366 | Gui, 55:Add, Button, x340 ym+%距离最上边的长度% w80 g添加窗口到列表, 添加 367 | 368 | Gui, 55:Add, Edit, xm yp+30 w400 r9 HScroll -Wrap v常驻窗口窗口列表, %常驻窗口窗口列表% 369 | 370 | Gui, 55:Add, GroupBox, x10 ym+260 cred w420 h215, 窗口列表2[屏蔽自动弹出] 371 | Gui, 55:Add, Button, x340 ym+260 w80 g添加窗口到列表2, 添加 372 | 373 | Gui, 55:Add, Edit, xm yp+30 w400 r9 HScroll -Wrap v窗口列表2, %屏蔽xiaoyao窗口列表% 374 | 375 | Gui, 55:Add, GroupBox, x10 ym+475 cred w420 h100, 屏蔽xiaoyao程序列表(英文逗号隔开) 376 | Gui, 55:Add, Edit, xm yp+25 w400 h70 v屏蔽xiaoyao程序列表, %屏蔽xiaoyao程序列表% 377 | 378 | Gui, 55:Add, Button, Default w75 x95 y600 G设置ok, 确定 379 | Gui, 55:Add, Button, w75 x+20 yp G取消ok, 取消 380 | Gui, 55:Add, Button, w75 x+20 yp G重置ok, 恢复默认 381 | Gui, 55:Add, Text, Cblue x+20 yp+5 G打开设置2, 配置文件 382 | 383 | Gui,55:Tab,高级设置,,Exact 384 | ;第一排 385 | Gui, 55:Add, GroupBox, x20 ym+%距离最上边的长度% h122 w410, 【默认路径】设置 (第一次打开对话框会自动跳转到默认路径) 386 | 387 | Gui, 55:Add, Text, xm+%left_margin% yp+25, 自动跳转到默认路径 388 | Gui, 55:Add, DropDownList, x+5 yp-2 w%text_width% v自动跳转到默认路径, %OnOffState% 389 | GuiControl, Choose, 自动跳转到默认路径, % 自动跳转到默认路径+1 390 | 391 | Gui, 55:Add, Text, xm+%left_margin% yp+35, 将历史路径设为默认 392 | Gui, 55:Add, DropDownList, x+5 yp-2 w%text_width% v历史路径设为默认路径, %OnOffState% 393 | GuiControl, Choose, 历史路径设为默认路径, % 历史路径设为默认路径+1 394 | 395 | Gui, 55:Add, Text, xm+%left_margin% yp+35, 设置默认路径: 396 | Gui, 55:Add, Edit, x+5 yp-2 w310 h25 v默认路径, %默认路径% 397 | 398 | Gui, 55:Add, Text, xm+%left_margin% yp+45 , DO全标签:(关闭后只获取当前标签路径) 399 | Gui, 55:Add, DropDownList, x+5 yp-2 w%text_width% vDO全标签, %OnOffState% 400 | GuiControl, Choose, DO全标签, % DO全标签+1 401 | 402 | Gui, 55:Add, Text, xm+%left_margin% yp+35 , DO收藏夹:(部分收藏需先打开 DO获取) 403 | Gui, 55:Add, DropDownList, x+5 yp-2 w%text_width% vDO收藏夹1, %OnOffState% 404 | GuiControl, Choose, DO收藏夹1, % DO收藏夹1+1 405 | 406 | Gui, 55:Add, Text, xm+%left_margin% yp+35 , 给doublecmd发送指定按键获取路径: 407 | Gui, 55:Add, Edit, x+5 yp-2 w%text_width% v给dc发送热键, %给dc发送热键% 408 | 409 | Gui, 55:Add, Text, xm+%left_margin% yp+35 , 历史打开数量:(最近跳转路径的个数上限) 410 | Gui, 55:Add, Edit, x+5 yp-2 w50 h25 v历史打开数量, %历史打开数量% 411 | 412 | Gui, 55:Add, Text, xm+%left_margin% yp+35 , 隐藏软件托盘图标[慎改]:可通过编辑 个人配置.ini 恢复 413 | Gui, 55:Add, DropDownList, x+5 yp-2 w%text_width% v隐藏软件托盘图标, %OnOffState% 414 | GuiControl, Choose, 隐藏软件托盘图标,% 隐藏软件托盘图标+1 415 | 416 | Gui, 55:Add, Text, xm+%left_margin% yp+35 , 失效路径显示(关闭后失效路径将不显示) 417 | Gui, 55:Add, DropDownList, x+5 yp-2 w%text_width% v失效路径显示设置, %OnOffState% 418 | GuiControl, Choose, 失效路径显示设置, % 失效路径显示设置+1 419 | 420 | Gui, 55:Add, Text, xm+%left_margin% yp+35 , 常用路径:替换\\和/为\并删除双引号 421 | Gui, 55:Add, DropDownList, x+5 yp-4 w%text_width% v替换双斜杠单反斜杠双引号, %OnOffState% 422 | GuiControl, Choose, 替换双斜杠单反斜杠双引号, % 替换双斜杠单反斜杠双引号+1 423 | 424 | Gui, 55:Add, Text, xm+%left_margin% yp+35, 全局点击功能: 425 | Gui, 55:Add, DropDownList, x+5 yp-4 w%text_width% v全局性菜单项功能, %OnOffState2% 426 | GuiControl, Choose, 全局性菜单项功能,% 全局性菜单项功能+1 427 | 428 | Gui, 55:Add, Text, x+48 yp+2, 跳转方式: 429 | Gui, 55:Add, DropDownList, x+5 yp-2 w%text_width% v跳转方式1, 1|2|3|4|5 430 | GuiControl, Choose, 跳转方式1, % 跳转方式1+1 431 | 432 | Gui, 55:Add, Text, xm+%left_margin% yp+35, 深浅主题切换: 433 | Gui, 55:Add, DropDownList, x+5 yp-4 w%text_width% v深浅主题切换1, 跟随系统|浅色|深色 434 | GuiControl, Choose, 深浅主题切换1,% 深浅主题切换1+1 435 | 436 | Gui, 55:Add, Text, x+48 yp+2, 单击运行跳转: 437 | Gui, 55:Add, DropDownList, x+5 yp-2 w86 v单击运行跳转, %OnOffState% 438 | GuiControl, Choose, 单击运行跳转, % 单击运行跳转+1 439 | 440 | Gui, 55:Add, Button, Default w75 x95 y600 G设置ok, 确定 441 | Gui, 55:Add, Button, w75 x+20 yp G取消ok, 取消 442 | Gui, 55:Add, Button, w75 x+20 yp G重置ok, 恢复默认 443 | Gui, 55:Add, Text, Cblue x+20 yp+5 G打开设置2, 配置文件 444 | 445 | Gui,55:Tab,关于,,Exact 446 | Gui, 55:Add, Text, xm+%距离最左边的长度% ym+%距离最上边的长度% cblue, 作者:逍遥 https://github.com/lch319/XiaoYao_QuickJump 447 | Gui, 55:Add, Text, xm+%距离最左边的长度% yp+40 cblue, 在打开或保存对话框中,快速定位到当前打开的文件夹路径 448 | Gui, 55:Add, Text, xm+%距离最左边的长度% yp+25 cblue, 支持 DO、TC、DC、XY、Q-Dir、Win11资源管理器 449 | Gui, 55:Add, Text, xm+%距离最左边的长度% yp+40 cblue, QQ交流群:246308937(答案:RunAny) 450 | 451 | Gui, 55:Add, Text, xm+%距离最左边的长度% yp+40 cblue, 致谢名单: 452 | Gui, 55:Add, Text, xm+%距离最左边的长度% yp+20 cblue, https://github.com/hui-Zz/RunAny 453 | Gui, 55:Add, Text, xm+%距离最左边的长度% yp+20 cblue, https://github.com/gepruts/QuickSwitch 454 | Gui, 55:Add, Text, xm+%距离最左边的长度% yp+20 cblue, https://www.autohotkey.com/boards/viewtopic.php?f=6&t=124771 455 | 456 | Gui, 55:Add, Text, xm+%距离最左边的长度% y500 cgreen, XiaoYao_快速跳转[使用统计]:重启后刷新 457 | Gui, 55:Add, Text, xm+20 yp+20, 自动弹出常驻窗口次数:%自动弹出常驻窗口次数% 458 | Gui, 55:Add, Text, xm+20 yp+20, 自动弹出菜单次数:%自动弹出菜单计数% 459 | Gui, 55:Add, Text, xm+20 yp+20, 手动弹出菜单和常驻次数:%手动弹出计数% 460 | 总次数:=自动弹出常驻窗口次数+自动弹出菜单计数+手动弹出计数 461 | Gui, 55:Add, Text, xm+20 yp+20, 总次数:%总次数% 462 | 463 | gosub,OnCheckBoxChange1 464 | gosub,OnCheckBoxChange2 465 | gosub,OnCheckBoxChange3 466 | gosub,OnCheckBoxChange4 467 | gosub,OnCheckBoxChange5 468 | gosub,OnCheckBoxChange6 469 | gosub,OnCheckBoxChange7 470 | 471 | GuiTitleContent := A_IsAdmin=1?"(管理员)":"(非管理员)" 472 | Gui,55: Show,w%Gui_width_55%,%窗口标题名%%GuiTitleContent% 473 | 474 | Return 475 | 476 | 设置ok: 477 | Critical On 478 | Thread, NoTimers,True 479 | Gui,55:Submit 480 | IniWrite, %热键1%, %软件配置路径%\个人配置.ini,基础配置,热键 481 | IniWrite, %自动弹出%, %软件配置路径%\个人配置.ini,基础配置,自动弹出菜单 482 | IniWrite, %菜单颜色%, %软件配置路径%\个人配置.ini,基础配置,菜单背景颜色 483 | IniWrite, %自动弹出时间%, %软件配置路径%\个人配置.ini,基础配置,延迟自动弹出时间 484 | IniDelete, %软件配置路径%\个人配置.ini,常用路径 485 | IniWrite, %常用路径1%, %软件配置路径%\个人配置.ini,常用路径 486 | IniWrite, %DO全标签%, %软件配置路径%\个人配置.ini,基础配置,DirectoryOpus全标签路径 487 | IniWrite, %X坐标%, %软件配置路径%\个人配置.ini,基础配置,弹出位置X坐标 488 | IniWrite, %Y坐标%, %软件配置路径%\个人配置.ini,基础配置,弹出位置Y坐标 489 | IniWrite, %热键2%, %软件配置路径%\个人配置.ini,基础配置,一键跳转热键 490 | IniWrite, %跳转方式1%, %软件配置路径%\个人配置.ini,基础配置,跳转方式 491 | IniWrite, %历史打开数量%, %软件配置路径%\个人配置.ini,基础配置,历史跳转保留数 492 | IniWrite, %Auto_Launch%, %软件配置路径%\个人配置.ini,基础配置,开机自启 493 | IniWrite, %DO收藏夹1%, %软件配置路径%\个人配置.ini,基础配置,DO的收藏夹 494 | 495 | IniWrite, %自动弹出常驻窗口%, %软件配置路径%\个人配置.ini,基础配置,自动弹出常驻窗口 496 | IniWrite, %常驻搜索窗口呼出热键2%, %软件配置路径%\个人配置.ini,基础配置,常驻搜索窗口呼出热键 497 | IniWrite, %窗口初始坐标x2%, %软件配置路径%\个人配置.ini,基础配置,窗口初始坐标x 498 | IniWrite, %窗口初始坐标y2%, %软件配置路径%\个人配置.ini,基础配置,窗口初始坐标y 499 | IniWrite, %窗口初始宽度2%, %软件配置路径%\个人配置.ini,基础配置,窗口初始宽度 500 | IniWrite, %窗口初始高度2%, %软件配置路径%\个人配置.ini,基础配置,窗口初始高度 501 | IniWrite, %窗口背景颜色2%, %软件配置路径%\个人配置.ini,基础配置,窗口背景颜色 502 | IniWrite, %窗口字体颜色2%, %软件配置路径%\个人配置.ini,基础配置,窗口字体颜色 503 | IniWrite, %窗口字体名称2%, %软件配置路径%\个人配置.ini,基础配置,窗口字体名称 504 | IniWrite, %窗口字体大小2%, %软件配置路径%\个人配置.ini,基础配置,窗口字体大小 505 | IniWrite, %窗口透明度2%, %软件配置路径%\个人配置.ini,基础配置,窗口透明度 506 | IniWrite, %失效路径显示设置%, %软件配置路径%\个人配置.ini,基础配置,失效路径显示设置 507 | 508 | IniWrite, %文件夹名显示在前%, %软件配置路径%\个人配置.ini,基础配置,文件夹名显示在前 509 | 510 | IniWrite, %菜单全局热键%, %软件配置路径%\个人配置.ini,基础配置,菜单全局热键 511 | IniWrite, %常驻窗口全局热键%, %软件配置路径%\个人配置.ini,基础配置,常驻窗口全局热键 512 | IniWrite, %全局性菜单项功能%, %软件配置路径%\个人配置.ini,基础配置,全局性菜单项功能 513 | IniWrite, %初始文本框内容%, %软件配置路径%\个人配置.ini,基础配置,初始文本框内容 514 | IniWrite, %是否加载图标%, %软件配置路径%\个人配置.ini,基础配置,是否加载图标 515 | IniWrite, %常用路径最多显示数量%, %软件配置路径%\个人配置.ini,基础配置,常用路径最多显示数量 516 | 517 | IniDelete, %软件配置路径%\个人配置.ini,窗口列表1 518 | IniWrite, %常驻窗口窗口列表%, %软件配置路径%\个人配置.ini,窗口列表1 519 | 520 | IniDelete, %软件配置路径%\个人配置.ini,窗口列表2 521 | IniWrite, %窗口列表2%, %软件配置路径%\个人配置.ini,窗口列表2 522 | 523 | IniWrite, %屏蔽xiaoyao程序列表%, %软件配置路径%\个人配置.ini,基础配置,屏蔽xiaoyao程序列表 524 | 525 | IniWrite, %名称列最大宽度%, %软件配置路径%\个人配置.ini,基础配置,名称列最大宽度 526 | IniWrite, %隐藏软件托盘图标%, %软件配置路径%\个人配置.ini,基础配置,隐藏软件托盘图标 527 | 528 | IniWrite, %自动跳转到默认路径%, %软件配置路径%\个人配置.ini,基础配置,自动跳转到默认路径 529 | IniWrite, %历史路径设为默认路径%, %软件配置路径%\个人配置.ini,基础配置,历史路径设为默认路径 530 | IniWrite, %默认路径%, %软件配置路径%\个人配置.ini,基础配置,默认路径 531 | IniWrite, %替换双斜杠单反斜杠双引号%, %软件配置路径%\个人配置.ini,基础配置,替换双斜杠单反斜杠双引号 532 | IniWrite, %管理员启动%, %软件配置路径%\个人配置.ini,基础配置,管理员启动 533 | IniWrite, %给dc发送热键%, %软件配置路径%\个人配置.ini,基础配置,给dc发送热键 534 | 535 | IniWrite, %深浅主题切换1%, %软件配置路径%\个人配置.ini,基础配置,深浅主题切换 536 | 537 | IniWrite, %自定义_当前打开%, %软件配置路径%\个人配置.ini,基础配置,自定义_当前打开 538 | IniWrite, %自定义_常用路径%, %软件配置路径%\个人配置.ini,基础配置,自定义_常用路径 539 | IniWrite, %自定义_历史打开%, %软件配置路径%\个人配置.ini,基础配置,自定义_历史打开 540 | IniWrite, %自定义_全部路径%, %软件配置路径%\个人配置.ini,基础配置,自定义_全部路径 541 | IniWrite, %自定义_do收藏夹%, %软件配置路径%\个人配置.ini,基础配置,自定义_do收藏夹 542 | IniWrite, %自定义_粘贴%, %软件配置路径%\个人配置.ini,基础配置,自定义_粘贴 543 | IniWrite, %自定义_更多%, %软件配置路径%\个人配置.ini,基础配置,自定义_更多 544 | 545 | IniWrite, %自定义_当前打开_文本%, %软件配置路径%\个人配置.ini,基础配置,自定义_当前打开_文本 546 | IniWrite, %自定义_常用路径_文本%, %软件配置路径%\个人配置.ini,基础配置,自定义_常用路径_文本 547 | IniWrite, %自定义_历史打开_文本%, %软件配置路径%\个人配置.ini,基础配置,自定义_历史打开_文本 548 | IniWrite, %自定义_全部路径_文本%, %软件配置路径%\个人配置.ini,基础配置,自定义_全部路径_文本 549 | IniWrite, %自定义_do收藏夹_文本%, %软件配置路径%\个人配置.ini,基础配置,自定义_do收藏夹_文本 550 | IniWrite, %自定义_粘贴_文本%, %软件配置路径%\个人配置.ini,基础配置,自定义_粘贴_文本 551 | IniWrite, %自定义_更多_文本%, %软件配置路径%\个人配置.ini,基础配置,自定义_更多_文本 552 | 553 | IniWrite, %单击运行跳转%, %软件配置路径%\个人配置.ini,基础配置,单击运行跳转 554 | 555 | IniWrite, %ev排除列表%, %软件配置路径%\个人配置.ini,基础配置,ev排除列表 556 | IniWrite, %返回的最多结果次数%, %软件配置路径%\个人配置.ini,基础配置,返回的最多结果次数 557 | IniWrite, %启用ev进行搜索%, %软件配置路径%\个人配置.ini,基础配置,启用ev进行搜索 558 | IniWrite, %搜索延迟%, %软件配置路径%\个人配置.ini,基础配置,搜索延迟 559 | 560 | gosub, Menu_Reload 561 | Return 562 | 563 | 重置ok: 564 | MsgBox, 49, 确认重置吗? 565 | IfMsgBox Ok 566 | { 567 | Gui,Destroy 568 | FileDelete, %软件配置路径%\个人配置.ini 569 | FileCopy, %软件配置路径%\ICO\默认.ini, %软件配置路径%\个人配置.ini 570 | Sleep, 1000 571 | gosub, Menu_Reload 572 | } 573 | return 574 | 打开设置2: 575 | if FileExist(软件配置路径 "\个人配置.ini") 576 | run,%软件配置路径%\个人配置.ini 577 | Else 578 | run,%软件配置路径% 579 | return 580 | 581 | 打开使用文档: 582 | if FileExist(软件配置路径 "\ICO\常用路径写法说明.txt") 583 | run,%软件配置路径%\ICO\常用路径写法说明.txt 584 | Else 585 | run,%软件配置路径% 586 | return 587 | 588 | 添加窗口到列表: 589 | gosub,添加窗口到列表公共部分 590 | ; 检查是否已存在相同条目 591 | GuiControlGet, CurrentList,, 常驻窗口窗口列表 592 | EntryExists := false 593 | Loop, Parse, CurrentList, `n 594 | { 595 | ; 比较忽略前后空格 596 | if (Trim(A_LoopField) = Trim(NewEntry)){ 597 | EntryExists := true 598 | break 599 | } 600 | } 601 | Gui,55: show 602 | if (!EntryExists){ 603 | ; 添加到编辑框 604 | NewList := CurrentList ? CurrentList "`n" NewEntry : NewEntry 605 | GuiControl,, 常驻窗口窗口列表, %NewList% 606 | }else{ 607 | MsgBox, 64, 提示, 该窗口已存在列表中!, 2 608 | } 609 | 610 | return 611 | 612 | 添加窗口到列表2: 613 | gosub,添加窗口到列表公共部分 614 | ; 检查是否已存在相同条目 615 | GuiControlGet, CurrentList,, 窗口列表2 616 | EntryExists := false 617 | Loop, Parse, CurrentList, `n 618 | { 619 | ; 比较忽略前后空格 620 | if (Trim(A_LoopField) = Trim(NewEntry)){ 621 | EntryExists := true 622 | break 623 | } 624 | } 625 | Gui,55: show 626 | if (!EntryExists){ 627 | ; 添加到编辑框 628 | NewList := CurrentList ? CurrentList "`n" NewEntry : NewEntry 629 | GuiControl,, 窗口列表2, %NewList% 630 | }else{ 631 | MsgBox, 64, 提示, 该窗口已存在列表中!, 2 632 | } 633 | return 634 | 635 | 添加窗口到列表公共部分: 636 | ToolTip, 请左键点击目标窗口... 637 | Gui,55: Hide 638 | KeyWait, LButton, D 639 | MouseGetPos,,, 获取WinID 640 | WinGetTitle, WinTitle22, ahk_id %获取WinID% 641 | WinGetClass, WinClass22, ahk_id %获取WinID% 642 | WinGet, WinExe22, ProcessName, ahk_id %获取WinID% 643 | ToolTip 644 | ; 格式化窗口信息 645 | NewEntry := WinTitle22 " ahk_class " WinClass22 " ahk_exe " WinExe22 646 | return 647 | 648 | Menu_Reload: 649 | Critical 650 | FileDelete, %A_Temp%\常驻窗口关闭记录.txt 651 | FileDelete, %A_Temp%\跳转默认打开记录.txt 652 | ;Run,%A_AhkPath% /force /restart "%软件配置路径%" 653 | run,"%软件配置路径%\XiaoYao_快速跳转.exe" "%软件配置路径%\主程序.ahk" 654 | ExitApp 655 | return 656 | 657 | 55GuiClose: 658 | 取消ok: 659 | ExitApp 660 | return 661 | 662 | RemoveToolTip: 663 | ToolTip 664 | return 665 | 666 | OnCheckBoxChange1: 667 | Gui,55:Submit, NoHide 668 | if (自定义_当前打开 = 1) 669 | GuiControl, Enable, 自定义_当前打开_文本 670 | else 671 | GuiControl, Disable, 自定义_当前打开_文本 672 | return 673 | OnCheckBoxChange2: 674 | Gui,55:Submit, NoHide 675 | if (自定义_常用路径 = 1) 676 | GuiControl, Enable, 自定义_常用路径_文本 677 | else 678 | GuiControl, Disable, 自定义_常用路径_文本 679 | return 680 | OnCheckBoxChange3: 681 | Gui,55:Submit, NoHide 682 | if (自定义_历史打开 = 1) 683 | GuiControl, Enable, 自定义_历史打开_文本 684 | else 685 | GuiControl, Disable, 自定义_历史打开_文本 686 | return 687 | OnCheckBoxChange4: 688 | Gui,55:Submit, NoHide 689 | if (自定义_全部路径 = 1) 690 | GuiControl, Enable, 自定义_全部路径_文本 691 | else 692 | GuiControl, Disable, 自定义_全部路径_文本 693 | return 694 | OnCheckBoxChange5: 695 | Gui,55:Submit, NoHide 696 | if (自定义_do收藏夹 = 1) 697 | GuiControl, Enable, 自定义_do收藏夹_文本 698 | else 699 | GuiControl, Disable, 自定义_do收藏夹_文本 700 | return 701 | OnCheckBoxChange6: 702 | Gui,55:Submit, NoHide 703 | if (自定义_粘贴 = 1) 704 | GuiControl, Enable, 自定义_粘贴_文本 705 | else 706 | GuiControl, Disable, 自定义_粘贴_文本 707 | return 708 | OnCheckBoxChange7: 709 | Gui,55:Submit, NoHide 710 | if (自定义_更多 = 1) 711 | GuiControl, Enable, 自定义_更多_文本 712 | else 713 | GuiControl, Disable, 自定义_更多_文本 714 | return 715 | 716 | 添加子分类: 717 | run,"%A_AhkPath%" "%A_ScriptDir%\设置更多子分类常用路径.ahk" 718 | return -------------------------------------------------------------------------------- /主程序.ahk: -------------------------------------------------------------------------------- 1 | ;==================================================================================== 2 | ;仿Listary_C+G 列出打开的路径 (支持文件管理器、Directory Opus、 TC)最后更新:20251227 3 | ;代码借鉴 https://www.autohotkey.com/boards/viewtopic.php?f=6&t=102377 4 | ;==================================================================================== 5 | #NoEnv 6 | #Persistent ;~让脚本持久运行 7 | #SingleInstance,Force ;~运行替换旧实例 8 | #Include %A_ScriptDir%\辅助\公用函数.ahk 9 | 10 | SendMode Input 11 | SetWorkingDir %A_ScriptDir% 12 | SetBatchLines -1 13 | 14 | 软件版本号:="4.5.2.2" 15 | 16 | ;如果配置不存在,新建一个默认配置 17 | if not FileExist(A_ScriptDir "\个人配置.ini") 18 | FileCopy,%A_ScriptDir%\ICO\默认.ini, %A_ScriptDir%\个人配置.ini 19 | 20 | ;判断是否管理员启动 21 | Gosub, Label_AdminLaunch 22 | 23 | ;清除辅助脚本进程 24 | FileRead,后台隐藏运行脚本记录,%A_Temp%\后台隐藏运行脚本记录.txt 25 | ;MsgBox, 常驻窗口关闭记录: %常驻窗口关闭记录% 26 | Loop, parse, 后台隐藏运行脚本记录, `n, `r 27 | { 28 | WinKill,ahk_id %A_LoopField% 29 | } 30 | FileDelete, %A_Temp%\后台隐藏运行脚本记录.txt 31 | 32 | run,"%A_ScriptDir%\XiaoYao_快速跳转.exe" "%A_ScriptDir%\辅助\解决菜单不消失.ahk" 33 | ;run,C:\Windows\System32\cmd.exe /c taskkill /f /im XiaoYao_快速跳转.exe,,Hide 34 | ;------------------ 读取配置 ------------------ 35 | 热键:="^g" 36 | 自动弹出菜单:="开启" 37 | 菜单背景颜色:="" 38 | 延迟自动弹出时间:="250" 39 | 自定义常用路径:=A_Desktop "`n" A_MyDocuments 40 | 开机自启:="0" 41 | 42 | global DO的收藏夹 43 | global do收藏夹所有路径 44 | global 全局性菜单 45 | global processList:="ahk_class #32770" 46 | 47 | ;MsgBox, %do收藏夹所有路径% 48 | ;注意:带别名的需要do先打开 49 | 50 | global 全局历史跳转 51 | FileRead, 全局历史跳转, %A_ScriptDir%\ICO\历史跳转.ini 52 | 53 | 热键:=Var_Read("热键","","基础配置",A_ScriptDir "\个人配置.ini","否") 54 | 自动弹出菜单:=Var_Read("自动弹出菜单","关闭","基础配置",A_ScriptDir "\个人配置.ini","是") 55 | 菜单背景颜色:=Var_Read("菜单背景颜色","","基础配置",A_ScriptDir "\个人配置.ini","是") 56 | 延迟自动弹出时间:=Var_Read("延迟自动弹出时间","100","基础配置",A_ScriptDir "\个人配置.ini","是") 57 | 58 | 自定义常用路径2:=Var_Read("","","常用路径",A_ScriptDir "\个人配置.ini","是") 59 | 自定义常用路径2:=ReplaceVars(自定义常用路径2) 60 | 61 | 替换双斜杠单反斜杠双引号:=Var_Read("替换双斜杠单反斜杠双引号","关闭","基础配置",A_ScriptDir "\个人配置.ini","是") 62 | if (替换双斜杠单反斜杠双引号="开启"){ 63 | 自定义常用路径2:=RegExReplace(StrReplace(自定义常用路径2, """", ""), "\\\\|/", "\") 64 | } 65 | 66 | DirectoryOpus全标签路径:=Var_Read("DirectoryOpus全标签路径","开启","基础配置",A_ScriptDir "\个人配置.ini","是") 67 | 弹出位置X坐标:=Var_Read("弹出位置X坐标","","基础配置",A_ScriptDir "\个人配置.ini","是") 68 | 弹出位置Y坐标:=Var_Read("弹出位置Y坐标","","基础配置",A_ScriptDir "\个人配置.ini","是") 69 | 70 | 一键跳转热键:=Var_Read("一键跳转热键","","基础配置",A_ScriptDir "\个人配置.ini","否") 71 | 跳转方式:=Var_Read("跳转方式","1","基础配置",A_ScriptDir "\个人配置.ini","是") 72 | 保留个数:=Var_Read("历史跳转保留数","5","基础配置",A_ScriptDir "\个人配置.ini","是") 73 | 开机自启:=Var_Read("开机自启","关闭","基础配置",A_ScriptDir "\个人配置.ini","是") 74 | 75 | DO的收藏夹:=Var_Read("DO的收藏夹","开启","基础配置",A_ScriptDir "\个人配置.ini","是") 76 | if (DO的收藏夹="开启") 77 | do收藏夹所有路径:=DirectoryOpusgetfa() 78 | 79 | 自动弹出常驻窗口:=Var_Read("自动弹出常驻窗口","开启","基础配置",A_ScriptDir "\个人配置.ini","是") 80 | 常驻搜索窗口呼出热键:=Var_Read("常驻搜索窗口呼出热键","","基础配置",A_ScriptDir "\个人配置.ini","否") 81 | 窗口初始坐标x:=Var_Read("窗口初始坐标x","父窗口X + 父窗口W","基础配置",A_ScriptDir "\个人配置.ini","是") 82 | 窗口初始坐标y:=Var_Read("窗口初始坐标y","父窗口Y + 20","基础配置",A_ScriptDir "\个人配置.ini","是") 83 | 窗口初始宽度:=Var_Read("窗口初始宽度","300","基础配置",A_ScriptDir "\个人配置.ini","是") 84 | 窗口初始高度:=Var_Read("窗口初始高度","360","基础配置",A_ScriptDir "\个人配置.ini","是") 85 | 窗口背景颜色:=Var_Read("窗口背景颜色","","基础配置",A_ScriptDir "\个人配置.ini","是") 86 | 窗口字体颜色:=Var_Read("窗口字体颜色","","基础配置",A_ScriptDir "\个人配置.ini","是") 87 | 窗口字体名称:=Var_Read("窗口字体名称","","基础配置",A_ScriptDir "\个人配置.ini","是") 88 | 窗口字体大小:=Var_Read("窗口字体大小","9","基础配置",A_ScriptDir "\个人配置.ini","是") 89 | 窗口透明度:=Var_Read("窗口透明度","245","基础配置",A_ScriptDir "\个人配置.ini","是") 90 | 失效路径显示设置:=Var_Read("失效路径显示设置","开启","基础配置",A_ScriptDir "\个人配置.ini","是") 91 | 文件夹名显示在前:=Var_Read("文件夹名显示在前","关闭","基础配置",A_ScriptDir "\个人配置.ini","是") 92 | 菜单全局热键:=Var_Read("菜单全局热键","","基础配置",A_ScriptDir "\个人配置.ini","否") 93 | 常驻窗口全局热键:=Var_Read("常驻窗口全局热键","","基础配置",A_ScriptDir "\个人配置.ini","否") 94 | 全局性菜单项功能:=Var_Read("全局性菜单项功能","复制到剪切板","基础配置",A_ScriptDir "\个人配置.ini","是") 95 | 初始文本框内容:=Var_Read("初始文本框内容","当前打开","基础配置",A_ScriptDir "\个人配置.ini","是") 96 | 是否加载图标:=Var_Read("是否加载图标","开启","基础配置",A_ScriptDir "\个人配置.ini","是") 97 | 常用路径最多显示数量:=Var_Read("常用路径最多显示数量","9","基础配置",A_ScriptDir "\个人配置.ini","是") 98 | 屏蔽xiaoyao程序列表:=Var_Read("屏蔽xiaoyao程序列表","War3.exe,dota2.exe,League of Legends.exe","基础配置",A_ScriptDir "\个人配置.ini","是") 99 | 深浅主题切换:=Var_Read("深浅主题切换","跟随系统","基础配置",A_ScriptDir "\个人配置.ini","是") 100 | 101 | 默认常驻窗口窗口列表:=" 102 | ( 103 | 选择解压路径 ahk_class #32770 ahk_exe Bandizip.exe 104 | 选择 ahk_class #32770 ahk_exe Bandizip.exe 105 | 解压路径和选项 ahk_class #32770 ahk_exe WinRAR.exe 106 | 选择目标文件夹 ahk_class #32770 ahk_exe dopus.exe 107 | )" 108 | 常驻窗口窗口列表:=Var_Read("",默认常驻窗口窗口列表,"窗口列表1",A_ScriptDir "\个人配置.ini","是") 109 | 110 | ;----------------黑名单窗列表读取----------- 111 | 屏蔽xiaoyao窗口列表:=Var_Read("","ahk_exe IDMan.exe","窗口列表2",A_ScriptDir "\个人配置.ini","是") 112 | 113 | ;常驻窗口窗口列表:="选择解压路径 ahk_class #32770 ahk_exe Bandizip.exe`n选择 ahk_class #32770 ahk_exe Bandizip.exe" 114 | ; 解析窗口列表到数组 115 | windows2 := [] 116 | Loop, Parse, 屏蔽xiaoyao窗口列表, `n, `r 117 | { 118 | if not (RegExMatch(A_LoopField, "^\s*$")) ; 跳过空行 119 | windows2.Push(Trim(A_LoopField)) 120 | } 121 | Loop, Parse, 屏蔽xiaoyao程序列表, `, 122 | { 123 | if not (RegExMatch(A_LoopField, "^\s*$")) ; 跳过空行 124 | windows2.Push(Trim("ahk_exe " A_LoopField)) 125 | } 126 | ;----------------黑名单窗列表读取----------- 127 | 128 | 窗口文本行距:=Var_Read("窗口文本行距","20","基础配置",A_ScriptDir "\个人配置.ini","是") 129 | 隐藏软件托盘图标:=Var_Read("隐藏软件托盘图标","关闭","基础配置",A_ScriptDir "\个人配置.ini","是") 130 | 手动弹出计数:=Var_Read("手动弹出计数","0","基础配置",A_ScriptDir "\个人配置.ini","是") 131 | 自动弹出菜单计数:=Var_Read("自动弹出菜单计数","0","基础配置",A_ScriptDir "\个人配置.ini","是") 132 | 给dc发送热键:=Var_Read("给dc发送热键","^+{F12}","基础配置",A_ScriptDir "\个人配置.ini","是") 133 | 134 | loop 5 135 | { 136 | 常用路径开关%A_Index%:= Var_Read("常用路径开关" A_Index,"0","基础配置",A_ScriptDir "\个人配置.ini","是") 137 | if (常用路径开关%A_Index%="1"){ 138 | 常用路径名称%A_Index%:= Var_Read("常用路径名称" A_Index,"常用" A_Index,"基础配置",A_ScriptDir "\个人配置.ini","是") 139 | 常用路径%A_Index%:= ReplaceVars(Var_Read("","","常用路径" A_Index,A_ScriptDir "\个人配置.ini","是")) 140 | if (替换双斜杠单反斜杠双引号="开启"){ 141 | 常用路径%A_Index%:=RegExReplace(StrReplace(常用路径%A_Index%, """", ""), "\\\\|/", "\") 142 | } 143 | 144 | }Else{ 145 | 常用路径名称%A_Index%:= "" 146 | 常用路径%A_Index%:="" 147 | } 148 | } 149 | 150 | ;------------------ 读取配置终止线 ---------------- 151 | 152 | if (隐藏软件托盘图标="开启"){ 153 | Menu, Tray, NoIcon 154 | } 155 | if not FileExist(A_ScriptDir "\ICO\历史跳转.ini") 156 | FileAppend, ,%A_ScriptDir%\ICO\历史跳转.ini 157 | 158 | if (开机自启="开启") 159 | 开机自启:="1" 160 | Else 161 | 开机自启:="0" 162 | ;MsgBox, %开机自启% 163 | Label_AutoRun(开机自启) 164 | ;------------------ 托盘右键菜单设置 ---------------- 165 | Menu,Tray,NoStandard 166 | Menu,Tray,Icon ,ICO/程序图标.ico 167 | 168 | GuiTitleContent := A_IsAdmin=1?"(管理员)":"" 169 | Menu,Tray,Tip,XiaoYao_快速跳转%GuiTitleContent%`n版本:v%软件版本号%`n作者:逍遥 170 | 171 | Menu,Tray,add,设置(&D),打开设置 172 | Menu,Tray,add,关于(&G),关于 173 | Menu,Tray,add,目录(&F),打开软件安装目录 174 | Menu,Tray,add 175 | Menu,Tray,add,重启(&R),Menu_Reload 176 | Menu,Tray,add,停用(&S),Menu_Suspend 177 | Menu,Tray,add,退出(&E),Menu_Exit 178 | ;------------------ 快捷键弹出设置 ------------------ 179 | global processList2:="ahk_class Qt5QWindowIcon`n" 常驻窗口窗口列表 180 | 181 | Hotkey, If,WinActiveList(屏蔽xiaoyao程序列表) 182 | if not (菜单全局热键="" || 菜单全局热键="ERROR") 183 | Hotkey, %菜单全局热键%, ShowMenu2 184 | if not (常驻窗口全局热键="" || 常驻窗口全局热键="ERROR") 185 | Hotkey, %常驻窗口全局热键%, 打开常驻搜索窗口2 186 | Hotkey, If 187 | 188 | Hotkey, If,WinActiveList2(屏蔽xiaoyao程序列表) 189 | if not (热键="" || 热键="ERROR") 190 | Hotkey, %热键%, ShowMenu1 191 | if not (一键跳转热键="" || 一键跳转热键="ERROR") 192 | Hotkey, %一键跳转热键%, 一键跳转路径 193 | if not (常驻搜索窗口呼出热键="" || 常驻搜索窗口呼出热键="ERROR") 194 | Hotkey, %常驻搜索窗口呼出热键%, 打开常驻搜索窗口 195 | Hotkey, If 196 | 197 | ;深色/浅色主题切换1【开始】--------------------------------- 198 | if (IsDarkMode() and 深浅主题切换="跟随系统") or (深浅主题切换="深色"){ 199 | Menu_Dark(2) ;菜单强制深色 200 | if (菜单背景颜色="") 201 | 菜单背景颜色 := "0x202020" ; 深色背景 202 | } 203 | ;深色/浅色主题切换1【结束】--------------------------------- 204 | 205 | ;------------------ 自动弹出菜单设置 ------------------ 206 | ;If (自动弹出常驻窗口="开启") 207 | ;SetTimer, 自动弹出常驻事件,10 208 | FileDelete, %A_Temp%\跳转默认打开记录.txt 209 | run,"%A_ScriptDir%\XiaoYao_快速跳转.exe" "%A_ScriptDir%\辅助\自动弹出常驻窗口.ahk" 210 | 211 | If (自动弹出菜单="开启"){ 212 | ;常驻窗口窗口列表:="选择解压路径 ahk_class #32770 ahk_exe Bandizip.exe`n选择 ahk_class #32770 ahk_exe Bandizip.exe" 213 | ; 解析窗口列表到数组 214 | windows := [] 215 | Loop, Parse, 常驻窗口窗口列表, `n, `r 216 | { 217 | if not (RegExMatch(A_LoopField, "^\s*$")) ; 跳过空行 218 | windows.Push(Trim(A_LoopField)) 219 | } 220 | ; 设置定时器检查窗口(每秒检查一次) 221 | SetTitleMatchMode, 2 ; 使用部分匹配窗口标题 222 | SetTimer, 检查窗口列表, 10 223 | 224 | ReplaceBrowseForFolder(true) 225 | 226 | loop 227 | { 228 | WinWaitActive, ahk_class #32770 229 | sleep, %延迟自动弹出时间% 230 | if WinActive("ahk_class #32770"){ 231 | ;----------------黑名单窗口跳过----------- 232 | for index, winTitle2 in windows2 233 | { 234 | ;检查窗口是否存在 235 | ;MsgBox, %winTitle2% 236 | if WinActive(winTitle2){ 237 | 黑名单窗口:="1" 238 | Break 239 | } 240 | } 241 | if (黑名单窗口="1"){ 242 | 黑名单窗口:="0" 243 | ;MsgBox, 1 244 | Continue 245 | } 246 | ;----------------黑名单窗口跳过----------- 247 | 248 | WinID2 := WinExist("A") 249 | 250 | sleep, 100 251 | DialogType := SmellsLikeAFileDialog(WinID2) 252 | If DialogType{ 253 | WinGetClass, WindowClass, ahk_id %WinID2% ; 获取目标窗口的类名 254 | if (WindowClass = "#32770"){ ; 判断类名是否为 #32770 255 | Gosub, ShowMenu 256 | Gosub,自动弹出菜单计数 257 | DialogType := "" 258 | } 259 | } 260 | } 261 | WinWaitNotActive, ahk_class #32770 262 | sleep, 100 263 | ;Menu ContextMenu, Delete 264 | WinID2 := "" 265 | DialogType :="" 266 | } 267 | ;SetTimer, 自动弹出菜单事件,10 268 | 269 | } 270 | return 271 | 272 | ;------------------ 生成菜单 ------------------ 273 | ShowMenu: 274 | ExplorerPath:="" 275 | DirectoryOpuspath:="" 276 | TotalCommanderpath:="" 277 | xy所有路径:=XYplorer_Path() 278 | qdir所有路径:=Q_Dir_Path() 279 | dc所有路径:=DoubleCommander_path(给dc发送热键) 280 | 281 | 开头内容:="按shift复制 ctrl打开" 282 | 283 | if (全局性菜单="开启"){ 284 | if (全局性菜单项功能="直接打开") 285 | 开头内容:="全局菜单(直接打开,按shift复制)" 286 | Else 287 | 开头内容:="全局菜单(仅复制,按ctrl打开)" 288 | } 289 | DetectHiddenWindows,Off 290 | ;DetectHiddenWindows,On 291 | $WinID := WinExist("A") 292 | 293 | Menu ContextMenu, Add,%开头内容% , Choice 294 | Menu ContextMenu, Disable, %开头内容% 295 | ; ------------------ File Explorer ------------------ 296 | if WinExist("ahk_exe explorer.exe ahk_class CabinetWClass"){ 297 | folder:=Explorer_Path() 298 | ExplorerPath:=folder 299 | Menu ContextMenu, Add, %folder%, Choice 300 | if (是否加载图标 !="关闭") 301 | Menu ContextMenu, Icon, %folder%, shell32.dll, 5 302 | For $Exp in ComObjCreate("Shell.Application").Windows{ 303 | try folder := $Exp.Document.Folder.Self.Path 304 | if(!folder){ 305 | Continue 306 | } 307 | Menu ContextMenu, Add, %folder%, Choice 308 | if (是否加载图标 !="关闭") 309 | Menu ContextMenu, Icon, %folder%, shell32.dll, 5 310 | } 311 | $Exp := "" 312 | } 313 | ; ------------------ Total Commander ------------------ 314 | SetTitleMatchMode RegEx 315 | if WinExist("ahk_exe i)totalcmd.*\.exe"){ 316 | TotalCommanderpath:=TotalCommander_path("1") 317 | If (TotalCommanderpath != "") { 318 | Menu ContextMenu, Add, %TotalCommanderpath%, Choice 319 | if (是否加载图标 !="关闭") 320 | Menu ContextMenu, Icon, %TotalCommanderpath%, ICO/Totalcmd.ico 321 | } 322 | TotalCommanderpath2:=TotalCommander_path("2") 323 | If (TotalCommanderpath2 != "") { 324 | Menu ContextMenu, Add, %TotalCommanderpath2%, Choice 325 | if (是否加载图标 !="关闭") 326 | Menu ContextMenu, Icon, %TotalCommanderpath2%, ICO/Totalcmd.ico 327 | } 328 | } 329 | SetTitleMatchMode 1 330 | ; ------------------ XYplorer ------------------ 331 | Loop, parse, xy所有路径, `n, `r 332 | { 333 | Menu ContextMenu, Add, %A_LoopField%, Choice 334 | if (是否加载图标 !="关闭") 335 | Menu ContextMenu, Icon, %A_LoopField%, ICO/XYplorer.ico 336 | } 337 | 338 | ; ------------------ Q_Dir ------------------ 339 | Loop, parse, qdir所有路径, `n, `r 340 | { 341 | Menu ContextMenu, Add, %A_LoopField%, Choice 342 | if (是否加载图标 !="关闭") 343 | Menu ContextMenu, Icon, %A_LoopField%, ICO/Q-Dir.ico 344 | } 345 | 346 | ; ------------------ DoubleCommander ------------------ 347 | Loop, parse, dc所有路径, `n, `r 348 | { 349 | Menu ContextMenu, Add, %A_LoopField%, Choice 350 | if (是否加载图标 !="关闭") 351 | Menu ContextMenu, Icon, %A_LoopField%, ICO/DoubleCommander.ico 352 | } 353 | 354 | ; ------------------ Directory Opus ------------------ 355 | if WinExist("ahk_exe dopus.exe"){ 356 | ;MsgBox, 1 357 | DirectoryOpuspath:=DirectoryOpus_path("Clipboard SET {sourcepath}") 358 | If (DirectoryOpus全标签路径="开启") 359 | ;结果:= DirectoryOpusgetinfo() 360 | 结果:= Trim(Trim(DirectoryOpuspath "`n" DirectoryOpus_path("Clipboard SET {destpath}"),"`n") "`n" DirectoryOpusgetinfo(),"`n") 361 | Else 362 | 结果:= Trim(DirectoryOpuspath "`n" DirectoryOpus_path("Clipboard SET {destpath}"),"`n") 363 | 364 | Loop, parse, 结果, `n 365 | { 366 | geshihua:= RTrim(A_LoopField,"\") 367 | Menu ContextMenu, Add, %geshihua%, Choice 368 | if (是否加载图标 !="关闭") 369 | Menu ContextMenu, Icon,%geshihua%, ICO/dopus.ico 370 | } 371 | } 372 | ; ------------------ 常用路径 ------------------ 373 | 自定义常用路径:=程序专属路径筛选(自定义常用路径2) 374 | if (深浅主题切换="浅色" or (深浅主题切换="跟随系统" and not IsDarkMode())) 375 | Menu ContextMenu, Add 376 | Menu ContextMenu, Add, < 常用路径 >, Choice 377 | Menu ContextMenu, Disable, < 常用路径 > 378 | ;在ini配置里添加自定义路径,`n隔开,只修改其中路径即可 379 | Loop, parse, 自定义常用路径, `n, `r 380 | { 381 | if (A_Index = (常用路径最多显示数量 + 1)){ 382 | Menu, 更多常用, Add,更多常用, Choice 383 | Menu, 更多常用, Disable,更多常用 384 | Menu ContextMenu, Add, (&M)更多常用, :更多常用 385 | if (是否加载图标 !="关闭") 386 | Menu ContextMenu, Icon,(&M)更多常用, shell32.dll, 44 387 | if (失效路径显示设置 !="关闭") or (失效路径显示设置 ="关闭" and FileExist(A_LoopField)){ 388 | Menu, 更多常用, Add, %A_LoopField%, Choice 389 | if (是否加载图标 !="关闭") 390 | Menu, 更多常用, Icon,%A_LoopField%, shell32.dll, 44 391 | } 392 | }Else if (A_Index > (常用路径最多显示数量 + 1)){ 393 | if (失效路径显示设置 !="关闭") or (失效路径显示设置 ="关闭" and FileExist(A_LoopField)){ 394 | Menu, 更多常用, Add, %A_LoopField%, Choice 395 | if (是否加载图标 !="关闭") 396 | Menu, 更多常用, Icon,%A_LoopField%, shell32.dll, 44 397 | } 398 | }Else{ 399 | if (失效路径显示设置 !="关闭") or (失效路径显示设置 ="关闭" and FileExist(A_LoopField)){ 400 | Menu ContextMenu, Add, (&%A_index%)%A_LoopField%, Choice 401 | if (是否加载图标 !="关闭") 402 | Menu ContextMenu, Icon,(&%A_index%)%A_LoopField%, shell32.dll, 44 ;44也可以 403 | } 404 | } 405 | } 406 | 407 | Loop, 5 408 | { 409 | 常用路径%A_Index%:= 程序专属路径筛选(常用路径%A_Index%) 410 | if (常用路径开关%A_Index%="1" and 常用路径%A_Index%!="" and 常用路径名称%A_Index%!=""){ 411 | 常用路径名称:= 常用路径名称%A_Index% 412 | 更多常用路径:="更多常用路径" A_Index 413 | Loop, parse, 常用路径%A_Index%, `n, `r 414 | { 415 | 416 | if (失效路径显示设置 !="关闭") or (失效路径显示设置 ="关闭" and FileExist(A_LoopField)){ 417 | Menu, %更多常用路径%, Add, %A_LoopField%, Choice 418 | if (是否加载图标 !="关闭") 419 | Menu, %更多常用路径%, Icon,%A_LoopField%, shell32.dll, 4 420 | } 421 | } 422 | 423 | Menu ContextMenu, Add, %常用路径名称%, :%更多常用路径% 424 | if (是否加载图标 !="关闭") 425 | Menu ContextMenu, Icon,%常用路径名称%, shell32.dll, 44 426 | ;Gui,searchbox: Add, Button,x+0 y0 g常用路径%A_Index%,%常用路径名称% 427 | 428 | } 429 | } 430 | 431 | ; ------------------ 历史打开 ------------------ 432 | if (深浅主题切换="浅色" or (深浅主题切换="跟随系统" and not IsDarkMode())) 433 | Menu ContextMenu, Add 434 | 435 | Menu, 历史打开1, Add, 路径列表, Choice 436 | Menu, 历史打开1, Disable, 路径列表 437 | Menu ContextMenu, Add, (&H)历史打开, :历史打开1 438 | if (是否加载图标 !="关闭") 439 | Menu ContextMenu, Icon,(&H)历史打开, shell32.dll, 20 440 | if FileExist(A_ScriptDir "\ICO\历史跳转.ini"){ 441 | 历史跳转:="" 442 | 历史跳转:=全局历史跳转 443 | ;FileRead, 历史跳转, %A_ScriptDir%\ICO\历史跳转.ini 444 | if (历史跳转 !=""){ 445 | Loop, parse, 历史跳转, `n, `r 446 | { 447 | if !(RegExMatch(A_LoopField, "^\s*$")){ ;判断是否是空白行 448 | if (失效路径显示设置 !="关闭") or (失效路径显示设置 ="关闭" and FileExist(A_LoopField)){ 449 | Menu, 历史打开1, Add, %A_LoopField%, Choice 450 | if (是否加载图标 !="关闭") 451 | Menu, 历史打开1, Icon,%A_LoopField%, shell32.dll, 4 452 | } 453 | } 454 | } 455 | } 456 | } 457 | ; ------------------ do收藏夹 ------------------ 458 | if (DO的收藏夹="开启") and (do收藏夹所有路径 !=""){ 459 | 460 | Menu, do收藏夹, Add,部分收藏夹需先运行do, Choice 461 | Menu, do收藏夹, Disable,部分收藏夹需先运行do 462 | Menu ContextMenu, Add, (&H)do收藏夹, :do收藏夹 463 | if (是否加载图标 !="关闭") 464 | Menu ContextMenu, Icon,(&H)do收藏夹, shell32.dll, 20 465 | if (do收藏夹所有路径 !=""){ 466 | Loop, parse, do收藏夹所有路径, `n, `r 467 | { 468 | if !(RegExMatch(A_LoopField, "^\s*$")){ ;判断是否是空白行 469 | if (失效路径显示设置 !="关闭") or (失效路径显示设置 ="关闭" and FileExist(A_LoopField)){ 470 | Menu, do收藏夹, Add, %A_LoopField%, Choice 471 | if (是否加载图标 !="关闭") 472 | Menu, do收藏夹, Icon,%A_LoopField%, shell32.dll, 4 473 | } 474 | } 475 | } 476 | } 477 | } 478 | ; ------------------ 设置 ------------------ 479 | Gosub, 读取默认路径配置 480 | 481 | if (自动跳转到默认路径="关闭") 482 | Menu, 更多设置项, Add, 开启 自动跳默认路径, 开启自动跳默认路径 483 | if (自动跳转到默认路径="开启"){ 484 | Menu, 更多设置项, Add, 自动跳默认路径, 关闭自动跳默认路径 485 | Menu, 更多设置项, Icon, 自动跳默认路径, shell32.dll, 145 486 | } 487 | 488 | if (历史路径设为默认路径="关闭"){ 489 | Menu, 更多设置项, Add, 开启 历史路径设为默认, 开启历史路径设为默认 490 | if (自动跳转到默认路径="关闭") 491 | Menu, 更多设置项, Disable, 开启 历史路径设为默认 492 | } 493 | if (历史路径设为默认路径="开启"){ 494 | Menu, 更多设置项, Add, 历史路径设为默认, 关闭历史路径设为默认 495 | Menu, 更多设置项, Icon, 历史路径设为默认, shell32.dll, 145 496 | if (自动跳转到默认路径="关闭") 497 | Menu, 更多设置项, Disable, 历史路径设为默认 498 | } 499 | 500 | Menu, 更多设置项, Add, 设置 默认路径, 设置默认路径 501 | Menu, 更多设置项, Add, 查看 当前自动跳转路径, 查看默认路径 502 | if (自动跳转到默认路径="关闭") or (自动跳转到默认路径="开启" and 历史路径设为默认路径="开启"){ 503 | Menu, 更多设置项, Disable, 设置 默认路径 504 | Menu, 更多设置项, Disable, 查看 当前自动跳转路径 505 | } 506 | Menu, 更多设置项, Add 507 | Menu, 更多设置项, Add, 在该程序中禁用xiaoyao, 在该程序中禁用xiaoyao 508 | 509 | Menu, 更多设置项, Add 510 | Menu, 更多设置项, Add, 设置(&D), 打开设置 511 | Menu, 更多设置项, Add, 重启(&R), Menu_Reload 512 | Menu, 更多设置项, Add, 退出(&E), Menu_Exit 513 | 514 | Menu ContextMenu, Add, (&S)打开设置, :更多设置项 515 | if (是否加载图标 !="关闭") 516 | Menu ContextMenu, Icon,(&S)打开设置, shell32.dll, 163 517 | ; ------------------------------------------ 518 | Menu ContextMenu, Add, (&C)关闭菜单, 关闭菜单 519 | if (是否加载图标 !="关闭") 520 | Menu ContextMenu, Icon,(&C)关闭菜单, shell32.dll, 28 521 | ; ------------------------------------------ 522 | Menu ContextMenu, UseErrorLevel 523 | Menu ContextMenu, Color, %菜单背景颜色% 524 | 525 | 弹出位置X坐标2:= Calculate(字符坐标替换(弹出位置X坐标)) 526 | 弹出位置Y坐标2:= Calculate(字符坐标替换(弹出位置Y坐标)) 527 | 528 | if (弹出位置X坐标2="" || 弹出位置X坐标2="ERROR") 529 | 弹出位置X坐标2:=100 530 | if (弹出位置Y坐标2="" || 弹出位置Y坐标2="ERROR") 531 | 弹出位置Y坐标2:=100 532 | 533 | ;高亮当前活动标签 534 | Firstpath:=Trim(ExplorerPath "`n" DirectoryOpuspath "`n" TotalCommanderpath,"`n") 535 | ;Firstpath:=Trim(DirectoryOpus_path("Clipboard SET {sourcepath}") "`n" Explorer_Path() "`n" TotalCommander_path(),"`n") 536 | Loop, parse, Firstpath, `n, `r 537 | { 538 | 当前活动标签:=RegExReplace(A_LoopField, "^\((.*?)\)") 539 | 当前活动标签:=RTrim(A_LoopField,"\") 540 | if FileExist(当前活动标签){ 541 | Menu, ContextMenu, Rename, %当前活动标签% , (&A)%当前活动标签% 542 | Break 543 | } 544 | } 545 | ;显示菜单------------------------------------------------- 546 | ;MsgBox, %弹出位置X坐标2%`n%弹出位置Y坐标2% 547 | if (弹出位置X坐标2="0" and 弹出位置Y坐标2="0") ;如果是0,0则显示在鼠标位置 548 | Menu ContextMenu, Show 549 | Else 550 | Menu ContextMenu, Show, %弹出位置X坐标2%,%弹出位置Y坐标2% 551 | Menu ContextMenu, Delete 552 | Menu 历史打开1, Delete 553 | if (DO的收藏夹="开启") 554 | Menu do收藏夹, Delete 555 | Menu 更多设置项, Delete 556 | 557 | 全局性菜单:="" 558 | 559 | ;MsgBox, 1 560 | if (DO的收藏夹="开启") 561 | do收藏夹所有路径:=DirectoryOpusgetfa() 562 | Return 563 | 564 | ShowMenu2: 565 | 全局性菜单:="开启" 566 | Gosub, ShowMenu 567 | Gosub,手动弹出计数 568 | Return 569 | 570 | ShowMenu1: 571 | Gosub, ShowMenu 572 | Gosub,手动弹出计数 573 | Return 574 | ; ------------------------------------------------------------------- 575 | Choice: 576 | ;$FolderPath := A_ThisMenuItem 577 | $FolderPath:=RegExReplace(A_ThisMenuItem, "^\((.*?)\)") 578 | if GetKeyState("shift"){ ; 判断是否按下 shift 键 579 | Clipboard:=$FolderPath 580 | ttip("已复制: "Clipboard,2000) 581 | Return 582 | } 583 | 584 | if GetKeyState("ctrl"){ ; 判断是否按下 ctrl 键 585 | Run, % $FolderPath 586 | Return 587 | } 588 | 589 | if (全局性菜单="开启"){ 590 | ;MsgBox, %全局性菜单项功能% 591 | if (全局性菜单项功能="直接打开"){ 592 | Run, % $FolderPath 593 | }Else{ 594 | Clipboard:=$FolderPath 595 | ttip("已复制: "Clipboard,2000) 596 | } 597 | Return 598 | } 599 | 600 | Gosub FeedExplorerOpenSave 601 | ;MsgBox Folder = %$FolderPath% 602 | if FileExist($FolderPath){ 603 | 写入文本到($FolderPath,A_ScriptDir "\ICO\历史跳转.ini",保留个数) 604 | } 605 | FileRead, 全局历史跳转, %A_ScriptDir%\ICO\历史跳转.ini 606 | ;global 全局历史跳转 607 | return 608 | ; ------------------------------------------------------------------- 609 | 打开设置: 610 | Gosub, 设置可视化 611 | /* 612 | if FileExist(A_ScriptDir "\个人配置.ini") 613 | run,%A_ScriptDir%\个人配置.ini 614 | Else 615 | run,%A_ScriptDir% 616 | */ 617 | return 618 | ; ------------------------------------------------------------------- 619 | 620 | 一键跳转路径: 621 | Gosub,手动弹出计数 622 | $WinID := WinExist("A") 623 | ;MsgBox,1 624 | Firstpath:=Trim(Explorer_Path() "`n" DirectoryOpus_path("Clipboard SET {sourcepath}") "`n" TotalCommander_path() "`n" XYplorer_Path("1") "`n" DoubleCommander_path(给dc发送热键),"`n") 625 | ;expath:=Explorer_Path() 626 | ;dopath:=Trim(DirectoryOpus_path("Clipboard SET {sourcepath}")) 627 | ;tcpath:=TotalCommander_path() 628 | $FolderPath="" 629 | Loop, parse, Firstpath, `n, `r 630 | { 631 | if !(RegExMatch(A_LoopField, "^\s*$")){ ;判断是否是空白行 632 | $FolderPath:=RTrim( RegExReplace(A_LoopField, "^\((.*?)\)"),"\") ;去掉括号和别名,并去掉结尾的斜杠 633 | Break 634 | } 635 | } 636 | if ($FolderPath="") 637 | return 638 | ;MsgBox,%$FolderPath% 639 | ;$FolderPath:=RegExReplace(A_ThisMenuItem, "^\((.*?)\)") 640 | ;判断文本内容是否已存在($FolderPath,A_ScriptDir "\ICO\历史跳转.ini",保留个数) 641 | if FileExist($FolderPath){ 642 | 写入文本到($FolderPath,A_ScriptDir "\ICO\历史跳转.ini",保留个数) 643 | } 644 | FileRead, 全局历史跳转, %A_ScriptDir%\ICO\历史跳转.ini 645 | Gosub FeedExplorerOpenSave 646 | return 647 | ; ------------------------------------------------------------------- 648 | FeedExplorerOpenSave: 649 | 另存为窗口id值:=$WinID 650 | 跳转目标路径:=$FolderPath 651 | ;MsgBox,%跳转目标路径% 652 | run,"%A_AhkPath%" "%A_ScriptDir%\辅助\常驻跟随窗口.ahk" -跳转事件 %另存为窗口id值% "%跳转目标路径%" 653 | 654 | Return 655 | ;------------------------------------------- 656 | 关闭菜单: 657 | Return 658 | 关于: 659 | ;Gui,guanyu:+AlwaysOnTop 660 | Gui,guanyu:font, s10 661 | Gui,guanyu:Add, Edit,r9 w380,作者:逍遥`nhttps://github.com/lch319/XiaoYao_QuickJump`n`nQQ群:`n246308937(RunAny快速启动一劳永逸)`n736344313(Directory Opus 2000人群)`n`n在打开或保存对话框中,快速定位到当前打开的文件夹路径。`n目前支持 资管/TC/DO/XY/Q-Dir 662 | Gui,guanyu:Show,,快速跳转_v%软件版本号% 663 | Return 664 | Menu_Reload: 665 | Critical 666 | FileDelete, %A_Temp%\常驻窗口关闭记录.txt 667 | FileDelete, %A_Temp%\跳转默认打开记录.txt 668 | Run,%A_AhkPath% /force /restart "%A_ScriptFullPath%" 669 | 670 | ExitApp 671 | return 672 | Menu_Suspend: 673 | Menu,tray,ToggleCheck,停用(&S) 674 | Suspend 675 | return 676 | Menu_Exit: 677 | FileDelete, %A_Temp%\常驻窗口关闭记录.txt 678 | FileDelete, %A_Temp%\跳转默认打开记录.txt 679 | run,%comSpec% /c taskkill /f /im XiaoYao_快速跳转.exe,,Hide 680 | ExitApp 681 | return 682 | 683 | 打开软件安装目录: 684 | Run, %A_ScriptDir% 685 | return 686 | 687 | ;字符坐标替换------------------------------------------------------------------------------ 688 | 字符坐标替换(str){ 689 | ;global 唯一性 690 | 691 | hwnd := WinExist("A") 692 | WinGetPos, 父窗口X, 父窗口Y, 父窗口W, 父窗口H, A 693 | ;GetWindowRect(hwnd, 父窗口X, 父窗口Y) 694 | GetClientSize(hwnd, 父窗口W, 父窗口H) 695 | 696 | CoordMode, Mouse, Screen 697 | MouseGetPos, 鼠标位置X, 鼠标位置Y 698 | 699 | str := StrReplace(str, "鼠标位置X", 鼠标位置X) 700 | str := StrReplace(str, "鼠标位置Y", 鼠标位置Y) 701 | 702 | str := StrReplace(str, "父窗口X", 父窗口X) 703 | str := StrReplace(str, "父窗口Y", 父窗口Y) 704 | str := StrReplace(str, "父窗口W", 父窗口W) 705 | str := StrReplace(str, "父窗口H", 父窗口H) 706 | Return str 707 | } 708 | 709 | RemoveToolTip: 710 | ToolTip 711 | return 712 | 713 | /* 714 | 自动弹出菜单事件: 715 | Loop, parse, processList, `n, `r 716 | { 717 | ; 使用 WinActive 检查活动窗口是否匹配条件 718 | if WinActive(A_LoopField){ 719 | sleep, %延迟自动弹出时间% 720 | WinID2 := WinExist(A_LoopField) 721 | if WinActive("ahk_class #32770"){ 722 | if not WinActive("ahk_exe IDMan.exe"){ 723 | ;WinID2 := WinExist("A") 724 | sleep, 100 725 | DialogType := SmellsLikeAFileDialog(WinID2) 726 | If DialogType{ 727 | Gosub, ShowMenu 728 | DialogType := "" 729 | } 730 | } 731 | WinWaitNotActive, ahk_class #32770 732 | sleep, 100 733 | ;Menu ContextMenu, Delete 734 | WinID2 := "" 735 | DialogType :="" 736 | Return 737 | }Else{ 738 | Gosub, ShowMenu 739 | if (WinID2 != 0){ 740 | WinWaitNotActive, %A_LoopField% 741 | sleep, 100 742 | } 743 | Return 744 | } 745 | } 746 | } 747 | Return 748 | */ 749 | 750 | /* 751 | ;可视化gui设置---------------------------------------------------------------- 752 | ;开机自启,等于0禁用,等于1开启 753 | Label_AutoRun(Auto_Launch:="0"){ 754 | SplitPath, A_ScriptName , , , , OutNameNoExt 755 | RegRead, Auto_Launch_reg, HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run, %OutNameNoExt% 756 | Auto_Launch_reg := Auto_Launch_reg=A_ScriptDir "\" OutNameNoExt ".exe" ? 1 : 0 757 | ;MsgBox, %Auto_Launch_reg% 758 | If(Auto_Launch!=Auto_Launch_reg){ 759 | Auto_Launch_reg:=Auto_Launch 760 | If(Auto_Launch){ 761 | RegWrite, REG_SZ, HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run, %OutNameNoExt%, %A_ScriptDir%\%OutNameNoExt%.exe 762 | }Else{ 763 | RegDelete, HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run, %OutNameNoExt% 764 | } 765 | } 766 | } 767 | */ 768 | ;可视化gui设置---------------------------------------------------------------- 769 | ;开机自启,等于0禁用,等于1开启 770 | Label_AutoRun(Auto_Launch:="0"){ 771 | RegDelete, HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run, 主程序 772 | ;SplitPath, A_ScriptName , , , , OutNameNoExt 773 | RegRead, Auto_Launch_reg, HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run, XiaoYao_快速跳转 774 | Auto_Launch_reg := Auto_Launch_reg=A_ScriptDir "\XiaoYao_快速跳转.exe" ? 1 : 0 775 | ;MsgBox, %Auto_Launch_reg% 776 | If(Auto_Launch!=Auto_Launch_reg){ 777 | Auto_Launch_reg:=Auto_Launch 778 | If(Auto_Launch){ 779 | RegWrite, REG_SZ, HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run, XiaoYao_快速跳转, %A_ScriptDir%\XiaoYao_快速跳转.exe 780 | }Else{ 781 | RegDelete, HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run, XiaoYao_快速跳转 782 | } 783 | } 784 | } 785 | 设置可视化: 786 | run,"%A_AhkPath%" "%A_ScriptDir%\辅助\用户设置GUI.ahk" 787 | Return 788 | 789 | ;================================================================================================== 790 | 791 | 打开常驻搜索窗口: 792 | Gosub,手动弹出计数 793 | 获取窗口id:=WinExist("A") 794 | run,"%A_AhkPath%" "%A_ScriptDir%\辅助\常驻跟随窗口.ahk" -常驻窗口跟随 %获取窗口id% 795 | return 796 | 797 | 打开常驻搜索窗口2: 798 | Gosub,手动弹出计数 799 | 获取窗口id:=WinExist("A") 800 | run,"%A_AhkPath%" "%A_ScriptDir%\辅助\常驻跟随窗口.ahk" -常驻窗口跟随 %获取窗口id% 全局版 801 | return 802 | 803 | 检查窗口列表: 804 | ;----------------黑名单窗口跳过----------- 805 | for index, winTitle2 in windows2 806 | { 807 | ;检查窗口是否存在 808 | if WinActive(winTitle2) 809 | Return 810 | } 811 | ;----------------黑名单窗口跳过----------- 812 | 813 | for index, winTitle in windows 814 | { 815 | ; 检查窗口是否存在 816 | if WinActive(winTitle){ 817 | WinID2 := WinExist(winTitle) 818 | Gosub, ShowMenu 819 | Gosub,自动弹出菜单计数 820 | ;MsgBox, 0x40, 窗口出现提示, 检测到目标窗口:`n"%activeTitle%"`n`n匹配条件:`n%winTitle% 821 | WinWaitNotActive,% winTitle 822 | break ; 每次只处理一个出现的窗口 823 | } 824 | } 825 | return 826 | 827 | ReplaceBrowseForFolder(Params*) { 828 | Static EVENT_OBJECT_SHOW := 0x8002 829 | , OBJID_WINDOW := 0 830 | , INDEXID_CONTAINER := 0 831 | , hHook := 0 832 | If IsObject(Params) { 833 | Return hHook := Params[1] 834 | ? DllCall("SetWinEventHook", "Int", EVENT_OBJECT_SHOW 835 | , "Int", EVENT_OBJECT_SHOW, "Ptr", 0, "Ptr" 836 | , RegisterCallback(A_ThisFunc) 837 | , "Int", 0, "Int", 0, "Int", 0, "Ptr") 838 | : DllCall("UnhookWinEvent", "Ptr", hHook), DllCall("CoUninitialize") 839 | } Else { 840 | hwnd := NumGet(params+0, 2*A_PtrSize, "Ptr") 841 | idObject := NumGet(params+0, 3*A_PtrSize, "Int") 842 | idChild := NumGet(params+0, 4*A_PtrSize, "Int") 843 | If (idObject != OBJID_WINDOW || idChild != INDEXID_CONTAINER) 844 | Return 845 | WinGetClass wndClass, % "ahk_id" hwnd 846 | If (wndClass != "#32770") 847 | Return 848 | WinGet CtlList, ControlList, % "ahk_id" hwnd 849 | If !( InStr(CtlList, "SHBrowseForFolder ShellNameSpace Control") 850 | || CtlList = "Static1`nStatic2`nSysTreeView321`nButton1`nButton2" ) 851 | Return 852 | ;If (SelectedPath := SelectFolderEx(, , hwnd)) 853 | ;SetPathForBrowseForFolder(SelectedPath, hwnd) 854 | ;Else 855 | ;WinClose % "ahk_id" hwnd 856 | Gosub, ShowMenu 857 | Gosub,自动弹出菜单计数 858 | } 859 | } 860 | 861 | 自动弹出菜单计数: 862 | ;如果配置不存在,新建一个默认配置 863 | if not FileExist(A_ScriptDir "\个人配置.ini") 864 | FileCopy,%A_ScriptDir%\ICO\默认.ini, %A_ScriptDir%\个人配置.ini 865 | 自动弹出菜单计数++ 866 | IniWrite, %自动弹出菜单计数%, %A_ScriptDir%\个人配置.ini,基础配置,自动弹出菜单计数 867 | Return 868 | 869 | 手动弹出计数: 870 | ;如果配置不存在,新建一个默认配置 871 | if not FileExist(A_ScriptDir "\个人配置.ini") 872 | FileCopy,%A_ScriptDir%\ICO\默认.ini, %A_ScriptDir%\个人配置.ini 873 | 手动弹出计数++ 874 | IniWrite, %手动弹出计数%, %A_ScriptDir%\个人配置.ini,基础配置,手动弹出计数 875 | Return 876 | 877 | 开启自动跳默认路径: 878 | IniWrite, 开启, %A_ScriptDir%\个人配置.ini,基础配置,自动跳转到默认路径 879 | if (默认路径="" || 默认路径="ERROR" || !FileExist(默认路径)){ 880 | gosub,设置默认路径 881 | } 882 | 883 | return 884 | 关闭自动跳默认路径: 885 | IniWrite, 关闭, %A_ScriptDir%\个人配置.ini,基础配置,自动跳转到默认路径 886 | return 887 | 开启历史路径设为默认: 888 | IniWrite, 开启, %A_ScriptDir%\个人配置.ini,基础配置,历史路径设为默认路径 889 | return 890 | 关闭历史路径设为默认: 891 | IniWrite, 关闭, %A_ScriptDir%\个人配置.ini,基础配置,历史路径设为默认路径 892 | return 893 | 查看默认路径: 894 | ttip("当前默认路径: " 默认路径, 3000) 895 | return 896 | 897 | 设置默认路径: 898 | run,"%A_AhkPath%" "%A_ScriptDir%\辅助\设置默认路径.ahk" 899 | return 900 | 901 | 读取默认路径配置: 902 | 自动跳转到默认路径:=Var_Read("自动跳转到默认路径","关闭","基础配置",A_ScriptDir "\个人配置.ini","是") 903 | 历史路径设为默认路径:=Var_Read("历史路径设为默认路径","关闭","基础配置",A_ScriptDir "\个人配置.ini","是") 904 | 默认路径:=ReplaceVars(Var_Read("默认路径","","基础配置",A_ScriptDir "\个人配置.ini","是")) 905 | return 906 | 907 | ; 检查窗口处于激活状态 908 | WinActiveList(窗口列表1111){ 909 | excludedProcesses := StrSplit(窗口列表1111, "`,") ; 将窗口列表按 , 分割成数组 910 | ; 遍历检查是否匹配 911 | for index, process in excludedProcesses { 912 | if WinActive("ahk_exe " process) 913 | return false ; 找到匹配项,返回 true 914 | } 915 | 916 | 窗口列表2222:=processList "`n" processList2 917 | ;MsgBox, % 窗口列表2222 918 | SetTitleMatchMode, 2 ; 使用部分匹配窗口标题 919 | excludedProcesses2 := StrSplit(窗口列表2222, "`n") ; 将窗口列表按 , 分割成数组 920 | ; 遍历检查是否匹配 921 | for index, process in excludedProcesses2 { 922 | if WinActive(process){ 923 | ;MsgBox, 1 924 | return false ; 找到匹配项,返回 true 925 | } 926 | } 927 | 928 | return true ; 无匹配项,返回 false 929 | } 930 | 931 | ; 检查窗口处于激活状态 932 | WinActiveList2(窗口列表1111){ 933 | 屏蔽程序:="" 934 | 窗口列表2222:=processList "`n" processList2 935 | ;MsgBox, % 窗口列表2222 936 | excludedProcesses := StrSplit(窗口列表1111, "`,") ; 将窗口列表按 换行 分割成数组 937 | ; 遍历检查是否匹配 938 | for index, process in excludedProcesses { 939 | if WinActive("ahk_exe " process) 940 | 屏蔽程序:="是" 941 | Break 942 | } 943 | 944 | if (屏蔽程序 !="是"){ 945 | ;MsgBox, % 窗口列表2222 946 | SetTitleMatchMode, 2 ; 使用部分匹配窗口标题 947 | excludedProcesses2 := StrSplit(窗口列表2222, "`n") ; 将窗口列表按 , 分割成数组 948 | ; 遍历检查是否匹配 949 | for index, process in excludedProcesses2 { 950 | if WinActive(process) 951 | return true ; 找到匹配项,返回 true 952 | } 953 | } 954 | return false ; 无匹配项,返回 false 955 | } 956 | 957 | #if WinActiveList(屏蔽xiaoyao程序列表) 958 | 959 | #if 960 | 961 | #if WinActiveList2(屏蔽xiaoyao程序列表) 962 | 963 | #if 964 | 965 | 在该程序中禁用xiaoyao: 966 | WinGet, WinExe22, ProcessName, ahk_id %$WinID% 967 | NewList2 := RemoveDuplicateLines(屏蔽xiaoyao程序列表 "`," WinExe22,jiangeci:="`,") 968 | IniWrite, %NewList2%, %A_ScriptDir%\个人配置.ini,基础配置,屏蔽xiaoyao程序列表 969 | run,"%A_ScriptDir%\XiaoYao_快速跳转.exe" "%A_ScriptDir%\主程序.ahk" 970 | ;MsgBox, %NewList2% 971 | return 972 | 973 | Label_AdminLaunch: ; 管理员启动 974 | 管理员启动:=Var_Read("管理员启动","开启","基础配置",A_ScriptDir "\个人配置.ini","是") 975 | if (!A_IsAdmin && 管理员启动="开启") 976 | { 977 | try 978 | { 979 | if A_IsCompiled 980 | Run *RunAs "%A_ScriptFullPath%" /restart 981 | else 982 | Run *RunAs "%A_AhkPath%" /restart "%A_ScriptFullPath%" 983 | }catch{ 984 | MsgBox, 1,, 以【管理员权限】启动失败!将以普通权限启动,管理员应用窗口将失效! 985 | IfMsgBox OK 986 | { 987 | if A_IsCompiled 988 | Run "%A_ScriptFullPath%" /restart 989 | else 990 | Run "%A_AhkPath%" /restart "%A_ScriptFullPath%" 991 | } 992 | } 993 | ExitApp 994 | } 995 | return -------------------------------------------------------------------------------- /辅助/常驻跟随窗口.ahk: -------------------------------------------------------------------------------- 1 | #SingleInstance Off ;~可多开脚本 2 | ;#SingleInstance,Force ;~运行替换旧实例 3 | #NoTrayIcon ;~不显示托盘图标 4 | #Persistent ;;~让脚本持久运行 5 | #Include %A_ScriptDir%\公用函数.ahk 6 | 7 | SetWinDelay, -1 ;设置在每次执行窗口命令,使用 -1 表示无延时 8 | SetBatchLines, -1 ;让操作以最快速度进行. 9 | SetTimer, ExitScript, -5000 ; 设置5秒后执行退出函数 10 | 11 | ;F1:: 12 | ;global 参数1 := "-常驻窗口跟随" 13 | ;global 参数2 := "0x700404" 14 | global 参数1 := A_Args[1] 15 | global 参数2 := A_Args[2] 16 | global 参数3 := A_Args[3] 17 | global 参数4 := A_Args[4] 18 | 19 | ;功能一: 20 | if (参数1="-常驻窗口跟随"){ 21 | DetectHiddenWindows, off 22 | if !WinExist("ahk_id " 参数2) or (参数2="") 23 | ExitApp 24 | Else 25 | SetTimer,父窗口关闭运行事件, 1 ;每1毫秒检测一次父窗口是否关闭 26 | 27 | ;避免重复打开 28 | if (Single(参数2)) { ;独一无二的字符串用于识别脚本,或者称为指纹? 29 | ExitApp 30 | } 31 | Single(参数2) 32 | 33 | global 唯一性:= 参数2 ;获取当前活动窗口的ID 34 | global 窗口标题名称:="常用路径跳转" 唯一性 35 | ;[读取用户自定义配置]------------------------------------- 36 | ;global 自动弹出常驻窗口:="开启" 37 | ;常驻搜索窗口呼出热键=^d 38 | 39 | ;父窗口X, 父窗口Y, 父窗口W, 父窗口H 40 | global 窗口初始坐标x:= "父窗口X - 10 + 父窗口W" 41 | global 窗口初始坐标y:= "父窗口Y + 50" 42 | 43 | global 窗口初始宽度:= "240" 44 | global 窗口初始高度:= "360" 45 | 46 | global 窗口背景颜色:="" 47 | global 窗口字体颜色:="" 48 | global 窗口字体名称:="WenQuanYi Micro Hei" 49 | global 窗口字体大小:="12" 50 | global 窗口透明度:="225" 51 | 52 | global 文件夹名显示在前:="关闭" 53 | ;[读取软件自己的配置]------------------------------------------------ 54 | global 跳转方式:="1" 55 | global 历史跳转保留数:="5" 56 | global DO的收藏夹:="开启" 57 | 58 | ;global 软件安装路径:="D:\RunAny\PortableSoft\XiaoYao_快速跳转" 59 | SplitPath, A_ScriptDir, , parentDir 60 | ;SplitPath, parentDir, , parentDir2 61 | global 软件安装路径:= parentDir 62 | ;MsgBox, %软件安装路径% 63 | if not FileExist(软件安装路径 "\个人配置.ini") 64 | FileCopy,%软件安装路径%\ICO\默认.ini, %软件安装路径%\个人配置.ini 65 | 66 | if FileExist(软件安装路径 "\个人配置.ini"){ 67 | ;自定义常用路径2:=ReplaceVars(Var_Read("","","常用路径",软件安装路径 "\个人配置.ini","是")) 68 | 替换双斜杠单反斜杠双引号:=Var_Read("替换双斜杠单反斜杠双引号","关闭","基础配置",软件安装路径 "\个人配置.ini","是") 69 | DO的收藏夹:=Var_Read("DO的收藏夹","开启","基础配置",软件安装路径 "\个人配置.ini","是") 70 | 跳转方式:=Var_Read("跳转方式","1","基础配置",软件安装路径 "\个人配置.ini","是") 71 | 历史跳转保留数:=Var_Read("历史跳转保留数","5","基础配置",软件安装路径 "\个人配置.ini","是") 72 | 自动弹出常驻窗口:=Var_Read("自动弹出常驻窗口","开启","基础配置",软件安装路径 "\个人配置.ini","是") 73 | 窗口初始坐标x:=Var_Read("窗口初始坐标x","父窗口X + 父窗口W","基础配置",软件安装路径 "\个人配置.ini","是") 74 | 窗口初始坐标y:=Var_Read("窗口初始坐标y","父窗口Y + 20","基础配置",软件安装路径 "\个人配置.ini","是") 75 | 窗口初始宽度:=Var_Read("窗口初始宽度","300","基础配置",软件安装路径 "\个人配置.ini","是") 76 | 窗口初始高度:=Var_Read("窗口初始高度","360","基础配置",软件安装路径 "\个人配置.ini","是") 77 | 窗口背景颜色:=Var_Read("窗口背景颜色","","基础配置",软件安装路径 "\个人配置.ini","是") 78 | 窗口字体颜色:=Var_Read("窗口字体颜色","","基础配置",软件安装路径 "\个人配置.ini","是") 79 | 窗口字体名称:=Var_Read("窗口字体名称","","基础配置",软件安装路径 "\个人配置.ini","是") 80 | 窗口字体大小:=Var_Read("窗口字体大小","9","基础配置",软件安装路径 "\个人配置.ini","是") 81 | 窗口透明度:=Var_Read("窗口透明度","225","基础配置",软件安装路径 "\个人配置.ini","是") 82 | global 文件夹名显示在前:=Var_Read("文件夹名显示在前","关闭","基础配置",软件安装路径 "\个人配置.ini","是") 83 | 全局性菜单项功能:=Var_Read("全局性菜单项功能","复制到剪切板","基础配置",软件安装路径 "\个人配置.ini","是") 84 | 初始文本框内容:=Var_Read("初始文本框内容","当前打开","基础配置",软件安装路径 "\个人配置.ini","是") 85 | 失效路径显示设置:=Var_Read("失效路径显示设置","开启","基础配置",软件安装路径 "\个人配置.ini","是") 86 | 给dc发送热键:=Var_Read("给dc发送热键","^+{F12}","基础配置",软件安装路径 "\个人配置.ini","是") 87 | 窗口文本行距:=Var_Read("窗口文本行距","20","基础配置",软件安装路径 "\个人配置.ini","是") 88 | 屏蔽xiaoyao窗口列表:=Var_Read("","ahk_exe IDMan.exe","窗口列表2",软件安装路径 "\个人配置.ini","是") 89 | 屏蔽xiaoyao程序列表:=Var_Read("屏蔽xiaoyao程序列表","War3.exe,dota2.exe,League of Legends.exe","基础配置",软件安装路径 "\个人配置.ini","是") 90 | 深浅主题切换:=Var_Read("深浅主题切换","跟随系统","基础配置",软件安装路径 "\个人配置.ini","是") 91 | 自动弹出常驻窗口次数:=Var_Read("自动弹出常驻窗口次数","0","基础配置",软件安装路径 "\个人配置.ini","是") 92 | 93 | 自定义_当前打开:=Var_Read("自定义_当前打开","1","基础配置",软件安装路径 "\个人配置.ini","是") 94 | 自定义_常用路径:=Var_Read("自定义_常用路径","1","基础配置",软件安装路径 "\个人配置.ini","是") 95 | 自定义_历史打开:=Var_Read("自定义_历史打开","1","基础配置",软件安装路径 "\个人配置.ini","是") 96 | 自定义_全部路径:=Var_Read("自定义_全部路径","1","基础配置",软件安装路径 "\个人配置.ini","是") 97 | 自定义_do收藏夹:=Var_Read("自定义_do收藏夹","1","基础配置",软件安装路径 "\个人配置.ini","是") 98 | 自定义_粘贴:=Var_Read("自定义_粘贴","1","基础配置",软件安装路径 "\个人配置.ini","是") 99 | 自定义_更多:=Var_Read("自定义_更多","1","基础配置",软件安装路径 "\个人配置.ini","是") 100 | 101 | 自定义_当前打开_文本 :=Var_Read("自定义_当前打开_文本","当前","基础配置",软件安装路径 "\个人配置.ini","是") 102 | 自定义_常用路径_文本 :=Var_Read("自定义_常用路径_文本","常用","基础配置",软件安装路径 "\个人配置.ini","是") 103 | 自定义_历史打开_文本 :=Var_Read("自定义_历史打开_文本","历史","基础配置",软件安装路径 "\个人配置.ini","是") 104 | 自定义_全部路径_文本 :=Var_Read("自定义_全部路径_文本","全部","基础配置",软件安装路径 "\个人配置.ini","是") 105 | 自定义_do收藏夹_文本 :=Var_Read("自定义_do收藏夹_文本","dopus","基础配置",软件安装路径 "\个人配置.ini","是") 106 | 自定义_粘贴_文本 :=Var_Read("自定义_粘贴_文本","粘贴","基础配置",软件安装路径 "\个人配置.ini","是") 107 | 自定义_更多_文本 :=Var_Read("自定义_更多_文本","更多","基础配置",软件安装路径 "\个人配置.ini","是") 108 | 109 | global 名称列最大宽度:=Var_Read("名称列最大宽度","200","基础配置",软件安装路径 "\个人配置.ini","是") 110 | global 单击运行跳转:=Var_Read("单击运行跳转","关闭","基础配置",软件安装路径 "\个人配置.ini","是") 111 | 112 | loop 5 113 | { 114 | 常用路径开关%A_Index%:= Var_Read("常用路径开关" A_Index,"0","基础配置",软件安装路径 "\个人配置.ini","是") 115 | if (常用路径开关%A_Index%="1"){ 116 | 常用路径名称%A_Index%:= Var_Read("常用路径名称" A_Index,"常用" A_Index,"基础配置",软件安装路径 "\个人配置.ini","是") 117 | 常用路径%A_Index%:= 程序专属路径筛选(ReplaceVars(Var_Read("","","常用路径" A_Index,软件安装路径 "\个人配置.ini","是"))) 118 | if (替换双斜杠单反斜杠双引号="开启") 119 | 常用路径%A_Index%:=RegExReplace(StrReplace(常用路径%A_Index%, """", ""), "\\\\|/", "\") 120 | }Else{ 121 | 常用路径名称%A_Index%:= "" 122 | 常用路径%A_Index%:="" 123 | } 124 | } 125 | 126 | } 127 | ;----------------------------------------------------------------------------------- 128 | global ev排除列表:=Var_Read("ev排除列表","!C:\Windows* !?:\$RECYCLE.BIN* !?:\Users\*\AppData\Local\Temp\* !?:\Users\*\AppData\Roaming\*","基础配置",软件安装路径 "\个人配置.ini","是") 129 | global 返回的最多结果次数:=Var_Read("返回的最多结果次数","150","基础配置",软件安装路径 "\个人配置.ini","是") 130 | global 启用ev进行搜索:=Var_Read("启用ev进行搜索","开启","基础配置",软件安装路径 "\个人配置.ini","是") 131 | global 搜索延迟:=Var_Read("搜索延迟","50","基础配置",软件安装路径 "\个人配置.ini","是") 132 | 133 | if (启用ev进行搜索="开启"){ 134 | ;指定Everything.dll或Everything64.dll的路径 135 | global evdll位置:= A_ScriptDir 136 | global everyDLL 137 | ;[检查当前运行Everything的位数] 138 | if(FileExist(evdll位置 "\Everything.dll")){ 139 | everyDLL:=DllCall("LoadLibrary", str, "Everything.dll") ? "Everything.dll" : "Everything64.dll" 140 | }else if(FileExist(evdll位置 "\Everything64.dll")){ 141 | everyDLL:=DllCall("LoadLibrary", str, "Everything64.dll") ? "Everything64.dll" : "Everything.dll" 142 | } 143 | ;Else{ 144 | ;MsgBox, 16, 错误, 未找到Everything.dll或Everything64.dll文件.`n请将其放置在脚本同目录下或指定路径中. 145 | ;Return 146 | ;} 147 | ;最终确定DLL路径 148 | global everyDLL:=evdll位置 "\" everyDLL 149 | 150 | ;global ev排除列表:="!C:\Windows* !?:\$RECYCLE.BIN* !?:\Users\*\AppData\Local\Temp\* !?:\Users\*\AppData\Roaming\*" 151 | ;global 返回的最多结果次数:="150" 152 | } 153 | ;------------------------------------------------------------------- 154 | gosub,将所有内容路径加入到数组 155 | gosub,将所有内容路径加入到数组2 156 | 157 | if (初始文本框内容="常用路径"){ 158 | global 文本框内容写入:= 换行符转换为竖杠(移除空白行(自定义常用路径)) 159 | }Else if (初始文本框内容="历史打开"){ 160 | global 文本框内容写入:= 换行符转换为竖杠(移除空白行(历史所有路径)) 161 | }Else if (初始文本框内容="全部路径"){ 162 | global 文本框内容写入:= 换行符转换为竖杠(Trim(移除空白行(合并所有路径),"`n")) 163 | }Else if (初始文本框内容="do收藏夹"){ 164 | global 文本框内容写入:= 换行符转换为竖杠(移除空白行(获取到的do收藏夹路径)) 165 | }Else{ 166 | global 文本框内容写入:= 换行符转换为竖杠(RemoveDuplicateLines(移除空白行(Trim(资管所有路径 "`n" do所有路径 "`n" tc所有路径 "`n" xy所有路径 "`n" qdir所有路径 "`n" dc所有路径,"`n")))) 167 | if (文本框内容写入="") 168 | global 文本框内容写入:= 换行符转换为竖杠(移除空白行(自定义常用路径)) 169 | } 170 | gosub,显示常驻搜索窗口 171 | gosub,跟随当前窗口 172 | Return 173 | } 174 | if (参数1="-跳转事件"){ 175 | global 跳转方式:="1" 176 | SplitPath, A_ScriptDir, , parentDir 177 | global 软件安装路径:= parentDir 178 | if not FileExist(软件安装路径 "\个人配置.ini") 179 | FileCopy,%软件安装路径%\ICO\默认.ini, %软件安装路径%\个人配置.ini 180 | 181 | if FileExist(软件安装路径 "\个人配置.ini"){ 182 | 跳转方式:=Var_Read("跳转方式","1","基础配置",软件安装路径 "\个人配置.ini","是") 183 | } 184 | 另存为窗口id值:= 参数2 185 | 跳转目标路径:= 参数3 186 | 187 | gosub,读取配置跳转方式 188 | ExitApp 189 | } 190 | ;没有参数则关闭脚本 191 | ExitApp 192 | Return 193 | ;[显示窗口]------------------------------------- 194 | 显示常驻搜索窗口: 195 | if WinExist(窗口标题名称 " ahk_class AutoHotkeyGUI"){ 196 | ;MsgBox, 已存在常驻搜索窗口,请先关闭后再打开 197 | ExitApp 198 | Return 199 | } 200 | 201 | Gui,Destroy 202 | 203 | ;深色/浅色主题切换1【开始】--------------------------------- 204 | if (IsDarkMode() and 深浅主题切换="跟随系统") or (深浅主题切换="深色"){ 205 | Menu_Dark(2) ;菜单强制深色 206 | if (窗口背景颜色="") 207 | 窗口背景颜色 := "0x202020" ; 深色背景 208 | if (窗口字体颜色="") 209 | 窗口字体颜色 := "0xE0E0E0" ; 浅色字体 210 | } 211 | ;深色/浅色主题切换1【结束】--------------------------------- 212 | 213 | global Gui_winID 214 | ;Gui, +Resize +AlwaysOnTop +ToolWindow +HwndGui_winID 215 | Gui, +Resize +AlwaysOnTop +ToolWindow +HwndGui_winID 216 | ;Clipboard:= Gui_winID 217 | FileAppend,%Gui_winID%`n,%A_Temp%\后台隐藏运行脚本记录.txt 218 | 219 | Gui, Color,%窗口背景颜色%,%窗口背景颜色% 220 | Gui, Font,c%窗口字体颜色%,%窗口字体名称% 221 | 222 | Gui, Add, Text,x-7 y0,% " " 223 | if (自定义_当前打开 !="0") 224 | Gui, Add, Button,x+0 y0 g当前打开 HwndBtn1,%自定义_当前打开_文本% 225 | 226 | if (自定义_常用路径 !="0"){ 227 | Gui, Add, Button,x+0 y0 g常用路径 HwndBtn2,%自定义_常用路径_文本% 228 | Loop, 5 229 | { 230 | if (常用路径开关%A_Index%="1" and 常用路径%A_Index%!="" and 常用路径名称%A_Index%!=""){ 231 | 常用路径名称:= 常用路径名称%A_Index% 232 | Gui, Add, Button,x+0 y0 g常用路径%A_Index% Hwndbtn常%A_Index%,%常用路径名称% 233 | } 234 | } 235 | } 236 | if (自定义_历史打开 !="0") 237 | Gui, Add, Button,x+0 y0 g历史打开 HwndBtn3,%自定义_历史打开_文本% 238 | 239 | if (自定义_全部路径 !="0") 240 | Gui, Add, Button,x+0 y0 g全部目录路径 HwndBtn4,%自定义_全部路径_文本% 241 | 242 | if (DO的收藏夹="开启") and (获取到的do收藏夹路径 !="") and (自定义_do收藏夹 !="0") 243 | Gui, Add, Button,x+0 y0 gdo收藏夹 HwndBtn5,%自定义_do收藏夹_文本% 244 | 245 | if (自定义_粘贴 !="0") 246 | Gui, Add, Button,x+0 y0 g直接复制粘贴 HwndBtn6,%自定义_粘贴_文本% 247 | 248 | if (自定义_更多 !="0") 249 | Gui, Add, Button,x+0 y0 g更多功能设置 HwndBtn7,%自定义_更多_文本% 250 | 251 | Gui, Font,s%窗口字体大小% 252 | Gui, Add, Edit, w200 x-2 Hwnd搜索框ID v搜索框输入值, % "" 253 | EM_SETCUEBANNER(搜索框ID, "输入框") 254 | 255 | if (文件夹名显示在前 ="开启") 256 | Gui, Add, ListView,w200 x-2 y+6 Hwnd文本框ID g文本框选择后执行的操作 v文本框选择值1 -Hdr -Multi +AltSubmit +HScroll, 名称|完整路径 257 | Else 258 | Gui, Add, ListView,w200 x-2 y+6 Hwnd文本框ID g文本框选择后执行的操作 v文本框选择值1 -Hdr -Multi +AltSubmit +HScroll, 完整路径 259 | 260 | ;深色/浅色主题切换2【开始】--------------------------------- 261 | if (IsDarkMode() and 深浅主题切换="跟随系统") or (深浅主题切换="深色"){ 262 | DllCall("uxtheme\SetWindowTheme", "ptr", 搜索框ID, "str", "DarkMode_Explorer", "ptr", 0) 263 | DllCall("uxtheme\SetWindowTheme", "ptr", 文本框ID, "str", "DarkMode_Explorer", "ptr", 0) 264 | Loop, 7 265 | { 266 | ; 根据系统主题设置标题栏颜色(适用于Windows 10+) 267 | if (A_OSVersion >= "10.0.17763" && SubStr(A_OSVersion, 1, 3) = "10.") { 268 | attr := A_OSVersion >= "10.0.18985" ? 20 : 19 269 | DllCall("dwmapi\DwmSetWindowAttribute", "ptr", Gui_winID, "int", attr, "int*", 1, "int", 4) 270 | } 271 | DllCall("uxtheme\SetWindowTheme", "ptr", Btn%A_Index%, "str", "DarkMode_Explorer", "ptr", 0) 272 | DllCall("uxtheme\SetWindowTheme", "ptr", Btn常%A_Index%, "str", "DarkMode_Explorer", "ptr", 0) 273 | } 274 | 275 | } 276 | ;深色/浅色主题切换2【结束】--------------------------------- 277 | Gui +LastFound ; 让 GUI 窗口成为上次找到的窗口以用于下一行的命令. 278 | 279 | ;MsgBox,% 字符坐标替换(窗口初始坐标x) 280 | 窗口初始坐标x:= Calculate(字符坐标替换(窗口初始坐标x)) 281 | 窗口初始坐标y:= Calculate(字符坐标替换(窗口初始坐标y)) 282 | 窗口初始宽度:= Calculate(字符坐标替换(窗口初始宽度)) 283 | 窗口初始高度:= Calculate(字符坐标替换(窗口初始高度)) 284 | 285 | ;如果是0,0则显示在鼠标位置 286 | if (窗口初始坐标x="0" and 窗口初始坐标y="0"){ 287 | CoordMode, Mouse, Screen 288 | MouseGetPos, 鼠标位置X, 鼠标位置Y 289 | 窗口初始坐标x:=鼠标位置X 290 | 窗口初始坐标y:=鼠标位置Y 291 | } 292 | 293 | SysGet, VirtualWidth, 78 294 | SysGet, VirtualHeight, 79 295 | ;坐标保护防止显示在屏幕外面 296 | if (VirtualWidth < (窗口初始坐标x + 窗口初始宽度)) 297 | 窗口初始坐标x:= VirtualWidth - 窗口初始宽度 - 5 298 | if (VirtualHeight < (窗口初始坐标y + 窗口初始高度)) 299 | 窗口初始坐标y:= VirtualHeight - 窗口初始高度 300 | 301 | Gui, Show,NoActivate h%窗口初始高度% w%窗口初始宽度% X%窗口初始坐标x% Y%窗口初始坐标y%,%窗口标题名称% 302 | 303 | SetTimer, ExitScript, Off ;关闭5秒后的退出操作 304 | 305 | If (参数3="自动弹出"){ 306 | 自动弹出常驻窗口次数++ 307 | IniWrite, %自动弹出常驻窗口次数%, %软件安装路径%\个人配置.ini,基础配置,自动弹出常驻窗口次数 308 | } 309 | 310 | WinSet, Transparent,%窗口透明度%,%窗口标题名称% ahk_class AutoHotkeyGUI 311 | 312 | Sleep, 20 313 | 314 | 文本框内容写入 := Trim(文本框内容写入,"|") 315 | ;MsgBox, %文本框内容写入% 316 | 更新ListView内容(文本框内容写入) 317 | 318 | ControlFocus,Edit1,%窗口标题名称% ahk_class AutoHotkeyGUI 319 | OnMessage(0x0101, "searchbox") 320 | Return 321 | 322 | ;[跟随当前窗口]------------------------------------- 323 | 跟随当前窗口: 324 | global menu:= "searchbox" 325 | global MinMax变量:="最小化" 326 | global 是否是第一次激活切换:="是" 327 | global 是否是第一次非激活切换:="是" 328 | global 是否是第一次最大化切换:="是" 329 | global 是否是第一次最小化切换:="是" 330 | global 是否是第一次中化切换:="是" 331 | global 是否是第一次置顶:="是" 332 | global Gs_tcWinID := 参数2 ; 获取当前活动窗口的ID 333 | global newX2:="",newY2:="" 334 | if (Gs_tcWinID=Gui_winID ) or (WinActive("ahk_class Progman")){ 335 | MsgBox, 跟随失败!`n请先点击并激活要跟随的窗口 336 | Return 337 | } 338 | 339 | SetTimer, FollowParentWindow, 1 ; 每1毫秒检测一次 340 | Return 341 | 342 | ;[允许gui窗口调整大小]---------------------------------- 343 | GuiSize: 344 | GuiControl, Move, 文本框选择值1, % "H" . (A_GuiHeight - 64) . " W" . (A_GuiWidth +5) 345 | GuiControl, Move, 搜索框输入值, % "W" . (A_GuiWidth +5) 346 | Return 347 | ;[gui窗口关闭事件]---------------------------------- 348 | GuiClose: 349 | FileAppend,%唯一性%`n,%A_Temp%\常驻窗口关闭记录.txt 350 | SetTimer, FollowParentWindow, Off ; 停止跟随父窗口 351 | Gui, Destroy 352 | ExitApp 353 | Return 354 | ;[gui右键点击事件]---------------------------------- 355 | GuiContextMenu: ; 运行此标签来响应右键点击或按下 Apps 键. 356 | if (A_GuiControl != "文本框选择值1") ; 这个检查是可选的. 让它只为 ListView 中的点击显示菜单. 357 | return 358 | 359 | ;MsgBox,% 获取选中项的值(A_EventInfo) 360 | global 文本框选择值1:= 获取选中项的值2() 361 | Menu, searchbox2, Add, 打开, 打开 362 | Menu, searchbox2, Add, 打开所在路径, 打开所在路径 363 | 364 | Menu, searchbox2, Add, 复制到剪切板, 复制到剪切板 365 | Menu, searchbox2, Add, 直接复制粘贴,直接复制粘贴 366 | 367 | 自动跳转到默认路径:=Var_Read("自动跳转到默认路径","关闭","基础配置",软件安装路径 "\个人配置.ini","是") 368 | 历史路径设为默认路径:=Var_Read("历史路径设为默认路径","关闭","基础配置",软件安装路径 "\个人配置.ini","是") 369 | 370 | Menu, searchbox2, Add, 设为默认路径, 选中项设为默认路径 371 | if (自动跳转到默认路径="关闭") or (自动跳转到默认路径="开启" and 历史路径设为默认路径="开启") 372 | Menu, searchbox2, Disable, 设为默认路径 373 | Else 374 | Menu, searchbox2, Enable, 设为默认路径 375 | 376 | Menu, searchbox2, Add, 添加到常用, 添加到常用 377 | Menu, searchbox2, Add, 从常用中移除, 从常用中移除 378 | Menu, searchbox2, Show 379 | return 380 | 381 | ;[窗口各个按钮功能直达]------------------------------------- 382 | 当前打开: 383 | gosub,将所有内容路径加入到数组 384 | 实时Text:= 换行符转换为竖杠(RemoveDuplicateLines(移除空白行(Trim(资管所有路径 "`n" do所有路径 "`n" tc所有路径 "`n" xy所有路径 "`n" qdir所有路径 "`n" dc所有路径,"`n")))) 385 | 更新ListView内容(实时Text) 386 | Return 387 | 388 | 常用路径: 389 | gosub,将所有内容路径加入到数组 390 | 实时Text:= 换行符转换为竖杠(移除空白行(自定义常用路径)) 391 | 更新ListView内容(实时Text) 392 | Return 393 | 常用路径1: 394 | 实时Text:= 换行符转换为竖杠(移除空白行(常用路径1)) 395 | 更新ListView内容(实时Text) 396 | Return 397 | 常用路径2: 398 | 实时Text:= 换行符转换为竖杠(移除空白行(常用路径2)) 399 | 更新ListView内容(实时Text) 400 | Return 401 | 常用路径3: 402 | 实时Text:= 换行符转换为竖杠(移除空白行(常用路径3)) 403 | 更新ListView内容(实时Text) 404 | Return 405 | 常用路径4: 406 | 实时Text:= 换行符转换为竖杠(移除空白行(常用路径4)) 407 | 更新ListView内容(实时Text) 408 | Return 409 | 常用路径5: 410 | 实时Text:= 换行符转换为竖杠(移除空白行(常用路径5)) 411 | 更新ListView内容(实时Text) 412 | Return 413 | 414 | 历史打开: 415 | gosub,将所有内容路径加入到数组 416 | 实时Text:= 换行符转换为竖杠(移除空白行(历史所有路径)) 417 | 更新ListView内容(实时Text) 418 | Return 419 | 全部目录路径: 420 | gosub,将所有内容路径加入到数组 421 | gosub,将所有内容路径加入到数组2 422 | 实时Text:= 换行符转换为竖杠(Trim(移除空白行(合并所有路径),"`n")) 423 | 更新ListView内容(实时Text) 424 | Return 425 | do收藏夹: 426 | gosub,将所有内容路径加入到数组 427 | 实时Text:= 换行符转换为竖杠(移除空白行(获取到的do收藏夹路径)) 428 | 更新ListView内容(实时Text) 429 | Return 430 | 直接复制粘贴: 431 | WinActivate,ahk_id %唯一性% 432 | 文本框选择值1:=获取选中项的值2() 433 | ;MsgBox, %文本框选择值1% 434 | Clipboard:=文本框选择值1 435 | SendInput, ^v 436 | ;ControlSend, , ^v, ahk_id %唯一性% 437 | ttip("已复制并粘贴到当前文本框:`n"文本框选择值1,3000) 438 | 写入文本到(文本框选择值1,软件安装路径 "\ICO\历史跳转.ini",历史跳转保留数) 439 | Return 440 | 更多设置: 441 | Return 442 | 443 | 文本框选择后执行的操作: 444 | ;MsgBox, %A_GuiEvent% 445 | if (A_GuiEvent = "DoubleClick"){ 446 | Gosub, 打开跳转事件 447 | } 448 | if (A_GuiEvent = "Normal"){ 449 | if (单击运行跳转="开启" and 参数3 !="全局版") 450 | Gosub, 打开跳转事件 451 | } 452 | 453 | /* 454 | if (A_GuiEvent = "Normal" || A_GuiEvent = "I"){ 455 | if WinActive("ahk_id " Gui_winID){ 456 | 测试111:= 获取选中项的值2() 457 | if (测试111 !=""){ 458 | ControlGetPos, cX, cY, cW, cH, SysListView321, ahk_id %Gui_winID% 459 | 460 | cY2:=cY + cH 461 | ;MsgBox, %cY2% `n %cY% 462 | ToolTip, %测试111%, %cX%, %cY2% 463 | }Else 464 | ToolTip 465 | } 466 | } 467 | */ 468 | 469 | Return 470 | 复制到剪切板: 471 | ;文本框选择值1:=获取选中项的值(A_EventInfo) 472 | 473 | Clipboard:=文本框选择值1 474 | ttip("已复制: "文本框选择值1,3000) 475 | Return 476 | 477 | 打开: 478 | ;文本框选择值1:=获取选中项的值(A_EventInfo) 479 | Run, % 文本框选择值1 480 | Return 481 | 482 | 打开所在路径: 483 | if not FileExist(文本框选择值1){ 484 | ttip("网络路径 或 路径不存在: "文本框选择值1,3000) 485 | }Else{ 486 | if not InStr(FileExist(文本框选择值1), "D") 487 | SplitPath, 文本框选择值1, , 文本框选择值1 488 | } 489 | Run, % 文本框选择值1 490 | Return 491 | 添加到常用: 492 | 自定义常用路径2:=Var_Read("","","常用路径",软件安装路径 "\个人配置.ini","是") 493 | 494 | ;文本框选择值1:=获取选中项的值(A_EventInfo) 495 | 496 | 自定义常用路径:=Trim(RemoveDuplicateLines(自定义常用路径2 "`n" 文本框选择值1),"`n") ;移除重复内容 497 | IniDelete, %软件安装路径%\个人配置.ini,常用路径 498 | IniWrite, %自定义常用路径%, %软件安装路径%\个人配置.ini,常用路径 499 | 所有路径合集.Insert(文本框选择值1) 500 | Return 501 | 502 | 从常用中移除: 503 | 自定义常用路径2:=Var_Read("","","常用路径",软件安装路径 "\个人配置.ini","是") 504 | ;文本框选择值1:=获取选中项的值(A_EventInfo) 505 | 506 | 自定义常用路径 := Trim(RemoveDuplicateLines(DeleteMatchingLines(自定义常用路径2, 文本框选择值1)),"`n") 507 | IniDelete, %软件安装路径%\个人配置.ini,常用路径 508 | IniWrite, %自定义常用路径%, %软件安装路径%\个人配置.ini,常用路径 509 | Return 510 | 511 | 更多功能设置: 512 | 自动跳转到默认路径:=Var_Read("自动跳转到默认路径","关闭","基础配置",软件安装路径 "\个人配置.ini","是") 513 | 历史路径设为默认路径:=Var_Read("历史路径设为默认路径","关闭","基础配置",软件安装路径 "\个人配置.ini","是") 514 | 默认路径:=ReplaceVars(Var_Read("默认路径","","基础配置",软件安装路径 "\个人配置.ini","是")) 515 | 516 | if (自动跳转到默认路径="关闭") 517 | Menu, searchbox, Add, 开启 自动跳默认路径, 开启自动跳默认路径 518 | if (自动跳转到默认路径="开启"){ 519 | Menu, searchbox, Add, 自动跳默认路径, 关闭自动跳默认路径 520 | Menu, searchbox, Icon, 自动跳默认路径, shell32.dll, 145 521 | } 522 | 523 | if (历史路径设为默认路径="关闭"){ 524 | Menu, searchbox, Add, 开启 历史路径设为默认, 开启历史路径设为默认 525 | if (自动跳转到默认路径="关闭") 526 | Menu, searchbox, Disable, 开启 历史路径设为默认 527 | } 528 | if (历史路径设为默认路径="开启"){ 529 | Menu, searchbox, Add, 历史路径设为默认, 关闭历史路径设为默认 530 | Menu, searchbox, Icon, 历史路径设为默认, shell32.dll, 145 531 | if (自动跳转到默认路径="关闭") 532 | Menu, searchbox, Disable, 历史路径设为默认 533 | } 534 | 535 | Menu, searchbox, Add, 设置 默认路径, 设置默认路径 536 | Menu, searchbox, Add, 查看 当前自动跳转路径, 查看默认路径 537 | if (自动跳转到默认路径="关闭") or (自动跳转到默认路径="开启" and 历史路径设为默认路径="开启"){ 538 | Menu, searchbox, Disable, 设置 默认路径 539 | Menu, searchbox, Disable, 查看 当前自动跳转路径 540 | } 541 | /* 542 | Menu, searchbox, Add, 查看 当前自动跳转路径, 查看默认路径 543 | if (自动跳转到默认路径="关闭") 544 | Menu, searchbox, Disable, 查看 当前自动跳转路径 545 | */ 546 | Menu, searchbox, Add 547 | 548 | if (自动弹出常驻窗口="开启"){ 549 | gosub,获取窗口信息 550 | if (!EntryExists) 551 | Menu, searchbox, Add, 禁止当前窗口自动弹出, 禁止当前窗口自动弹出 552 | Else{ 553 | Menu, searchbox, Add, 禁止当前窗口自动弹出, 禁止当前窗口自动弹出 554 | Menu, searchbox, Icon, 禁止当前窗口自动弹出, shell32.dll, 145 555 | } 556 | } 557 | Menu, searchbox, Add, 在该程序中禁用xiaoyao, 在该程序中禁用xiaoyao 558 | 559 | Menu, searchbox, Add 560 | Menu, searchbox, Add, 导出日志, 导出日志 561 | Menu, searchbox, Add, 设置(&D), 设置可视化 562 | Menu, searchbox, Add, 重启(&R), Menu_Reload 563 | Menu, searchbox, Add, 退出(&E), Menu_Exit 564 | Menu, searchbox, Show 565 | Menu, searchbox, DeleteAll 566 | Return 567 | 568 | 设置可视化: 569 | run,"%A_AhkPath%" "%A_ScriptDir%\用户设置GUI.ahk" 570 | Return 571 | Menu_Reload: 572 | Critical 573 | FileDelete, %A_Temp%\常驻窗口关闭记录.txt 574 | FileDelete, %A_Temp%\跳转默认打开记录.txt 575 | SplitPath, A_ScriptDir,, 软件配置路径 576 | run,"%软件配置路径%\XiaoYao_快速跳转.exe" "%软件配置路径%\主程序.ahk" 577 | ExitApp 578 | return 579 | 580 | Menu_Exit: 581 | FileDelete, %A_Temp%\常驻窗口关闭记录.txt 582 | FileDelete, %A_Temp%\跳转默认打开记录.txt 583 | run,%comSpec% /c taskkill /f /im XiaoYao_快速跳转.exe,,Hide 584 | ExitApp 585 | return 586 | 587 | ;[菜单项打开事件]------------------------------------- 588 | 打开跳转事件: 589 | ;Gui, Show,NoActivate 590 | 文本框选择值1:=获取选中项的值2() 591 | if (文本框选择值1="") 592 | Return 593 | 594 | if (参数3="全局版"){ ;如果是全局版 595 | ;MsgBox, %全局性菜单项功能% 596 | if (全局性菜单项功能="直接打开"){ 597 | Run, % 文本框选择值1 598 | }Else{ 599 | Clipboard:=文本框选择值1 600 | ttip("已复制: "文本框选择值1,3000) 601 | } 602 | Return 603 | } 604 | 跳转目标路径:=文本框选择值1 605 | 另存为窗口id值:= 参数2 ;获取当前活动窗口的ID 606 | gosub 读取配置跳转方式 607 | 608 | if FileExist(跳转目标路径){ 609 | 写入文本到(跳转目标路径,软件安装路径 "\ICO\历史跳转.ini",历史跳转保留数) 610 | } 611 | Return 612 | 613 | 读取配置跳转方式: 614 | 615 | if not FileExist(跳转目标路径){ 616 | ttip("网络路径 或 路径不存在: "跳转目标路径,3000) 617 | ;MsgBox, 1 618 | ;Return 619 | }Else{ 620 | if not InStr(FileExist(跳转目标路径), "D") 621 | SplitPath, 跳转目标路径, , 跳转目标路径 622 | } 623 | ;MsgBox, 跳转目标路径: %跳转目标路径%`n另存为窗口id值: %另存为窗口id值%`n跳转方式: %跳转方式% 624 | 625 | WinGet CtlList, ControlList, ahk_id %另存为窗口id值% 626 | ControlGet, hctl222, Hwnd,, SysTreeView321, ahk_id %另存为窗口id值% 627 | ControlGet, hctl333, Hwnd,, Edit1, ahk_id %另存为窗口id值% 628 | 629 | if (跳转方式="2"){ 630 | If (InStr(CtlList, "SHBrowseForFolder ShellNameSpace Control")){ ;如果是旧式对话框 631 | run,"%A_AhkPath%" "%A_ScriptDir%\外部调用跳转.ahk" %另存为窗口id值% "%跳转目标路径%" 632 | }Else if not(hctl333) { ;如果没有Edit1控件 633 | run,"%A_AhkPath%" "%A_ScriptDir%\外部调用跳转.ahk" %另存为窗口id值% "%跳转目标路径%" 634 | }else{ 635 | $DialogType := SmellsLikeAFileDialog(另存为窗口id值) 636 | FeedDialog%$DialogType%(另存为窗口id值, 跳转目标路径) 637 | } 638 | 639 | }else if (跳转方式="3") 640 | run,"%A_AhkPath%" "%A_ScriptDir%\外部调用跳转.ahk" %另存为窗口id值% "%跳转目标路径%" 是 641 | else if (跳转方式="4"){ 642 | 643 | $DialogType := SmellsLikeAFileDialog(另存为窗口id值) 644 | If $DialogType ;如果是新式对话框 645 | run,"%A_AhkPath%" "%A_ScriptDir%\外部调用跳转.ahk" %另存为窗口id值% "%跳转目标路径%" 是 646 | else 647 | run,"%A_AhkPath%" "%A_ScriptDir%\外部调用跳转.ahk" %另存为窗口id值% "%跳转目标路径%" 648 | 649 | }else if (跳转方式="5") 650 | 跳转方式2(另存为窗口id值, 跳转目标路径) 651 | ;else if (跳转方式="6") 652 | ;跳转方式3(另存为窗口id值, 跳转目标路径) 653 | Else{ ;智能跳转方式 654 | ;if (InStr(CtlList, "DirectUIHWND2") ){ ;如果是新式对话框 655 | $DialogType := SmellsLikeAFileDialog(另存为窗口id值) 656 | If $DialogType{ ;如果是新式对话框 657 | FeedDialog%$DialogType%(另存为窗口id值, 跳转目标路径) 658 | }Else 659 | run,"%A_AhkPath%" "%A_ScriptDir%\外部调用跳转.ahk" %另存为窗口id值% "%跳转目标路径%" 660 | 661 | } 662 | Return 663 | 664 | 父窗口关闭运行事件: 665 | if !WinExist("ahk_id " 参数2) ; 如果父窗口已关闭 666 | { 667 | Gui, Destroy 668 | SetTimer, FollowParentWindow, Off 669 | SetTimer, 父窗口关闭运行事件, Off 670 | ExitApp 671 | return 672 | } 673 | Return 674 | ;[搜索框内容定位和右键菜单]------------------------------------- 675 | /* 676 | #If MouseIsOver(%窗口标题名称% " ahk_class AutoHotkeyGUI") ;当前鼠标所指的窗口 677 | ~LButton:: 678 | MouseGetPos, , ,,OutputVarControl 679 | if (OutputVarControl="Edit1"){ 680 | ;WinGet, activeWindow22, ID, A 681 | WinActivate,ahk_id %Gui_winID% 682 | } 683 | return 684 | 685 | RButton:: 686 | Critical 687 | KeyWait, RButton 688 | KeyWait, RButton, D T0.1 689 | if (ErrorLevel=1){ 690 | MouseGetPos, , ,,OutputVarControl2 691 | if (OutputVarControl2="ListBox1"){ 692 | 693 | Menu, searchbox2, Add, 复制到剪切板, 复制到剪切板 694 | Menu, searchbox2, Add, 直接复制粘贴,直接复制粘贴 695 | Menu, searchbox2, Add, 打开路径, 打开路径 696 | 697 | 自动跳转到默认路径:=Var_Read("自动跳转到默认路径","关闭","基础配置",软件安装路径 "\个人配置.ini","是") 698 | 历史路径设为默认路径:=Var_Read("历史路径设为默认路径","关闭","基础配置",软件安装路径 "\个人配置.ini","是") 699 | 700 | Menu, searchbox2, Add, 设为默认路径, 选中项设为默认路径 701 | if (自动跳转到默认路径="关闭") or (自动跳转到默认路径="开启" and 历史路径设为默认路径="开启") 702 | Menu, searchbox2, Disable, 设为默认路径 703 | Else 704 | Menu, searchbox2, Enable, 设为默认路径 705 | 706 | Menu, searchbox2, Add, 添加到常用, 添加到常用 707 | Menu, searchbox2, Add, 从常用中移除, 从常用中移除 708 | Menu, searchbox2, Show 709 | ; 710 | 711 | } 712 | } 713 | Critical, Off 714 | return 715 | 716 | #If 717 | return 718 | */ 719 | #If WinActive("ahk_id" Gui_winID) ; 搜索框的热键 720 | Up:: 721 | ControlFocus,,ahk_id %文本框ID% 722 | RowNumber := LV_GetNext(0) 723 | If (RowNumber = 0){ 724 | LV_Modify(1, "+Focus +Select +Vis") 725 | }Else If (RowNumber = 1){ 726 | LV_Modify(LV_GetCount(), "+Focus +Select +Vis") 727 | } 728 | Else{ 729 | LV_Modify(RowNumber-1, "+Focus +Select +Vis") 730 | } 731 | Return 732 | 733 | Down:: 734 | ControlFocus,,ahk_id %文本框ID% 735 | RowNumber := LV_GetNext(0) 736 | If (RowNumber = 0 || RowNumber=LV_GetCount()){ 737 | LV_Modify(1, "+Focus +Select +Vis") 738 | }Else{ 739 | LV_Modify(RowNumber+1, "+Focus +Select +Vis") 740 | } 741 | Return 742 | 743 | #If 744 | 745 | ;[跟随父窗口移动]═════════════════════════════════════════════════ 746 | ;需要传递的全局变量 747 | ;global menu:= "窗口menu名" 748 | ;global MinMax变量:="最小化" 749 | ;global 是否是第一次激活切换:="是" 750 | ;global 是否是第一次非激活切换:="是" 751 | ;global 是否是第一次最大化切换:="是" 752 | ;global 是否是第一次最小化切换:="是" 753 | ;global 是否是第一次中化切换:="是" 754 | ;global 是否是第一次置顶:="是" 755 | ;global Gs_tcWinID := Gs_tcWinID2 ; 父窗口ID 756 | ;global newX2:="",newY2:="" 757 | 758 | FollowParentWindow: 759 | menu名:= menu 760 | if !WinExist("ahk_id " Gs_tcWinID) ; 如果父窗口已关闭 761 | { 762 | Gui, Destroy 763 | SetTimer, FollowParentWindow, Off 764 | ExitApp 765 | return 766 | } 767 | ;判断窗口激活与未激活的切换.......................................... 768 | if WinActive("ahk_id " Gs_tcWinID){ 769 | if (是否是第一次激活切换="是"){ 770 | ;MsgBox, 1 771 | 是否是第一次激活切换:="否" 772 | 是否是第一次非激活切换:="是" 773 | Gui,+AlwaysOnTop 774 | } 775 | WinGet, ExStyle, ExStyle, ahk_id %Gs_tcWinID% ; 检查窗口是否已经置顶 776 | if (ExStyle & 0x8) 777 | Gui,+AlwaysOnTop 778 | }Else{ 779 | if (是否是第一次非激活切换="是"){ 780 | ;MsgBox, 2 781 | 是否是第一次激活切换:="是" 782 | 是否是第一次非激活切换:="否" 783 | WinGet, ExStyle, ExStyle, ahk_id %Gs_tcWinID% ; 检查窗口是否已经置顶 784 | if (ExStyle & 0x8){ ; 如果窗口已经置顶 785 | Gui,+AlwaysOnTop 786 | }Else{ 787 | Gui,-AlwaysOnTop 788 | ;MsgBox, 4 789 | } 790 | } 791 | } 792 | ;..................................................................... 793 | WinGet, active_MinMax, MinMax, ahk_id %Gs_tcWinID% 794 | WinGetPos, newX, newY, newW, newH, ahk_id %Gs_tcWinID% 795 | 796 | ;判断最大化到最小化的切换.......................................... 797 | 798 | if (active_MinMax="-1"){ 799 | if (是否是第一次最小化切换="是"){ 800 | 是否是第一次最大化切换:="是" 801 | 是否是第一次最小化切换:="否" 802 | 是否是第一次中化切换:="是" 803 | ;WinGetPos, guiX3, guiY3, guiW3, guiH3, ahk_id %Gui_winID% 804 | Gui,hide 805 | ;print("最小化" guiX3 "`n" guiY3) 806 | } 807 | Return 808 | }Else if (active_MinMax="1"){ 809 | if (是否是第一次最大化切换="是"){ 810 | 是否是第一次最大化切换:="否" 811 | 是否是第一次最小化切换:="是" 812 | 是否是第一次中化切换:="是" 813 | ;MsgBox, 2 814 | Gui,Show,NoActivate 815 | ;WinMove, ahk_id %Gui_winID%,, %guiX3%, %guiY3% 816 | Gui,+AlwaysOnTop 817 | WinActivate, ahk_id %Gs_tcWinID% 818 | ;print("最大化" guiX3 "`n" guiY3) 819 | } ;Else 820 | ;Gui,+AlwaysOnTop 821 | Return 822 | }Else{ 823 | if (是否是第一次中化切换="是"){ 824 | 是否是第一次最大化切换:="是" 825 | 是否是第一次最小化切换:="是" 826 | 是否是第一次中化切换:="否" 827 | ;MsgBox, 2 828 | Gui,Show,NoActivate 829 | ;WinMove, ahk_id %Gui_winID%,, %guiX3%, %guiY3% 830 | Gui,+AlwaysOnTop 831 | WinActivate, ahk_id %Gs_tcWinID% 832 | ;print("中化" guiX3 "`n" guiY3) 833 | } 834 | } 835 | 836 | ;.......................................... 837 | if (newX = newX2 && newY = newY2) 838 | Return 839 | 840 | gX := newX2 - newX 841 | gY := newY2 - newY 842 | ;MsgBox, %newX%`n%newX2%`n%newY%`n%newY2% 843 | WinGetPos, guiX, guiY, guiW, guiH, ahk_id %Gui_winID% 844 | guiX2:= guiX - gX 845 | guiY2:= guiY - gY 846 | WinMove, ahk_id %Gui_winID%,, %guiX2%, %guiY2% 847 | ;MsgBox, %newX%`n%newX2%`n%newY%`n%newY2%`n 848 | 849 | global newX2:=newX 850 | global newY2:=newY 851 | return 852 | 853 | ;[将所有内容路径加入到数组]═════════════════════════════════════════════════ 854 | 将所有内容路径加入到数组: 855 | 856 | 资管所有路径:="" 857 | do所有路径:="" 858 | tc所有路径:="" 859 | xy所有路径:="" 860 | qdir所有路径:="" 861 | dc所有路径:="" 862 | 863 | global 历史所有路径:= HistoryOpenPath(软件安装路径) 864 | if (失效路径显示设置 ="关闭") 865 | 历史所有路径:= FilterExistingPaths(历史所有路径) 866 | 867 | DetectHiddenWindows,Off 868 | if WinExist("ahk_exe explorer.exe ahk_class CabinetWClass") 869 | 资管所有路径:=Explorer_Path() "`n" Explorer_Path全部() 870 | 871 | if WinExist("ahk_exe dopus.exe") 872 | do所有路径:=RTrim(DirectoryOpus_path("Clipboard SET {sourcepath}"),"\") "`n" RTrim(DirectoryOpus_path("Clipboard SET {destpath}"),"\") "`n" DirectoryOpusgetinfo() 873 | 874 | if WinExist("ahk_class TTOTAL_CMD") 875 | tc所有路径:= TotalCommander_path("0") 876 | 877 | xy所有路径:=XYplorer_Path() 878 | qdir所有路径:=Q_Dir_Path() 879 | dc所有路径:=DoubleCommander_path(给dc发送热键) 880 | 881 | 自定义常用路径2:=Var_Read("","","常用路径",软件安装路径 "\个人配置.ini","是") 882 | 883 | 自定义常用路径:=ReplaceVars(自定义常用路径2) 884 | 自定义常用路径:=程序专属路径筛选(自定义常用路径) 885 | if (替换双斜杠单反斜杠双引号="开启"){ 886 | 自定义常用路径:=RegExReplace(StrReplace(自定义常用路径, """", ""), "\\\\|/", "\") 887 | } 888 | 889 | if (失效路径显示设置 ="关闭") 890 | 自定义常用路径:= FilterExistingPaths(自定义常用路径) 891 | 892 | 常用所有路径:= 自定义常用路径 893 | 894 | return 895 | 896 | 将所有内容路径加入到数组2: 897 | 898 | global 获取到的do收藏夹路径:="" 899 | if (DO的收藏夹="开启"){ 900 | 获取到的do收藏夹路径:=DirectoryOpusgetfa() 901 | if (失效路径显示设置 ="关闭") 902 | 获取到的do收藏夹路径:= FilterExistingPaths(获取到的do收藏夹路径) 903 | } 904 | 905 | 合并所有路径:= Trim(资管所有路径, "`n") "`n" Trim(do所有路径, "`n") "`n" Trim(tc所有路径, "`n") "`n" Trim(获取到的do收藏夹路径, "`n") "`n" Trim(常用所有路径, "`n") "`n" Trim(历史所有路径, "`n") "`n" Trim(xy所有路径, "`n") "`n" Trim(qdir所有路径, "`n") "`n" Trim(dc所有路径, "`n") 906 | 合并所有路径:=RemoveDuplicateLines(合并所有路径) ;移除重复内容 907 | 908 | global 所有路径合集:= [] 909 | ;MsgBox, %合并所有路径% 910 | Loop, Parse, 合并所有路径, `n, `r 911 | { 912 | 所有路径合集.Insert(A_LoopField) 913 | } 914 | return 915 | 916 | 开启自动跳默认路径: 917 | IniWrite, 开启, %软件安装路径%\个人配置.ini,基础配置,自动跳转到默认路径 918 | if (默认路径="" || 默认路径="ERROR" || !FileExist(默认路径)){ 919 | gosub,设置默认路径 920 | } 921 | 922 | return 923 | 关闭自动跳默认路径: 924 | IniWrite, 关闭, %软件安装路径%\个人配置.ini,基础配置,自动跳转到默认路径 925 | return 926 | 开启历史路径设为默认: 927 | IniWrite, 开启, %软件安装路径%\个人配置.ini,基础配置,历史路径设为默认路径 928 | return 929 | 关闭历史路径设为默认: 930 | IniWrite, 关闭, %软件安装路径%\个人配置.ini,基础配置,历史路径设为默认路径 931 | return 932 | 查看默认路径: 933 | ttip("当前默认路径: " 默认路径, 3000) 934 | return 935 | 936 | 设置默认路径: 937 | run,"%A_AhkPath%" "%A_ScriptDir%\设置默认路径.ahk" 938 | return 939 | 940 | 选中项设为默认路径: 941 | ;MsgBox, 1 942 | ;文本框选择值1:=获取选中项的值(A_EventInfo) 943 | 默认路径222:=RegExReplace(文本框选择值1, "^\<(.*?)\>") 944 | IniWrite, %默认路径222%, %软件安装路径%\个人配置.ini,基础配置,默认路径 945 | 946 | ttip("当前默认路径: " 默认路径222, 3000) 947 | return 948 | ;======================================================================================================================================== 949 | ;======================================================================================================================================== 950 | ;[需要用到的函数]------------------------------------------------- 951 | 952 | ;设置Edit控件默认提示文本 953 | EM_SETCUEBANNER(handle, string, hideonfocus := true){ 954 | static EM_SETCUEBANNER := 0x1501 955 | return DllCall("user32\SendMessage", "ptr", handle, "uint", EM_SETCUEBANNER, "int", hideonfocus, "str", string, "int") 956 | } 957 | ;搜索框搜索内容【没加防抖的版本】-------------------------------------------------------- 958 | /* 959 | searchbox(W, L, M, H) 960 | { 961 | global 搜索框ID,文本框ID,所有路径合集,文本框内容写入,返回的最多结果次数,ev排除列表,启用ev进行搜索,文件夹名显示在前 962 | Static LastText := "" 963 | If (H = 搜索框ID) 964 | { 965 | GuiControlGet, value, , % 搜索框ID 966 | 967 | if (启用ev进行搜索="开启"){ 968 | value2:=everythingSearch(ev排除列表 " " value,返回的最多结果次数) ;调用everything进行搜索 969 | if (文件夹名显示在前="开启") 970 | value2:=给行首加文件名(value2) 971 | value2:=StrReplace(value2, "`n", "|") 972 | } 973 | ;MsgBox, %value% 974 | If (value And value!=LastText) 975 | { 976 | Text := "" 977 | for index, ele in 所有路径合集 978 | if (InStr(ele,value)) 979 | Text .= (Text ? "|" ele : ele) 980 | if (启用ev进行搜索="开启") 981 | Text := trim(value2 "|" Text, "|") 982 | GuiControl, , % 文本框ID, % "|" Text 983 | } 984 | Else If (!value) 985 | GuiControl, , % 文本框ID, % "|" 文本框内容写入 986 | LastText := value 987 | } 988 | } 989 | */ 990 | 991 | ;搜索框搜索内容[加了防抖] 992 | searchbox(W, L, M, H) 993 | { 994 | global 搜索框ID,文本框ID,所有路径合集,文本框内容写入,搜索延迟 995 | Static LastText := "" 996 | Static DebounceTimer := 0 ; 防抖计时器 997 | 998 | If (H = 搜索框ID) 999 | { 1000 | GuiControlGet, value, , % 搜索框ID 1001 | if (搜索延迟 > 0){ 1002 | ; 取消之前的计时器 1003 | if (DebounceTimer) { 1004 | SetTimer, % DebounceTimer, Delete 1005 | } 1006 | 1007 | ; 设置新的防抖计时器(300毫秒后执行) 1008 | DebounceTimer := Func("PerformSearch").Bind(value, LastText) 1009 | SetTimer, % DebounceTimer, -%搜索延迟% 1010 | }Else{ 1011 | PerformSearch(value, LastText) 1012 | } 1013 | } 1014 | } 1015 | 1016 | PerformSearch(value, LastText) 1017 | { 1018 | global 搜索框ID,文本框ID,所有路径合集,文本框内容写入,启用ev进行搜索,ev排除列表,返回的最多结果次数,文件夹名显示在前,Text2 1019 | 1020 | ; 重置计时器标识 1021 | searchbox.DebounceTimer := 0 1022 | 1023 | If (value And value != LastText) 1024 | { 1025 | Text := "" 1026 | for index, ele in 所有路径合集 1027 | if (InStr(ele,value)) 1028 | Text .= (Text ? "|" ele : ele) 1029 | 1030 | DetectHiddenWindows, On 1031 | if (启用ev进行搜索 = "开启") and (WinExist("ahk_exe everything.exe") or WinExist("ahk_exe everything64.exe")) { 1032 | value2 :="" 1033 | value2 := everythingSearch(ev排除列表 " " value, 返回的最多结果次数) ;调用everything进行搜索 1034 | value2 := StrReplace(value2, "`n", "|") 1035 | Text := trim(value2 "|" Text, "|") 1036 | } 1037 | 1038 | if (Text !=Text2) 1039 | 更新ListView内容(Text) 1040 | Text2:=Text 1041 | 1042 | ;GuiControl, , % 文本框ID, % "|" Text 1043 | } 1044 | Else If (!value) 1045 | 更新ListView内容(文本框内容写入) 1046 | 1047 | ; 更新LastText 1048 | searchbox.LastText := value 1049 | } 1050 | 1051 | RemoveToolTip: 1052 | ToolTip 1053 | return 1054 | 1055 | ;字符坐标替换------------------------------------------------------------------------------ 1056 | 字符坐标替换(str){ 1057 | global 唯一性 1058 | WinGetPos, 父窗口X, 父窗口Y, 父窗口W, 父窗口H, ahk_id %唯一性% 1059 | ;GetWindowRect(唯一性, 父窗口X, 父窗口Y) 1060 | GetClientSize(唯一性, 父窗口W, 父窗口H) 1061 | 1062 | CoordMode, Mouse, Screen 1063 | MouseGetPos, 鼠标位置X, 鼠标位置Y 1064 | 1065 | str := StrReplace(str, "鼠标位置X", 鼠标位置X) 1066 | str := StrReplace(str, "鼠标位置Y", 鼠标位置Y) 1067 | 1068 | str := StrReplace(str, "父窗口X", 父窗口X) 1069 | str := StrReplace(str, "父窗口Y", 父窗口Y) 1070 | str := StrReplace(str, "父窗口W", 父窗口W) 1071 | str := StrReplace(str, "父窗口H", 父窗口H) 1072 | Return str 1073 | } 1074 | 1075 | ExitScript: 1076 | ExitApp ; 退出脚本 1077 | return 1078 | 1079 | 获取窗口信息: 1080 | 1081 | 屏蔽xiaoyao窗口列表:=Var_Read("","ahk_exe IDMan.exe","窗口列表2",软件安装路径 "\个人配置.ini","是") 1082 | 1083 | WinGetTitle, WinTitle22, ahk_id %参数2% 1084 | WinGetClass, WinClass22, ahk_id %参数2% 1085 | WinGet, WinExe22, ProcessName, ahk_id %参数2% 1086 | ; 格式化窗口信息 1087 | NewEntry := WinTitle22 " ahk_class " WinClass22 " ahk_exe " WinExe22 1088 | 1089 | ; 检查是否已存在相同条目 1090 | 1091 | EntryExists := false 1092 | Loop, Parse, 屏蔽xiaoyao窗口列表, `n, `r 1093 | { 1094 | ; 比较忽略前后空格 1095 | if (Trim(A_LoopField) = Trim(NewEntry)){ 1096 | EntryExists := true 1097 | break 1098 | } 1099 | } 1100 | Return 1101 | 1102 | 禁止当前窗口自动弹出: 1103 | gosub,获取窗口信息 1104 | 1105 | if (!EntryExists){ 1106 | ; 添加到编辑框 1107 | NewList := 屏蔽xiaoyao窗口列表 ? 屏蔽xiaoyao窗口列表 "`n" NewEntry : NewEntry 1108 | ;MsgBox,% NewList 1109 | IniDelete, %软件安装路径%\个人配置.ini,窗口列表2 1110 | IniWrite, %NewList%, %软件安装路径%\个人配置.ini,窗口列表2 1111 | run,"%软件安装路径%\XiaoYao_快速跳转.exe" "%软件安装路径%\主程序.ahk" 1112 | }Else{ 1113 | ; 如果已存在,则从编辑框中移除 1114 | NewList := "" 1115 | Loop, Parse, 屏蔽xiaoyao窗口列表, `n, `r 1116 | { 1117 | if !(Trim(A_LoopField) = Trim(NewEntry)){ 1118 | NewList .= (NewList ? "`n" : "") A_LoopField 1119 | } 1120 | } 1121 | 1122 | ;MsgBox,2%NewList% 1123 | IniDelete, %软件安装路径%\个人配置.ini,窗口列表2 1124 | IniWrite, %NewList%, %软件安装路径%\个人配置.ini,窗口列表2 1125 | run,"%软件安装路径%\XiaoYao_快速跳转.exe" "%软件安装路径%\辅助\自动弹出常驻窗口.ahk" 1126 | } 1127 | 1128 | return 1129 | 1130 | 在该程序中禁用xiaoyao: 1131 | WinGet, WinExe22, ProcessName, ahk_id %参数2% 1132 | NewList2 := RemoveDuplicateLines(屏蔽xiaoyao程序列表 "`," WinExe22,jiangeci:="`,") 1133 | IniWrite, %NewList2%, %软件安装路径%\个人配置.ini,基础配置,屏蔽xiaoyao程序列表 1134 | run,"%软件安装路径%\XiaoYao_快速跳转.exe" "%软件安装路径%\主程序.ahk" 1135 | ;MsgBox, %NewList2% 1136 | return 1137 | 1138 | 导出日志: 1139 | 未转化之前的坐标x:=Var_Read("窗口初始坐标x","","基础配置",软件安装路径 "\个人配置.ini","是") 1140 | 未转化之前的坐标y:=Var_Read("窗口初始坐标y","","基础配置",软件安装路径 "\个人配置.ini","是") 1141 | 窗口初始宽度:=Var_Read("窗口初始宽度","","基础配置",软件安装路径 "\个人配置.ini","是") 1142 | 窗口初始高度:=Var_Read("窗口初始高度","","基础配置",软件安装路径 "\个人配置.ini","是") 1143 | 1144 | 转化之后的坐标x:= Calculate(字符坐标替换(未转化之前的坐标x)) 1145 | 转化之后的坐标y:= Calculate(字符坐标替换(未转化之前的坐标y)) 1146 | 1147 | SysGet, VirtualWidth, 78 1148 | SysGet, VirtualHeight, 79 1149 | ;坐标保护防止显示在屏幕外面 1150 | 转化之后的坐标x2:= 转化之后的坐标x 1151 | 转化之后的坐标y2:= 转化之后的坐标y 1152 | if (VirtualWidth < (转化之后的坐标x + 窗口初始宽度)) 1153 | 转化之后的坐标x2:= VirtualWidth - 窗口初始宽度 1154 | if (VirtualHeight < (转化之后的坐标y + 窗口初始高度)) 1155 | 转化之后的坐标y2:= VirtualHeight - 窗口初始高度 1156 | 1157 | 常驻窗口的相关坐标信息:="未转化之前的坐标x:" 未转化之前的坐标x "`n未转化之前的坐标y:" 未转化之前的坐标y "`n转化之后的坐标x:" 转化之后的坐标x "`n转化之后的坐标y:" 转化之后的坐标y "`n屏幕保护后的坐标x2:" 转化之后的坐标x2 "`n屏幕保护后的坐标y2:" 转化之后的坐标y2 1158 | 1159 | SysGet, MonitorCount, MonitorCount 1160 | SysGet, MonitorPrimary, MonitorPrimary 1161 | ;MsgBox, 显示器的数量‌:`t%MonitorCount%`n主显示器:`t%MonitorPrimary% 1162 | 显示屏信息:="" 1163 | Loop, %MonitorCount% 1164 | { 1165 | SysGet, MonitorName, MonitorName, %A_Index% 1166 | SysGet, Monitor, Monitor, %A_Index% 1167 | SysGet, MonitorWorkArea, MonitorWorkArea, %A_Index% 1168 | 显示屏信息 .="显示屏:`t#" A_Index "`n名称:`t" MonitorName "`n左边:`t" MonitorLeft " (" MonitorWorkAreaLeft " work)`n上边:`t" MonitorTop " (" MonitorWorkAreaTop " work)`n右边:`t" MonitorRight " (" MonitorWorkAreaRight " work)`n下边:`t" MonitorBottom " (" MonitorWorkAreaBottom " work)`n" 1169 | ;MsgBox, 显示屏:`t#%A_Index%`n名称:`t%MonitorName%`n左边:`t%MonitorLeft% (%MonitorWorkAreaLeft% work)`n上边:`t%MonitorTop% (%MonitorWorkAreaTop% work)`n右边:`t%MonitorRight% (%MonitorWorkAreaRight% work)`n下边:`t%MonitorBottom% (%MonitorWorkAreaBottom% work) 1170 | } 1171 | 1172 | 显示器的信息:= "显示器数量: " MonitorCount "`n主显示器: " MonitorPrimary "`n`n显示屏信息:`n" 显示屏信息 1173 | 1174 | WinGetPos, 活动窗口X, 活动窗口Y, 活动窗口W, 活动窗口H, ahk_id %唯一性% 1175 | WinGetPos, 常驻窗口X2, 常驻窗口Y2, 常驻窗口W2, 常驻窗口H2, %窗口标题名称% 1176 | 1177 | 父窗口的信息:= "活动窗口:X: " 活动窗口X " Y: " 活动窗口Y " W: " 活动窗口W " H: " 活动窗口H 1178 | 常驻窗口的信息:= "常驻窗口:X2: " 常驻窗口X2 " Y2: " 常驻窗口Y2 " W2: " 常驻窗口W2 " H2: " 常驻窗口H2 1179 | 1180 | ;MsgBox, % 常驻窗口的相关坐标信息 "`n`n" 父窗口的信息 "`n" 常驻窗口的信息 "`n`n" 显示器的信息 1181 | ttip("已导出日志到软件安装路径下",3000) 1182 | FileAppend,% "窗口边界信息:" VirtualWidth " " VirtualHeight "`n`n" 常驻窗口的相关坐标信息 "`n`n" 父窗口的信息 "`n" 常驻窗口的信息 "`n`n" 显示器的信息,%软件安装路径%\导出日志%A_Now%.txt 1183 | Return 1184 | 1185 | ;Everything搜========================================================================================= 1186 | ;[使用everything搜索,返回第一个匹配值] 1187 | everythingSearch(str,最多次数:="150",MatchPath:="0",MatchWholeWord:="0",MatchCase:="0",Regex:="0",Max:="150",Sort1:="1"){ 1188 | ev := new everything_xiaoyao 1189 | ;set 1190 | ;MatchPath 完整路径匹配(true) 1191 | ;MatchWholeWord 全字匹配(true) 1192 | ;MatchCase 匹配大小写(true) 1193 | ;Regex 匹配正则表达式(true) 1194 | ;Max 返回的最大结果数(1) 1195 | ;Sort 结果的排序方式(1-26) https://www.voidtools.com/zh-cn/support/everything/sdk/everything_setsort/ 1196 | ;ev.SetMatchPath(MatchPath) ;完整路径匹配(1) 1197 | ;ev.SetMatchWholeWord(MatchWholeWord) ;全字匹配(1) 1198 | ;ev.SetMatchCase(MatchCase) ;匹配大小写(1) 1199 | ;ev.SetRegex(Regex) ;匹配正则表达式(1) 1200 | ;ev.SetMax(Max) ;返回的最大结果数(10) 1201 | ;ev.SetSort(Sort1) ;结果的排序方式(1-26) https://www.voidtools.com/zh-cn/support/everything/sdk/everything_setsort/ 1202 | 1203 | ev.SetSearch(str) 1204 | ;执行搜索 1205 | ev.Query() 1206 | 1207 | ;MsgBox, % "`n最大返回数" ev.GetMax() "`n返回匹配总数" ev.GetTotResults() "`n排序" ev.GetSort() "`n实际的" ev.GetResultListSort() "`n" ev.GetResultFileName(0) "`n" ev.GetResultFullPathName(0) 1208 | 所有结果文件路径:="" 1209 | Loop,%最多次数% 1210 | 所有结果文件路径.=ev.GetResultFullPathName(A_Index-1) "`n" 1211 | return trim(所有结果文件路径, "`n") 1212 | } 1213 | 1214 | ;[IPC方式和everything进行通讯,修改于AHK论坛] 1215 | class everything_xiaoyao 1216 | { 1217 | __New(){ 1218 | this.hModule := DllCall("LoadLibrary", str, everyDLL) 1219 | } 1220 | __Get(aName){ 1221 | } 1222 | __Set(aName, aValue){ 1223 | } 1224 | __Delete(){ 1225 | DllCall("FreeLibrary", "UInt", this.hModule) 1226 | return 1227 | } 1228 | SetSearch(aValue){ 1229 | this.eSearch := aValue 1230 | dllcall(everyDLL "\Everything_SetSearch",str,aValue) 1231 | return 1232 | } 1233 | ;设置全字匹配 1234 | SetMatchWholeWord(aValue){ 1235 | this.eMatchWholeWord := aValue 1236 | dllcall(everyDLL "\Everything_SetMatchWholeWord",int,aValue) 1237 | return 1238 | } 1239 | ;完整路径匹配 1240 | SetMatchPath(aValue){ 1241 | this.eMatchPath := aValue 1242 | dllcall(everyDLL "\Everything_SetMatchPath",int,aValue) 1243 | return 1244 | } 1245 | ;大小写匹配 1246 | SetMatchCase(aValue){ 1247 | this.eMatchCase := aValue 1248 | dllcall(everyDLL "\Everything_SetMatchCase",int,aValue) 1249 | return 1250 | } 1251 | ;设置正则表达式搜索 1252 | SetRegex(aValue){ 1253 | this.eRegex := aValue 1254 | dllcall(everyDLL "\Everything_SetRegex",int,aValue) 1255 | return 1256 | } 1257 | ;【新增】设置返回的最大结果数 1258 | SetMax(aValue){ 1259 | this.eMax := aValue 1260 | dllcall(everyDLL "\Everything_SetMax", "int", aValue) 1261 | return 1262 | } 1263 | ;【新增】设置结果的排序方式 1264 | SetSort(aValue){ 1265 | this.eSort := aValue 1266 | dllcall(everyDLL "\Everything_SetSort", "int", aValue) 1267 | return 1268 | } 1269 | ;【新增】最大结果数 1270 | GetMax(){ 1271 | return dllcall(everyDLL "\Everything_GetMax") 1272 | } 1273 | ;【新增】结果的排序方式 1274 | GetSort(){ 1275 | return dllcall(everyDLL "\Everything_GetSort") 1276 | } 1277 | ;【新增】实际的结果的排序方式 1278 | GetResultListSort(){ 1279 | return dllcall(everyDLL "\Everything_GetResultListSort") 1280 | } 1281 | 1282 | ;执行搜索动作 1283 | Query(aValue=1){ 1284 | dllcall(everyDLL "\Everything_Query",int,aValue) 1285 | return 1286 | } 1287 | ;返回管理员权限状态 1288 | GetIsAdmin(){ 1289 | return dllcall(everyDLL "\Everything_IsAdmin") 1290 | } 1291 | ;返回匹配总数 1292 | GetTotResults(){ 1293 | return dllcall(everyDLL "\Everything_GetTotResults") 1294 | } 1295 | ;返回可见文件结果的数量 1296 | GetNumFileResults(){ 1297 | return dllcall(everyDLL "\Everything_GetNumFileResults") 1298 | } 1299 | ;返回文件名 1300 | GetResultFileName(aValue){ 1301 | return strget(dllcall(everyDLL "\Everything_GetResultFileName",int,aValue)) 1302 | } 1303 | ;返回文件全路径 1304 | GetResultFullPathName(aValue,cValue=1000){ 1305 | VarSetCapacity(bValue,cValue*2) 1306 | dllcall(everyDLL "\Everything_GetResultFullPathName",int,aValue,str,bValue,int,cValue) 1307 | return bValue 1308 | } 1309 | } 1310 | 1311 | 更新ListView内容(str,分隔符:="|"){ 1312 | global 文本框ID 1313 | LV_Delete() 1314 | Loop, parse, str, %分隔符% 1315 | { 1316 | if (RegExMatch(A_LoopField, "^\s*$")) ;匹配空白行 1317 | Continue 1318 | if (文件夹名显示在前="开启"){ 1319 | SplitPath, A_LoopField, name 1320 | LV_Add("",name, A_LoopField) 1321 | }Else 1322 | LV_Add("",A_LoopField) 1323 | } 1324 | if (文件夹名显示在前 ="开启") 1325 | SetColumnWidthWithLimit(1,名称列最大宽度) 1326 | Else 1327 | LV_ModifyCol(1) 1328 | LV_ModifyCol(2) 1329 | ;LV_Modify(1, "+Focus +Select +Vis") 1330 | ;ControlFocus,,ahk_id %文本框ID% 1331 | } 1332 | 1333 | ; 设置列宽并限制最大值的函数 1334 | SetColumnWidthWithLimit(col, maxWidth) 1335 | { 1336 | ; 先自动调整列宽 1337 | LV_ModifyCol(col, "AutoHdr") 1338 | Sleep, 10 1339 | 1340 | ; 获取当前宽度 1341 | SendMessage, 0x101D, col-1, 0, SysListView321,%窗口标题名称% ahk_class AutoHotkeyGUI ; 0x101D 为 LVM_GETCOLUMNWIDTH. 1342 | currentWidth := ErrorLevel 1343 | ;MsgBox, %currentWidth% 1344 | 1345 | ; 如果超过最大值,设置为最大值 1346 | if (currentWidth > maxWidth) 1347 | { 1348 | LV_ModifyCol(col, maxWidth) 1349 | } 1350 | } 1351 | 1352 | 获取选中项的值(行号){ 1353 | 选择值2:="" 1354 | if (文件夹名显示在前 ="开启") 1355 | LV_GetText(选择值2, 行号, 2) 1356 | Else 1357 | LV_GetText(选择值2, 行号, 1) 1358 | Return 选择值2 1359 | } 1360 | 1361 | 获取选中项的值2(){ 1362 | DelRowList:="" 1363 | RowNumber:=0 1364 | RowText:="" 1365 | RowText2:="" 1366 | Loop 1367 | { 1368 | RowNumber := LV_GetNext(RowNumber) ; 在前一次找到的位置后继续搜索. 1369 | if not RowNumber ; 上面返回零, 所以选择的行已经都找到了. 1370 | break 1371 | DelRowList:=RowNumber . ":" . DelRowList 1372 | zonghangshu:=A_Index + 1 1373 | } 1374 | loop, parse, DelRowList, : 1375 | { 1376 | if (zonghangshu = A_Index) 1377 | Break 1378 | if (文件夹名显示在前 ="开启") 1379 | LV_GetText(RowText2, A_loopfield,2) ; 获取每行第一个字段的文本 (索引从1开始) 1380 | Else 1381 | LV_GetText(RowText2, A_loopfield,1) ; 获取每行第一个字段的文本 (索引从1开始) 1382 | RowText:=RowText2 "`n" RowText 1383 | zonghangshu2:=A_Index 1384 | } 1385 | Return Trim(RowText,"`n") 1386 | } --------------------------------------------------------------------------------