python调用微信截图功能_丁爸的博客-程序员宝宝_python调用微信截图

技术标签: python3  python  桌面程序  windows  

本文介绍python调用微信截图功能实现:监听键盘按键,触发截图功能

一、技术原理

  1. 通过dos方式调用PrScrn.dll来实现截图功能
  2. 通过监听键盘按键触发截图

二、安装库

venv\Scripts\python.exe -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ keyboard
venv\Scripts\python.exe -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ pillow

keyboard:监听键盘事件
pillow:保存图片

三、创建main.py文件

代码如下:

import os
import keyboard as keyboard
from time import sleep
from PIL import Image, ImageGrab

if __name__ == '__main__':
    while True:
        if keyboard.wait(hotkey='ctrl + alt + a') == None:
            # 清空剪切板
            from ctypes import windll
            if windll.user32.OpenClipboard(None):
                windll.user32.EmptyClipboard()
                windll.user32.CloseClipboard()

            print('开始截图')
            os.system('start /B rundll32 PrScrn.dll PrScrn')

            # 等待截图后放到剪切板
            im = ImageGrab.grabclipboard()
            while not im:
                im = ImageGrab.grabclipboard()
                sleep(0.5)

            print('截图完成')
            if isinstance(im, Image.Image):
                im.save('Picture.png')
                print('保存成功')
            else:
                print('保存失败,重新截图')

说明:

  • 调用PrScrn.dll时,加上start /B前缀就不会弹出dos窗口,程序不会阻塞
  • 程序不会阻塞,我们就需要根据剪切板里面是否有数据来判断有没有截图完成,所以需要先清空剪切板

四、打包成exe程序

venv\Scripts\pyinstaller.exe -F -i log.ico main.py --noconsole

五、源码

源码下载,里面包含main.py和PrScrn.dll文件

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yyt593891927/article/details/108683478

智能推荐

算法期末考试复习题_时光荒凉了来时路的博客-程序员宝宝

算法期末考试复习题XD的小伙伴们很适合哦program 11、归并排序在最差最好平均情况下的时间复杂度分别是多少?答案:nlgn nlgn2、(判断) 归并排序的空间复杂度是O(1)? (判断)答案:false 应该是 O(n)3、优先队列提取最大元素的算法时间复杂度?(用O表示)答案:O(lgn)4、堆排序在最差最好平均情况下的时间复杂度分别是多少?答案:答案有争论,都是O(nlgn),最好达到O(n)5、(判断)堆排序的空间复杂度是O(1) ?答案:true6、请写出

在Vue项目中使用富文本编辑器vue-quill-editor_龙易安的博客-程序员宝宝

1、首先安装npm install vue-quill-editor --save2、可以注册为全局可用的组件import VueQuillEditor from 'vue-quill-editor'import 'quill/dist/quill.core.css'import 'quill/dist/quill.snow.css'import 'quill/dist/quill.bubble.css' Vue.use(VueQuillEditor, /* { default globa

PTA 6-3 逆序数据建立链表 (20分)_天上飞的云传奇的博客-程序员宝宝_6-3 逆序数据建立链表

PTA逆序数据建立链表本题要求实现一个函数,按输入数据的逆序建立一个链表。**函数接口定义:**struct ListNode *createlist();要求函数createlist利用scanf从输入中获取一系列正整数,当读到−1时表示输入结束。按输入数据的逆序建立一个链表,并返回链表头指针。链表节点结构定义如下:struct ListNode { int data; ...

矩阵分解模型——SVD与SVD++_学吧学吧终成学霸的博客-程序员宝宝_svd模型

这里写目录标题SVDFunk-SVDBias-SVDSVD++SVD正交矩阵:AAT=InAA^T=I_nAAT=In​正定矩阵:对任意非零实向量xxx,有xAxT>0xAx^T>0xAxT>0,则AAA为正定矩阵,若xAxT≥0xAx^T\ge0xAxT≥0则AAA为半正定矩阵酉矩阵:UHU=UUH=InU^HU=UU^H=I_nUHU=UUH=In​,其中H^HH表示共轭转置,则UUU为酉矩阵正规矩阵:UHU=UUHU^HU=UU^HUHU=UUH,其中H^HH表示共轭转置

list.stream.filter常用方式_JavaGirl_亚兰的博客-程序员宝宝_list.stream.filter

在Java8中对集合的操作可以这样操作1.查找集合中的第一个对象Optional<Object> first= ObjectList.stream() .filter(a -> "hanmeimei".equals(a.getUserName())) .findFirst();2.返回符合查询条件的集合//所有名字叫hanmeimei的集合List<O...

element-ui 关于树形结构el-tree的笔记_欲掩不从心的博客-程序员宝宝_el-tree isleaf

首先尝试了下懒加载。发现是时候会出现无法加载数据以及数据重新加载的问题,古世勇一次性给加载上去。首先说一次性加载的适用方法先确定tree的配置文件 label: 'name', chcildren: 'children', isLeaf: 'leaf'看官网说明label 就是你显示ui的值chcildren 就是你下级目录的全部数据...

随便推点

android 微信朋友圈效果(附完整注释)_剑西的博客-程序员宝宝_android微信朋友圈效果

先看下效果图:源码地址:https://github.com/mabeijianxi/Circle-of-friends源码的核心类(adapter)里面几乎对每个方法都有注解。本demo主要想分享的是:listview各种嵌套处理listview的优化处理用ImageLoader的一些特殊方式来优化图片加载listview的高度封装操作(刷新、加载更多、ui操作等)

Centos 安装 Nginx+passenger及同puppet-dashboard结合_lixwcqs的博客-程序员宝宝

Puppet的服务器效能不高,所以想改用Nginx,有的方法是用

【VMware vSAN 7.0】6.3 使用延伸群集的最佳做法—我们有软硬件解决方案_IT干货的博客-程序员宝宝_vsan延伸集群

使用 VMware vSAN延伸群集时,请遵守以下建议获得最佳性能。如果延伸群集中的某个站点(容错域)无法访问,仍可在包含另外两个站点的子群集中置备新虚拟机。这些新虚拟机采用隐式强制置备,在分区站点重新加入群集后才会合规。只有三个站点中的两个站点可用时,才会执行该隐式强制置备。此处,站点指的是数据站点或见证主机。 如果整个站点因断电或网络连接丢失而变为脱机状态,请立即重新启动站点,不宜长时间耽搁。请勿逐个重新启动vSAN主机,应在同一时间使所有主机联机,理想情况下时间跨度应在 10 分钟内。...

前端AES加密解密_想念如果有声音___的博客-程序员宝宝_前端aes加密

旨在帮助开发者快速的使用aes方式加密数据,达到安全的目的

Golang Java Python 人工智能 大数据 物联网 WEB 小程序 等学习路径_hehekdj的博客-程序员宝宝

一门永不过时的编程语言——Java 软件开发。免费获取各类语言课程 大数据课程 人工智能课程Java编程语言占比:据官方数据统计,在全球编程语言工程师的数量上,Java编程语言以1000万的程序员数量位居首位。 而且很多软件的开发都离不开Java编程,因此其程序员的数量最多。而在以Java编程为核心的开发领域中,javaEE程序员的需求量10年来一直居于首位!Java工程师就业:1.通过各大招聘网站统计,全国海量公司都在招聘Java开发工程师2.北京Java开发工程师平均薪资,即1678

推荐文章

热门文章

相关标签