在 Windows 资源管理器中使用键盘快捷键创建文本文件

在 Windows 资源管理器中使用键盘快捷键创建文本文件

我正在使用的解决方案如何使用热键创建新的文本文档 (TXT) 文件?几年前,使用 Autohotkey,它允许使用键盘快捷键在 Windows 资源管理器中的任何位置创建新的文本文件。

有一个缺点:当文件已经在资源管理器文件列表中获得焦点(“详细信息”视图),它不起作用,主要是因为,当选择一个文件时,上下文菜单不显示“新建 > 文本文档”

问题:如何创建新建文本文档的快捷方式,即使当前选择了一个文件在 Windows 资源管理器的详细信息视图中?

答案1

; ahk_group ExplorerGroup
GroupAdd, ExplorerGroup, ahk_class ExploreWClass
GroupAdd, ExplorerGroup, ahk_class CabinetWClass

; ahk_group DesktopGroup
GroupAdd, DesktopGroup, ahk_class Progman
GroupAdd, DesktopGroup, ahk_class WorkerW

; ahk_group ExplorerDesktopGroup
GroupAdd, ExplorerDesktopGroup, ahk_group ExplorerGroup
GroupAdd, ExplorerDesktopGroup, ahk_group DesktopGroup

            RETURN   ; === end of auto-execute section ===


#IfWinActive ahk_group ExplorerDesktopGroup

    F1::
    WinGet, active_id, ID, A
    InputBox, name, Create a New Text Document, Enter a name:,, 300, 120
    If !ErrorLevel
    {
        WinActivate, ahk_id %active_id%
        IfWinActive ahk_group DesktopGroup ; desktop
        {       
            FileAppend,, %A_Desktop%\%name%.txt
            Run, %A_Desktop%\%name%.txt
        }
        else
        IfWinActive ahk_group ExplorerGroup ; explorer
        {
            FolderPath := GetActiveExplorerPath()           
            FileAppend,, %FolderPath%\%name%.txt
            Run, %FolderPath%\%name%.txt
        }
    }
    return 

#IfWinActive

;* =========   FUNCTION     ===================

; https://www.autohotkey.com/boards/viewtopic.php?f=6&t=69925
GetActiveExplorerPath()
{
    explorerHwnd := WinActive("ahk_class CabinetWClass")
    if (explorerHwnd)
    {
        for window in ComObjCreate("Shell.Application").Windows
        {
            if (window.hwnd==explorerHwnd)
            {
                return window.Document.Folder.Self.Path
            }
        }
    }
}

答案2

无论是否选择了文件或文件夹,Windows 资源管理器中的文件菜单都会在文件夹内显示新建 > 文本文档菜单选项。

您可以使用此 AutoHotkey 脚本(绑定到 F4)模拟按Altfw来创建文本文档:t

F4::
  Send {ALT}fwt
Return

答案3

我有一个解决方法。PgUp 选择第一个文件。然后按 Ctrl + Space 清除选定的文件。

您可以在创建新文件之前将其添加到 authotkey 脚本中。这是最简单的方法。

;   New text file

#IfWinActive AHK_CLASS #32770
    Capslock & f11::
#IfWinActive AHK_CLASS CabinetWClass
    Capslock & f11::

    ; make it work even though a file is previously selected
    Send {PgUp} ; Force select the first file 
    Send ^{Space} ; Clear the selection

    Sleep 250 ; Remove delay if not required
    Send {AppsKey} ; Menu key
    Send w ; New
    Send t ; Text Document
    return
#IfWinActive
  • 适用于文件对话框(另存为/打开文件)
  • 即使选择了文件也可以工作
  • 即使光标位于屏幕外也能正常工作

将“Capslock & f11”更改为您喜欢的快捷方式。


要理解上述语法,请参见下面的示例,

;   Syntax - To have the same hotkey subroutine executed by more than one variant, the easiest way is to create a stack of identical hotkeys, each with a different #IfWin directive above it. For example:
    ;#IfWinActive ahk_class Notepad
    ;#z::
    ;#IfWinActive ahk_class WordPadClass
    ;#z::
    ;MsgBox You pressed Win+Z in either Notepad or WordPad.
    ;return

希望你觉得这个有用!

答案4

我最终使用:

  • @davidmneedham 在资源管理器窗口中的解决 方案:Alt,,,fwt

  • Right click在其他情况下wt例如桌面)

以下是代码:

#IfWinActive ahk_class CabinetWClass
F4:: Send {ALT}fwt
#IfWinActive

F4:: 
Click,,Right
Send wt
Return

相关内容