python电脑截图,通过printwindow获取屏幕截图如果笔记本电脑屏幕

如果有一个简单明了的方法来做你想做的事情,那就太好了,但是不幸的是,如果没有一些复杂的低级工作,这是不可能的。在

在底层WinAPI中,本机windows只有在收到WM_PAINT消息时才会重新绘制自己,并且只有在WM_PAINT消息可见时才会接收到WM_PAINT消息。如果它们在另一个窗口后面,或者被拖离屏幕,或者最小化,或者它们的可见性设置为False,它们不会收到消息。当屏幕关闭时,它们也不可见。因为它们是看不见的,所以它们永远不会被要求重新绘制它们自己。这就是为什么屏幕关闭后屏幕捕获图像不会改变。在

您不能发出任何命令来覆盖它,它是作为窗口范式的一个基本部分来实现的。在

一种解决方案是让应用程序在非窗口(例如,对话框)中绘制自己,并捕捉它而不是捕捉屏幕。您还可以通过重写OnPaint并使用计时器使OnPaint函数失效并定期调用OnPaint函数来修改应用程序(因为不会收到WM_PAINT消息)。在

如果是我,我会覆盖OnPaint,让我的应用程序将自己绘制到一个背景上下文位图,而不是普通窗口,然后使用计时器定期失效和重画,只要我想捕捉输出,就取背景上下文的位图。在

如果您不拥有正在运行的应用程序的代码,那么您仍然可以通过在虚拟机中运行所有程序来重新绘制应用程序。我以前在无头计算方面做得很成功,但以前是很多操作系统版本,现在情况可能不同了,所以YMMV。。。在

关于VMWare下手动截图的信息是here。在

有关Hyper-V下的编程屏幕截图的信息是here。在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值