我正在使用的解决方案如何使用热键创建新的文本文档 (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)模拟按Alt、f、w来创建文本文档: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在其他情况下w(t例如桌面)
以下是代码:
#IfWinActive ahk_class CabinetWClass
F4:: Send {ALT}fwt
#IfWinActive
F4::
Click,,Right
Send wt
Return