Moin Lottich,
wenn ich Deine Anforderungen lese und das Skript von AspirinJunkie immer in ($mExplWin["selected"])[0] den von Dir gewünschten Pfad liefert, heißt das für mich, Du suchst den Pfad des von Dir in einem aktuell aktiven Explorerfenster auf der rechten Seite markierten /selektierten Eintrags.
Wenn das so ist, sollte die folgende Methode 'geradeaus' zum Ziel führen:
AutoIt
HotKeySet('^!g', "GetFolder")
HotKeySet('{Esc}', "Cancel")
; Halte das Skript am Laufen, bis der Benutzer es beendet
While 1
Sleep(100) ; Warte in einer Schleife
WEnd
Func Cancel()
Exit
EndFunc
Func GetFolder()
MsgBox(0, "Aktives Verzeichnis", GetSelectedItemFromActiveExplorer())
EndFunc
;=======================================================================================================================
; Aktives Shellfensterobjekt bestimmen und ggf. den Pfad des (ersten) selektierten Elements zurückgeben
; InternetExplorer->Document = ShellFolderView Objekt
;=======================================================================================================================
Func GetSelectedItemFromActiveExplorer()
Static $CLSID_ShellFolderView = "{62112AA1-EBE4-11CF-A5FB-0020AFE7292D}"
Local $oShFolderView = 0
Local $hAct = DllCall("user32.dll", "hwnd", "GetForegroundWindow")[0] ; _WinAPI_GetForegroundWindow()
If $hAct <> 0 Then
For $oShellWindow In ObjCreate("Shell.Application").Windows()
If $oShellWindow.hWnd = $hAct Then
$oShFolderView = $oShellWindow.Document
IF IsObj($oShFolderView) And (ObjName($oShFolderView, 6) = $CLSID_ShellFolderView) Then
If $oShFolderView.SelectedItems.Count > 0 Then
Return $oShFolderView.SelectedItems.Item(0).Path
EndIf
EndIf
EndIf
Next
EndIf
EndFunc ;==>GetSelectedItemFromActiveExplorer
Alles anzeigen