导航

分享自用的autohotkey脚本

#1

说明

不知道有没有大佬以前发过类似的文章,纯粹自用分享,autohotkey可以高度定制键盘快捷键,日常使用感觉方便很多,主要介绍应用切换(替代鼠标点击),以下均在windows环境中.

官网地址

https://www.autohotkey.com/

常用快捷键标识

主要按照自己习惯去替换脚本中的

#:win 键
!:alt
^:ctrl
+:shift

1,任意目录中新建文本.

替代 每次需要新建文本的时候都鼠标右键去找新建文本 脚本中快捷键为 win + shift + t,可自行替换

#NoTrayIcon ; 隐藏系统托盘图标 
; win + shift + t用来在选定的位置新建一个txt文件
#+t::
    folder := getPath()
    ; MsgBox % folder
    ; MsgBox % A_WorkAreaWidth
    if (folder = "")
    {
        MsgBox, 16, , 无法确定要创建文件的位置。
        return
    }
    file := folder . "\new.txt"
    FileAppend, , %file%
    return

getPath()
{
    if WinActive("ahk_class CabinetWClass")
    {
        Loop, 9
        {
            ControlGetText, folder, ToolbarWindow32%A_Index%, ahk_class CabinetWClass
        } until (InStr(folder, "地址"))
        folder := LTrim(folder, "地址: ")
        folder := RTrim(folder, "\")
        ; MsgBox % floder
    }
    else if WinActive("ahk_class Progman || ahk_class WorkerW")
        folder = %A_Desktop%
    return folder
}

2,脚本中以burpsuite为例,快捷键呼出/隐藏burp

(这个脚本理论上可以对大多数应用进行快捷呼出/隐藏操作,需要更改对应的快捷键以及对应应用的ahk_class,ahk_exe等)

使用jar包启动burp的时候启动应用为java.exe,以下启动脚本为修改java.exe为burpsuite.exe, 其他使用jar启动的应用也可参照,目的是方便分类管理. 注意: 因为个人的启动参数配置会有不同,所以在 start %JAVA19_HOME%\bin\burpsuite.exe 后有省略,请根据自己的启动项调整添加.使用javaw.exe的原因是隐藏启动后的cmd. %JAVA_HOME%需要在环境变量中提前配置.

@echo off
copy %JAVA_HOME%\bin\javaw.exe  %JAVA_HOME%\bin\burpsuite.exe /y
start %JAVA_HOME%\bin\burpsuite.exe -jar ".\burpsuite_pro.jar"

autohotkey脚本, 快捷键为(alt+a), 可自行替换,

#NoTrayIcon
!a::hyf_onekeyWindow("%JAVA19_HOME%\bin\burpsuite.exe", "SunAwtFrame", "\S") ;注意修改burpsuite.exe 路径

hyf_onekeyWindow(exePath, titleClass := "burpsuite.exe", titleReg := "")
{ ;有些窗口用Ahk_exe exeName判断不准确,所以自定义个titleClass
    SplitPath, exePath, exeName, , , noExt
    If !hyf_processExist(exeName)
    {
        ;hyf_tooltip("启动中,请稍等...")
        Run,% exePath
        ;打开后自动运行 TODO
        funcName := noExt . "_runDo"
        If IsFunc(funcName)
        {
            ;hyf_tooltip("已自动执行函数:" . funcName)
            Func(funcName).Call()
        }
        Else If titleClass
        {
            WinWait, Ahk_class %titleClass%, , 1
            WinActivate Ahk_class %titleClass%
        }
    }
    Else If WinActive("Ahk_exe " . exeName)
    {
        funcName := noExt . "_hideDo"
        If IsFunc(funcName)
            Func(funcName).Call()
        WinHide
        ;激活鼠标所在窗口 TODO
        MouseGetPos, , , idMouse
        WinActivate Ahk_id %idMouse%
    }
    Else
    {
        If titleReg
            titleClass := "Ahk_id " . hyf_getMainIDOfProcess(exeName, titleClass, titleReg)
        Else If titleClass
            titleClass := "Ahk_class " . titleClass
        Else
            titleClass := "Ahk_exe " . exeName
        WinShow %titleClass%
        WinActivate %titleClass%
        funcName := noExt . "_activeDo"
        If IsFunc(funcName)
        {
            ;hyf_tooltip("已自动执行函数:" . funcName)
            Func(funcName).Call()
        }
    }
}

hyf_processExist(n) ;判断进程是否存在(返回PID)
{ ;n为进程名
    Process, Exist, %n% ;比IfWinExist可靠
    Return ErrorLevel
}

hyf_tooltip(str, t := 1, ExitScript := 0, x := "", y := "")  ;提示t秒并自动消失
{
    t *= 1000
    ToolTip, %str%, %x%, %y%
    SetTimer, hyf_removeToolTip, -%t%
    If ExitScript
    {
        Gui, Destroy
        Exit
    }
}

hyf_getMainIDOfProcess(exeName, cls, titleReg := "") 
{
    DetectHiddenWindows, On
    WinGet, arr, List, Ahk_exe %exeName%
    Loop,% arr
    {
        n := arr%A_Index%
        WinGetClass, classLoop, Ahk_id %n%
        ;MsgBox,% A_Index . "/" . arr . "`n" . classLoop . "`n" . cls
        If (classLoop = cls)
        {
            If !StrLen(titleReg) ;不需要判断标题
                Return n
            WinGetTitle, titleLoop, Ahk_id %n%
            ;MsgBox,% A_Index . "/" . arr . "`n" . classLoop . "`n" . titleLoop
            If (titleLoop ~= titleReg)
                Return n
        }
        Continue
    }
    Return False
}

hyf_removeToolTip() ;清除ToolTip
{
    ToolTip
}
2023-04-04
#2
使用autohotkey,适度离开鼠标,常用的应用全部使用快捷键来呼出.
2023-04-05
#3
autohotkey这个工具真的好用,我现在把复制粘贴tab+alt都换了。不换的话,日常使用的话手都按麻了。谢谢作者分享的脚本
学不可以已
2023-04-05
#4
谢谢脚本,这东西听过,自己用的少
2023-06-02
#5
第一次听说 学习了