最近在研究windows API,仿佛发现新大陆一般 --- 想在windows系统下面玩的更溜一些,还是得了解系统本身的API函数才行。其实python下通过安装pywin32也可以调用win32API,但是总觉得是瞎折腾;而且,毕竟C语言是学生时期的启蒙语言,直接利用VC编写动态链接库(dll)也不是难事。刚好这些天想写一个自动保存截图的小工具,经过一番搜索和自己的修改完善,目前已经完成了核心部分。

C/C++部分

这部分只有一个函数,详情如下:
- 函数名:SaveBmpFileFromClipboard()
- 参数: char *file_name (BMP文件的文件名,可以带上完整路径)
- 功能:从剪贴板保存图片为BMP格式到本地
- 返回值: 成功保存则返回0, 遇到错误则返回1

需要注意的是,想要保存一个BMP文件,还是要先了解BMP文件的构成的,点击查看

简单的说:

而我这里生成的:

因此BMP文件的数据构成为:
1. 写入事先手动设置好的文件头(占用14字节)
2. 写入从剪贴板得到的图片数据

接下来python部分的代码就很简单了,导入ctypes模块,利用ctypes.cdll加载上述dll,传入代表文件路径和文件名的字符串:

有不妥和可以优化之处,欢迎指出!

分类: 代码相关

发表评论

电子邮件地址不会被公开。 必填项已用*标注

%d 博主赞过: