AutoHotKey技巧3:保存截图为bmp文件

字数 442阅读 738

在我的另外一篇文章《C/C++:保存剪贴板截图为bmp文件(编译成dll供python调用)》中,讲到了怎么利用windows API来读取剪贴板中的内容并保存成bmp文件(如果剪贴板中是图片)。这里还是借用这篇文章中生成的exe文件,配合autohotkey脚本,来便捷地将剪贴板中的图片保存为bmp文件。

exe文件下载链接:点击跳转

脚本内容

SaveBmp()
{
    InputBox, file_name, 输入, 请输入图片完整路径例,,,,,,,, D:\%A_now%.bmp  ;利用inputbox弹出对话框
                                                                            ;指引用户指定bmp文件完整存储路径
                                                                            ;A_now为当前时间
    if ErrorLevel = 1       ;根据inputbox的errorlevel来判断
    {                       ;用户是点了确定还是点了取消(关闭),有或者是操作超时
        MsgBox 取消保存!
        return
    }
    if ErrorLevel = 2
    {
        MsgBox 操作超时!
        return
    }
    if ErrorLevel = 0       ;如果点了确定,则进行保存截图操作
    {
        RunWait SaveBmpFile "%file_name%",, Hide    ;利用runwait执行SaveBmpFile.exe
        if ErrorLevel = ERROR                       ;runwait会自动设置errorlevel,如果是ERROR,则说明exe出现异常错误
            MsgBox 执行SaveBmpFile时发生未知错误!
        else if ErrorLevel = 0                      ;如果exe执行完成,会有返回值,根据返回值弹出提示
            MsgBox %file_name%保存成功!
        else if ErrorLevel = 11
            MsgBox 保存出错,剪贴板内容不是图片!
        else if ErrorLevel = 12
            MsgBox 保存出错,打开剪贴板失败!
        else if ErrorLevel = 13
            MsgBox 保存出错,请检查文件夹权限等!
        else if ErrorLevel = 14
            MsgBox 保存出错,文件路径非法!
        else
            MsgBox 未知错误!
    }
}

^!c:: SaveBmp()  ;Ctrl+Alt+C快捷键进行截图

注释已经对关键语句进行了解释,希望刚接触ahk的同学通过autohotkey中文论坛了解一下其中用到的函数,这里主要有InputBoxRunWait,重点是理解这2个函数的ErrorLevel设定,这样才能根据执行结果让程序顺利流入各个分支,增强健壮性。

使用

安装AutoHotKey,新建文本贴入上述代码并保存成xxx.ahk,将SaveBmpFile.exe和ahk脚本放在同一文件夹,双击脚本文件,这样就已经在后台运行了。

效果

按下组合键,会弹出输入框,提示输入图片存储的完整路径,默认为D盘更目录下以当前时间命名,需要其他位置或者命名格式可以自行更改。

image.png

拓展

可能使用过程中,大家也能发现,想要保存文件需要先手动截图。但是这都不是事儿啊!可以在弹出InputBox之前模拟按下PrtSC按键(截全屏)或者Alt+PrtSc(截当前活动窗口),这就需要大家发挥想象力了,我这里只提供核心功能。

推荐阅读更多精彩内容