2016-08-31 70 views
0

我使用autohotkey版本:1.0.48.05(因为我坚​​持使用activeaid)。 读取当前路径的脚本如下(并且一直运行到Win 7)。Autohotkey和Windows 10:如何获取当前资源管理器路径

; Get full path from open Explorer window 
WinGetText, FullPath, A 

; Clean up result 
StringReplace, FullPath, FullPath, `r, , all 
FullPath := RegExReplace(FullPath, "^.*`nAddress: ([^`n]+)`n.*$", "$1") 

我如何怀疑在切换到Win10时,我似乎也切换了语言。 地址::V: 如果我和 WinGetText,FULLPATH,A MSGBOX%FULLPATH% 我看到除其他字符串(由CRobvoíously分隔)清洁前MSGBOX出%FULLPATH%\ VERTRIEB \前景\ MyFile的

所以我如何调整正则表达式来提取那个字符串!

问候 汉纳斯

回答

0

尝试:

f1::MsgBox % Explorer_GetSelection() 

Explorer_GetSelection(hwnd="") { 
    WinGet, process, processName, % "ahk_id" hwnd := hwnd? hwnd:WinExist("A") 
    WinGetClass class, ahk_id %hwnd% 
    if (process = "explorer.exe") 
     if (class ~= "(Cabinet|Explore)WClass") { 
      for window in ComObjCreate("Shell.Application").Windows 
       if (window.hwnd==hwnd) 
        path := window.Document.FocusedItem.path 

      SplitPath, path,,dir 
     } 
     return dir 
} 
2
#If WinActive("ahk_class CabinetWClass") ; explorer 

    F1:: 
     ; https://autohotkey.com/boards/viewtopic.php?p=28751&sid=8c658dfc0a082c915aeefff6b5a92a23#p28751 
     for window in ComObjCreate("Shell.Application").Windows 
     { 
      fullpath := "" 
      try fullpath := window.Document.Folder.Self.Path 
      IfWinActive, % "ahk_id " window.HWND 
       break 
     } 
     MsgBox % fullpath 
     window := "" 
    return 

#If 
+0

可这也没有autohotkey_l做些什么呢? – user668338

+0

您可以下载可移植版本的AHK_L以运行代码或使用https://autohotkey.com/download/中的编译器将脚本编译为.exe。 – user3419297

+0

有一个由Sean编写的与旧版AutoHotkey 1.0配合使用的COM库,您必须修改上面的代码才能使用它,因为它与使用最新版本的AutoHotkey获得的内置COM支持的接口不同。此外,没有AHK_L,它只是AutoHotkey 1.1,因为Lexicos已经接任了AutoHotkey的主要开发人员。 – errorseven

相关问题