对"我的电脑" 进行增强
Table of Contents
这里不对代码进行过于详细的讲解。只贴代码,并简单描述其功能
AutoHotKey几个简单的小例子 中已经有一个关于对资源管理器中实现Ctl+alt+h
一键显隐 隐藏文件的功能,这里再给出其他几个与资源管理器有关的功能增强。
复制当前文件的路径
这段代码实现
- Alt+1 : copy 选中文件的名称
- Alt+2 : copy 当前路径名
- Alt+3 : copy 选中文件的完整路径名
SetTitleMatchMode Regex ;可以使用正则表达式对标题进行匹配 ; 下面的窗口类依次为:桌面、Win+D后的桌面、我的电脑、资源管理器、另存为等 #IfWinActive ahk_class Progman|WorkerW|CabinetWClass|ExploreWClass|#32770 ;;Alt+1 copy文件名 !1:: send ^c sleep,200 clipboard = %clipboard% SplitPath, clipboard, name clipboard = % return ;;alt+2 copy 此文件所在的路径名 !2:: send ^c sleep,200 clipboard = %clipboard% SplitPath, clipboard, , dir clipboard = %dir% return ;;copy 此文件的全路径名 !3:: send ^c sleep,200 clipboard = %clipboard% return #IfWinActive
Alt+h 一键显隐扩展名
SetTitleMatchMode Regex ;可以使用正则表达式对标题进行匹配 #IfWinActive ahk_class CabinetWClass|ExploreWClass ;Alt+h TOGGLES FILE EXTENSIONS !h:: RegRead, HiddenFiles_Status, HKEY_CURRENT_USER, Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced, HideFileExt If HiddenFiles_Status = 1 RegWrite, REG_DWORD, HKEY_CURRENT_USER, Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced, HideFileExt, 0 Else RegWrite, REG_DWORD, HKEY_CURRENT_USER, Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced, HideFileExt, 1 WinGetClass, eh_Class,A If (eh_Class = "#32770" OR A_OSVersion = "WIN_VISTA") send, {F5} Else PostMessage, 0x111, 28931,,, A Return #IfWinActive
Ctl+Alt+c 在当前路径下打开Cmd.exe 窗口。
SetTitleMatchMode Regex ;可以使用正则表达式对标题进行匹配 #IfWinActive ahk_class CabinetWClass|ExploreWClass ; open 'cmd' in the current directory ^!c::OpenCmdInCurrent() #IfWinActive ; Opens the command shell 'cmd' in the directory browsed in Explorer. ; Note: expecting to be run when the active window is Explorer. ; OpenCmdInCurrent() { ControlGetText, full_path, Edit1, A IfInString full_path, \ { Run, cmd /K cd /D "%full_path%" } else { Run, cmd /K cd /D "C:\ " } }
Alt+n 新建文本文件 Shift+= 新建文件夹
; create new text file SetTitleMatchMode Regex ;可以使用正则表达式对标题进行匹配 #IfWinActive ahk_class CabinetWClass|ExploreWClass ;"+" like Emacs dired: create new folder +=::Send !fwf !n:: InputBox, UserInput, New File Name?, Please enter a New File Name(.txt), , 280, 100,,,,,.txt will be append if ErrorLevel { }else { Send {Left} ControlGetText, ExplorePath, Edit1, A StringRight, isEndsWithPathSeaprator, ExplorePath, 1 if (isEndsWithPathSeaprator ="\") { newFilePath=%ExplorePath%%UserInput%.txt }else { newFilePath=%ExplorePath%\%UserInput%.txt } FileAppend,, %newFilepath% ControlFocus, SysListView321,A ; Switch the active window's keyboard layout/language to English: PostMessage, 0x50, 0, 0x4090409,, A ; 0x50 is WM_INPUTLANGCHANGEREQUEST. SendInput {F5}%UserInput% } return #IfWinActive
焦点的移动
- Ctrl+, 选中第一个文件
- Ctrl+. 选中最后一个文件
- ctrl+; 定位到左侧目录树
- ctrl+L 定位在地址栏
#IfWinActive ahk_class CabinetWClass|ExploreWClass ;;Ctrl+, 选中第一个文件 ^,:: ControlFocus, SysListView321,A Send {Home} return ;;Ctrl+. 选中最后一个文件 ^.:: ControlFocus, SysListView321,A Send {End} return ;;ctrl+; 定位到目录树 ^;:: ControlFocus, SysTreeView321,A return ;;ctrl+L 定位在地址栏 ^l:: ControlFocus, Edit1,A #IfWinActive
用键盘进行管理
一些绑定模拟Emacs 中Dired(Emacs中目录管理工具) 的操作。
- Ctrl+n 向下移动
- Ctrl+p 向上移动
- Ctrl+f 向右移动
- Ctrl+b 向左移动
- Ctrl+h 如果在左侧的资源管理器中,表示折叠目录树
- Ctrl+j 基本相当于回车(进入子目录后后选中第一个文件)
- Ctrl+u 上层目录,并选中第一个文件
#IfWinActive ahk_class ExploreWClass|CabinetWClass ^n::Send {Down} ^p::Send {Up} ^j:: ControlGetFocus, focusedControl,A if(focusedControl="SysListView321") { Send {Enter} ControlFocus, SysListView321,A Send {Home} }else { Send {Enter} } return ^f::Send {Right} ^b::send {Left} ^h:: ControlGetFocus, focusedControl,A if(focusedControl="SysTreeView321") { send {Left} }else { Send ^h } return ^u:: ControlGetFocus, focusedControl,A if(focusedControl="SysListView321") { send {backspace} ControlFocus, SysListView321,A Send {Home} } return #IfWinActive
Ctrl+e 用Emacs编辑器打开选中的文件
;;需要 emacsclientw 在Path路径下 openSelectedfileWithEamcs() { ControlGetFocus, focusedControl,A if (focusedControl="SysListView321") { ClipSaved := ClipboardAll Send ^c sleep,200 clipboard = %clipboard% fullPath=%clipboard% Clipboard := ClipSaved run , emacsclientw %fullPath% } } #IfWinActive ahk_class ExploreWClass|CabinetWClass ^e:: openSelectedfileWithEamcs() #IfWinActive