AutoHotKey: copie o arquivo do Windows Explorer, cole o caminho para o Notepad2

0

Estou procurando uma maneira de fazer isso.

Usando a barra de prancheta do ArsClip, vejo que quando seleciono um arquivo no Windows Explorer e o copio, seu caminho completo é armazenado na área de transferência.

Se eu continuar selecionando o Windows Explorer e colando, esse arquivo será copiado para o foler atual, ok.

Se eu for ao Notepad2 (ou qualquer editor de texto) e colar, o comportamento normal é que nada acontece. Gostaria que o caminho do arquivo fosse colado como texto.

Estou tentando implementar esse recurso usando o AutoHotKey. Eu precisaria:

1) intercept paste command, not just Ctrl+V keystroke
2) verify if the pasting target is a text editor and not a file manager
3) when that's the case, I'd need to retrieve the file path from clipboard, which ArsClip is able to do
4) then edit clipbard to place that string into it, so that the paste command will write the string to the target.

Eu não me importo de perder a referência do arquivo. Isso significa que eu não me importo se, depois de executar essa rotina, o Windows Explorer não copiar mais o arquivo.

Alguma ideia de como fazer isso?

Com base na resposta de user3419297 eu fiz este código:

~F9::                                   ; run when F9 is pressed, ~ makes any other feature still trigger
    if GetKeyState("ScrollLock", "T")   ; only run if ScrollLock is active, easy way to quickly suspend the feature
        && WinActive("ahk_class  CabinetWClass") ; only run when WinExplorer is active window
    {   
        clipboard := ""                ; empty clipboard
        Send, ^c                       ; copy the selected file
        ClipWait, 1                    ; wait for the clipboard to contain data
        if (!ErrorLevel)               ; If NOT ErrorLevel clipwait found data on the clipboard
        clipboard := clipboard         ; convert to text (= copy the path)
    }
return
    
por Hikari 09.05.2016 / 17:33

1 resposta

1

Tente isto:

#If WinActive("ahk_class  CabinetWClass") && WinExist("ahk_class Notepad2U")

; select a file in explorer and press F1 to copy the path and paste it in Notepad2.

F1::
ClipSaved := ClipboardAll      ; Save the entire clipboard to the variable ClipSaved
clipboard := ""                ; empty clipboard
Send, ^c                       ; copy the selected file
ClipWait, 1                    ; wait for the clipboard to contain data
if (!ErrorLevel)               ; If NOT ErrorLevel clipwait found data on the clipboard
clipboard := clipboard         ; convert to text (= copy the path)
Sleep, 300 
 ; MsgBox, %clipboard%         ; display the path
WinActivate, ahk_class Notepad2U
WinWaitActive, ahk_class Notepad2U
Send, ^v                       ; paste the path
clipboard := ClipSaved         ; restore original clipboard
return

#If
    
por 10.05.2016 / 09:06