1 (изменено: DD, 2011-11-24 00:10:50)

Тема: AHK (Help2AHK_L): Определение текущего пути в окне Проводника

Скрипт из Коллекции. На AHK_L ни гу-гу, — конвертнуть бы.


F11::
  hWnd := WinExist("A") 
  WinGetClass wClass, ahk_id %hWnd% 
  If (wClass != "ExploreWClass" and wClass != "CabinetWClass") 
     MsgBox Используйте только в окне Проводника! 
  Else 
     MsgBox % GetWindowsExplorerPath(hWnd) 
Return

;=================================================

GetWindowsExplorerPath(_hWnd) 
{ 
   local pid, hMem, pv, pidl, pidl?, explorerPath 

   If (A_OSType = "WIN32_NT") 
   { 
      pid := DllCall("GetCurrentProcessId") 
      SendMessage 0x400 + 12   ; CWM_GETPATH = WM_USER + 12 
            , pid, 0, , ahk_id %_hWnd% 
      hMem := ErrorLevel 
      if (hMem != 0) 
      { 
         pv := DllCall("Shell32\SHLockShared" 
            , "UInt", hMem, "UInt", pid) 
         if (pv != 0) 
         { 
            pidl := DllCall("Shell32\ILClone", "UInt", pv) 
            DllCall("Shell32\SHUnlockShared", "UInt", pv) 
         } 
         DllCall("Shell32\SHFreeShared" 
            , "UInt", hMem, "UInt", pid) 
      } 
   } 
   VarSetCapacity(explorerPath, 512, 0) 
   DllCall("Shell32\SHGetPathFromIDList" 
      , "UInt", pidl, "Str", explorerPath) 
   Return explorerPath 
}

2

Re: AHK (Help2AHK_L): Определение текущего пути в окне Проводника

F11::
   hWnd:=WinExist("A")
   WinGetClass wClass, % "ahk_id"hWnd
   If (wClass!="ExploreWClass" And wClass!="CabinetWClass")
      MsgBox Используйте только в окне Проводника!
   Else
      MsgBox, % ExplorerPath(hWnd)
   Return

ExplorerPath(_hwnd)
{
   For Item In ComObjCreate("Shell.Application").Windows
      If (Item.hWnd=_hwnd)
         Return, LTrim(Item.LocationURL, "file:///")
}

3

Re: AHK (Help2AHK_L): Определение текущего пути в окне Проводника

Спасибо.
OFF: И тяжкий же это труд — перейти на AHK_L...