2016-08-31 26 views
0

私はautohotkeyバージョン:1.0.48.05を使用しています。 現在のパスを読み取るスクリプトは次のとおりです(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に切り替えると、言語が切り替わったように見えます。 私は WinGetText、フルパス、 のMsgBox%FULLPATH% で洗浄する前に、%のフルパスの%をMSGBOX場合は、私が他の文字列(obvoíouslyCRで区切られた)の中で参照: 住所:V:\ 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

AutoHotkey 1.0の古いバージョンで動作するSeanによって書かれたCOMライブラリがあります。これは、最新バージョンのAutoHotkeyで手に入れられたCOMサポートとは、sytactically異なるので、上記のコードを修正する必要があります。また、AHK_Lもなく、LexicosがAutoHotkeyの主な開発者として引き継いだのはAutoHotkey 1.1だけです。 – errorseven

関連する問題