2013-10-02 6 views
1

Мой сценарий AutoIt работал до тех пор, пока я использовал его через командную строку. Там я мог бы использовать $CmdLine[1] и передать путь в качестве аргумента. Теперь я пытаюсь преобразовать скрипт в новый метод, чтобы избежать аргументов командной строки.Получить путь к выбранному файлу проводника Windows в AutoIt

Вы открываете окно проводника и выбираете файл, например C:\test.txt. После этого вы вызываете функцию AutoIt с CTRL +WIN + C. Скрипт должен посмотреть, какой файл выбран в активном окне проводника, и получить путь C:\test.txt и назначить его переменной $file.

Это моя незавершенная работа, в которой я застрял.
Строка 5 $CmdLine[1] необходимо изменить на секретную функцию, которую я не знаю.

;Assign key combination "CTRL-WIN-C" to function "copyUNC" 
HotKeySet("^#c", "CopyUNC") 

;function to copy UNC path of selected Windows Explorer file/folder to clipboard 
func CopyUNC() 
    $file = FileGetLongName($CmdLine[1]) ;THIS LINE NEEDS TO BE CHANGED 
    $drive = StringLeft($file, 2) 
    $UNCdrive = DriveMapGet($drive) 
    If $UNCdrive = "" Then 
     $UNCfile = $file  
    else 
     $UNCfile = $UNCdrive & StringTrimLeft($file, 2) 
    endif 
    ClipPut($UNCfile) 
endfunc 

;necessary loop so AutoIt script stays active and in Tray 
While 1 
    Sleep(100) 
WEnd 

Q: Как получить путь выбранного файла/папки из проводника Windows в AutoIt v3.3.8.1?

Примечание # 1: Я не хочу использовать реестра и правой кнопкой мыши уловок, чтобы передать этот аргумент
Note # 2: Если выбрано несколько файлов, просто пройти первый файл. Не перегружайте вещи

+0

В качестве альтернативы, вы могли бы сделать вашу программу отозвана из «отправки в» контекстном меню. Чтобы вы щелкнули правой кнопкой мыши по файлу, выберите «Отправить», а затем ваше приложение. Файл будет передан вашему приложению как cmdline [1] – Colyn1337

+0

http://www.autoitscript.com/forum/topic/89833-windows-explorer-current-folder/ – crazypotato

ответ

1

CMDLINE [1] не имеет ничего общего с тем, что вы хотите.

Если вы хотите активировать свой скрипт с помощью горячей клавиши ПОСЛЕ того, как вручную выбрать файл в Проводнике Windows, вам нужно самому изучить окно проводника.

Вот функция, чтобы получить выбранный элемент в проводнике

Func GetExplorerSelection() 
Local $saveClip = "" 
Local $filesFolders = "" 
Local $handle = _WinAPI_GetForegroundWindow() 
Local $className = _WinAPI_GetClassName($handle) 
If $className = "ExploreWClass" Or $className = "CabinetWClass" Then 
$saveClip = ClipGet() 
Send("^c") 
Sleep(50) ; give clipboard time to react 
$filesFolders = ClipGet() 
ClipPut($saveClip) 
; test if $filesFolders contains @LF and split if so etc.. 
; code to call StringSplit() etc.. 
EndIf 
EndFunc 
Смежные вопросы