AutoHotKey:从Windows资源管理器复制文件,将路径粘贴到Notepad2


0

我正在寻找一种方法。

使用ArsClip的剪贴板栏,我看到当我在Windows资源管理器中选择文件并将其复制时,其完整路径存储在剪贴板上。

如果我继续选择Windows资源管理器并粘贴,该文件将被复制到当前文件夹,确定。

如果我去Notepad2(或任何文本编辑器)并粘贴,通常的行为是没有任何反应。我希望将文件路径粘贴为文本。

我正在尝试使用AutoHotKey实现此功能。我需要:

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.

我不介意丢失文件引用。这意味着我不介意在运行此例程后,Windows资源管理器不再复制该文件。

知道怎么做吗?

根据user3419297的答案,我制作了这段代码:

~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

2
嗨,不幸的是我们不是脚本编写服务。到目前为止你有什么/尝试过的,你到底在哪里实施你的AHK脚本?
Ƭᴇcʜιᴇ007

如果你在资源管理器中复制一个文件,通过鼠标(右键单击)和键盘(菜单和/或ctrl + v)的粘贴选项在Notepad2中甚至不可用 - 据我所知 - 我认为这是物品2一个有争议的问题。我使用不同的快捷键来执行shell代码,该代码抓取在资源管理器中最后选择的任何文件的完整路径和/或文件名...不完全是您引用的内容,但不依赖于拦截粘贴或弄乱剪贴板。 ..如果你点击了一个文件并复制了它而没有点击另一个文件那么你可以使用Shell.Application窗口并粘贴路径
JJohnston2

@Techie我不是故意要求提供脚本编写服务,如果我的意思是我会聘请开发人员这样做。我对这个问题的意思是询问有人已经知道这些步骤,指出方向,以便我能做到。谢谢
Hikari

@JJohn我也这样做,我有Moo RightClick,它清理上下文菜单并添加整齐的额外功能,如复制到剪贴板文件的名称,路径等。但我想更进一步,而不是鼠标上的2或3次点击,我想复制文件,并在剪贴板上直接提供其路径。
Hikari

Answers:


1

试试这个:

#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

凉! tnx很多!由于它不能与Ctrl + C一起使用,我想知道一个更简单的版本,会发布它的问题。
Hikari
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.