获取更多文章和更新,请关注我的个人主页:www.leiting6.cn

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

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

脚本内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
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
image.png

拓展

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