需要频繁打开一些藏的很深的文件夹,于是需要一个快速打开文件夹的工具,找了好多没有找到符合要求的(简单,快速启动,方便设置),只好自己写一个。
功能:
- 单击鼠标中键打开窗口,再次单击关闭窗口。
- 右键选择目录,左键打开目录,只需设置一次,每次单击中键都能打开该窗口。
代码:
#Requires AutoHotkey v2.0
CoordMode "Mouse"
; 配置存储路径
configFile := "./FolderShortcut.ini"
; 配置图标
; TraySetIcon "./icons/cat.ico"
; 初始化配置
isGuiVisible := false
savedPaths := Map()
Loop 6 {
path := IniRead(configFile, "Paths", "Btn" A_Index, "")
if (path != ""){
savedPaths[A_Index] := path
}
}
; 创建主界面
mainGui := Gui()
mainGui.Title := "目录快捷启动器"
mainGui.OnEvent("Close", (*) => mainGui.Hide())
; 创建2×3按钮矩阵
Loop 6 {
i := A_Index
row := (i-1) // 3
col := Mod(i-1, 3)
btn := mainGui.Add("Button", "vBtn" i " x" (10+col*110) " y" (10+row*60) " w100 h50")
try {
pathArray := StrSplit(savedPaths[i], "\")
} catch as e {
pathArray := "路径有误"
}
btn.Text := savedPaths.Has(i) ? pathArray[-1] : "点击右键设置"
btn.OnEvent("Click", LeftClickAction.Bind(i))
btn.OnEvent("ContextMenu", RightClickAction.Bind(i))
}
; 中键显示窗口
; MButton:: {
; mainGui.Show("AutoSize")
; WinSetAlwaysOnTop true, mainGui.Title
; }
MButton:: {
global isGuiVisible, mainGui
if !isGuiVisible {
MouseGetPos &xpos, &ypos
;MsgBox xpos
mainGui.Show("x" xpos " y" ypos " AutoSize")
;mainGui.Show("AutoSize")
WinSetAlwaysOnTop true, mainGui.Title
isGuiVisible := true
} else {
mainGui.Hide()
isGuiVisible := false
}
}
; 左键打开文件夹
LeftClickAction(index, *) {
global savedPaths
if savedPaths.Has(index) && DirExist(savedPaths[index])
Run savedPaths[index]
}
; 右键设置路径
RightClickAction(index, *) {
global mainGui, savedPaths
selectedDir := DirSelect(, 3, "选择文件夹")
if selectedDir != "" {
savedPaths[index] := selectedDir
mainGui["Btn" index].Text := selectedDir
SaveConfig()
}
}
; 保存配置到INI
SaveConfig() {
global configFile, savedPaths
For index, path in savedPaths
IniWrite path, configFile, "Paths", "Btn" index
}
; 退出时保存
Persistent
如果不喜欢用中键,可以把脚本中“MButton”,替换成想要替换的快捷键组合,注意不要替换常用快捷键。比如可以替换成win+K,则写成“#k”,ctrl+o则写成“^o”。
如果想用自己的图标,则把"; TraySetIcon “./icons/cat.ico”"的注释取消,然后将自己准备的icon文件的位置写在后面即可。