我在用着自动热键并尝试这样做:
- 打开下载文件夹(
Q:\Down
就我而言)或激活它(如果已经打开)(子文件夹不算,例如Q:\Down
如果我Q:\Down\phvideos
已经打开则仍然打开)
我正在使用的脚本
Run "Q:\Down"
或者
Run % "explorer /expand, Q:\Down\"
两者都可以打开这样的文件夹,但再次激活它会在资源管理器中打开一个重复的窗口。
是否有任何命令可以打开唯一的文件夹,或者检测打开的资源管理器窗口中是否存在给定的文件夹路径?
答案1
如果你有选择
“在标题栏中显示完整路径“已启用,
您可以使用
SetTitleMatchMode, 3
If WinExist("Q:\Down ahk_class CabinetWClass")
WinActivate
else
Run % "explorer /expand, Q:\Down\"
否则你可以尝试这个:
Run_explorer("Q:\Down")
Run_explorer(path) {
If InStr(explorer_list(), path)
{
Loop, Parse, % explorer_list(), `n
{
If InStr(A_LoopField, path)
{
ID := StrSplit(A_LoopField,"_").1
WinActivate, ahk_id %ID%
break
}
}
}
else
Run % path
}
explorer_list() {
; Get ID + fullpath of all opened explorer windows:
If WinExist("ahk_class CabinetWClass") ; explorer
{
list := ""
; https://autohotkey.com/boards/viewtopic.php?p=28751#p28751
for window in ComObjCreate("Shell.Application").Windows
{
try explorer_path := window.Document.Folder.Self.Path
If (explorer_path = "")
continue
WinGet, ID, ID, % explorer_path
list .= ID "_" explorer_path ? ID "_" explorer_path "`n" : ""
}
list := trim(list, "`n")
return list
}
}
答案2
我已经忘记了这个问题,哈哈,这是我现在的脚本,为了帮助未来的用户
global DOWNLOAD_FOLDER := "K:\Down"
; win + q Open Down
#q::
{
downWinTitle := "Down ahk_class CabinetWClass"
WinGet explorerHwnd, ID, % downWinTitle
path := GetExplorerPath(explorerHwnd)
if(!explorerHwnd || path != DOWNLOAD_FOLDER){
Run % "explorer /expand, " . DOWNLOAD_FOLDER
WinWait % downWinTitle
WinGet explorerHwnd, ID, % downWinTitle
}
WinActivate % "ahk_id " . explorerHwnd
Return
}