AutoHotkey 必备脚本

作者: 王不哈 | 来源:发表于2018-01-23 21:20 被阅读581次
    1. 背景

    对于键盘党来说,AutoHotkey 简直是必备神器,自从用上了就离不开了。当然再锋利的刀刃,也要看你会不会使,AutoHotkey的脚本语言/语法设计的是真的烂。可一旦一个顺手的脚本写成了,你就再也离不开它了。

    2. 安装AutoHotkey

    下载地址:AutoHotkey

    3. 第一个脚本
    1. 使用顺手的编辑器编写第一个脚本,文件命名为temp.ahk
    ; 按下 Win+N 时,打开记事本
    #n::Run Notepad
    

    安装好AutoHotkey之后,双击文件temp.ahk,系统托盘便出现了AutoHotkey的小图标,这时脚本已经生效了,按下Win+N可以看到记事本启动。

    4. 是时候提高一波生产力了

    脚本命名为keys.ahk

    • 快捷运行/停止网易云音乐
    DetectHiddenWindows,On
    
    ; Ctrl+Alt+W 快捷打开/停止网易云音乐
    ^!w::
    Process,Exist,cloudmusic.exe
    if (%ErrorLevel% == 0){ ; 如果未运行,则启动
        Run "C:\Program Files (x86)\Netease\CloudMusic\cloudmusic.exe"
        WinWait,ahk_class DesktopLyrics
        WinMove,,,,A_ScreenHeight-64 ; 将桌面歌词移动到合适的位置
    } else { ; 已启动则停止
    ; 停止后,系统托盘中网易云的图标仍然还在,需要鼠标飘过才能消失
    ; 于是在系统托盘范围内寻找网易云图标的位置,并将鼠标移动过去,之后再移动回来
        Run, taskkill /PID %ErrorLevel% /F,,Hide
        Sleep, 500
        CoordMode,Pixel,Screen
        CoordMode,Mouse,Screen
        MouseGetPos, MX, MY
        WinGetPos, Task_X, Task_Y, Task_W, Task_H, ahk_class Shell_TrayWnd
        ImageSearch, X, Y, Task_X, Task_Y/3, A_ScreenWidth, A_ScreenHeight, cloud_music_icon.bmp
        MouseMove, X, Y
        MouseMove, MX, MY
        CoordMode,Pixel,Relative
        CoordMode,Mouse,Relative
    }
    return
    

    想听歌时:Ctrl+Alt+W
    不想听了:Ctrl+Alt+W

    • 在资源管理器中快捷打开Cmder
      虽说在浏览文件时,可以通过右键菜单快捷得在当前目录打开Cmder,可用到右键,就要使用鼠标,手就要离开键盘,对于一个经常需要在终端下工作的程序员来说,这个不能忍,于是:
    ; Ctrl+Shift+T 在当前目录打开cmder
    $^+t::
    Process,Exist,explorer.exe
    if (%ErrorLevel% != 0){
        if WinActive("ahk_class CabinetWClass"){
            path := getExplorerPath()   
            Run ,cmder "%path%"
            return
        } ; 如果在桌面
        if WinActive("ahk_class WorkerW"){
            Run ,cmder %A_Desktop%
            return
        }
    }
    ; 获取当前路径的函数
    getExplorerPath(){
        IfWinExist, ahk_class CabinetWClass
        {
            ControlGetText,address,ToolbarWindow323,ahk_class CabinetWClass
            StringLen, length, address
            StringRight, path, address, length-4
            return path
        }
        return
    }
    

    要在这个目录打命令?Ctrl+Shift+T,秒秒钟,一个 Cmder 准备就绪。

    • 在Sublime Text中快捷打开Cmder
      顺手的编辑器为Sublime Text,在Sublime Text中编辑完代码之后,通常需要打开终端编译运行刚刚的代码,常用的操作当然要方便又快捷,于是:
    ; Ctrl+Shift+T 在当前编辑文件的目录打开cmder
    $^+t::
    Process,Exist,sublime_text.exe
    if (%ErrorLevel% != 0){
        if WinActive("ahk_class PX_WINDOW_CLASS"){
            WinGetTitle, title, ahk_class PX_WINDOW_CLASS
            StringGetPos,pos,title,\,r
            StringLeft, folder, title, %pos%
            Run ,cmder "%folder%"
            return
        }
    }
    
    • 统一常用快捷键
      各种工具/IDE快捷键不尽相同,于是将几个最常用的快捷键统一如下:
    ; Ctrl + BackSpace 删除单词
    #IF WinActive("ahk_class Notepad")
    Ctrl & BackSpace::Send ^+{left}{BackSpace}
    #IF
    
    ; Shift + Enter 另起新行
    Shift & Enter::Send {End}{Enter}
    
    ; Ctrl + D 删除一行
    ; 对Sublime Text特殊处理(PX_WINDOW_CLASS)
    ; 只支持常用的几个IDE/编辑器
    ; 在不支持的窗口上,原样发送 Ctrl + D 快捷键
    $^d::
    if (WinActive("ahk_class PX_WINDOW_CLASS")){
        send ^l{delete}
        return
    }
    if (WinActive("ahk_class Notepad")
     or WinActive("ahk_class ApplicationFrameWindow") 
     or WinActive("ahk_class Qt5QWindowIcon")){
        send {home 2}{Shift down}{end}{right}{Shift up}{delete}
    }else{
        send, ^d
    }
    return
    
    ; Alt+C关闭当前窗口
    ; 如果当前窗口是Chrome,则将快捷键映射为Ctrl + W,作用为关闭当前标签页,而不是关闭整个窗口
    $!c::
    if(WinActive("ahk_class Chrome_WidgetWin_1")){
        send {Ctrl down}w{Ctrl up}
    }else{
        WinClose,A
    }
    return
    
    5. 设置开机运行
    1. 右键该脚本,创建快捷方式
    2. 将快捷方式移动到windows启动目录
      注:Win+R打开运行,输入shell:startup即打开启动目录
    6. 更多用法有待挖掘
    7. Github地址备用

    MyAHKScript

    相关文章

      网友评论

      • YangDDD:把右边的 alt , shift 之类的键改成写代码常用的花括号,中括号
        请问大佬能写一下这个脚本吗
      • wangsg先生:主动点推荐给我呀,这个真是棒
        王不哈:@Anti心 用了就停不下来😏
      • 河许人:希望您能同步到智能热键网www.autoahk.com上面去,那里是我们的基地

      本文标题:AutoHotkey 必备脚本

      本文链接:https://www.haomeiwen.com/subject/gtjeaxtx.html