PrintWindow截取隐藏窗口
PrintWindow的好处就在这,只要想截的窗口不是最小化,无论在屏幕外还是只显示一半还是被覆盖,都可以成功截取我们想要的部分。
C#代码如下:(网上代码有些缺陷,略做修改)
public static Bitmap GetWindow(IntPtr hWnd) //hWnd可以是窗口、控件等的handle,因此这种方法截我们想要的部分非常好用。
{
IntPtr hscrdc = GetWindowDC(hWnd);
Control control = Control.FromHandle(hWnd);
IntPtr hbitmap = CreateCompatibleBitmap(hscrdc, control.Width, control.Height);
IntPtr hmemdc = CreateCompatibleDC(hscrdc);
SelectObject(hmemdc, hbitmap);
bool re= PrintWindow(hWnd, hmemdc, 0);
Bitmap bmp = null;
if(re)
{
bmp = Bitmap.FromHbitmap(hbitmap);
}
DeleteObject(hbitmap);
DeleteDC(hmemdc);//删除用过的对象
ReleaseDC(hWnd, hscrdc);
return bmp;
}
调用非托管函数如下:
[DllImport("gdi32.dll")]
public static extern IntPtr CreateDC(
string lpszDriver, // driver name驱动名
string lpszDevice, // device name设备名
string lpszOutput, // not used; should be NULL
IntPtr lpInitData // optional printer data
);
[DllImport("gdi32.dll")]
public static extern IntPtr CreateCompatibleDC(IntPtr hdc); // handle to DC
[DllImport("gdi32.dll")]
public static extern IntPtr CreateCompatibleBitmap(
IntPtr hdc, // handle to DC
int nWidth, // width of bitmap, in pixels
int nHeight // height of bitmap, in pixels
);
[DllImport("gdi32.dll")]
public static extern IntPtr SelectObject(
IntPtr hdc, // handle to DC
IntPtr hgdiobj // handle to object
);
[DllImport("gdi32.dll")]
public static extern int DeleteDC( IntPtr hdc ); // handle to DC
[DllImport("gdi32.dll")]
public static extern IntPtr DeleteObject(IntPtr hObject);
[DllImport("user32.dll")]
public static extern bool PrintWindow(
IntPtr hwnd, // Window to copy,Handle to the window that will be copied.
IntPtr hdcBlt, // HDC to print into,Handle to the device context.
UInt32 nFlags // Optional flags,Specifies the drawing options. It can be one of the following values.
);
[DllImport("user32.dll")]
public static extern IntPtr GetWindowDC( IntPtr hwnd );
[DllImport("user32.dll")]
public static extern IntPtr ReleaseDC(IntPtr hWnd, IntPtr hDC);
附:有些平台的截图是全黑的,开启视频加速可能会导致这样的问题,关闭就能正常截图了。
PrintWindow截取隐藏窗口相关推荐
- WGCLOUD在windows部署运行怎么实现隐藏窗口
1.将WGCLOUD的server端注册为windows系统服务,就可以实现隐藏窗口和开机启动 使用NSSM将server注册为windows系统服务说明 - WGCLOUDhttps://www.w ...
- picpick截图工具截取滚动窗口只滚动一次就结束了解决办法
描述:picpick截图工具截取滚动窗口只滚动一次就结束了解决办法 步骤: 这是窗口尺寸造成的,将窗口进行缩小即可
- 隐藏窗口和任务栏图标的实现
网上也有这类小程序,用过2个都觉得不够方便,所以就想着自己来实现一个. 功能:响应快捷键或者按钮隐藏(显示)包含关键字的窗口和任务栏图标,可设定隐藏关键字.设定快捷键.程序最小化到托盘. 主要包含以下 ...
- 在任务栏上显示/隐藏窗口
在任务栏上显示/隐藏窗口 WS_EX_APPWINDOW Forces a top-level window onto the taskbar when the window is visible. ...
- C# 实现窗口程序winform像QQ一样靠近桌面边缘自动隐藏窗口
实现原理: 实现这个功能的原理步骤如下: 1.判断窗体程序是否靠近桌面边缘: 2.获取桌面屏幕大小与窗体程序大小: 3.把窗体程序显示在桌面以外隐藏起来,预留部分窗体方便用户拉出程序: 4.判断鼠标是 ...
- python 隐藏进程_python在windows下创建隐藏窗口子进程的方法
python在windows下创建隐藏窗口子进程的方法 发布于 2015-11-08 20:56:53 | 213 次阅读 | 评论: 0 | 来源: 网友投递 Python编程语言Python 是一 ...
- C++ 实现隐藏窗口和任务栏图标,再也不用担心玩游戏被发现了
# 前言 大家在日常生活中经常会遇到玩游戏被发现的情况,在我们使用电脑的时候,即使将窗口最小化,任务栏上仍然会留下图标,非常容易被发现. 为了解决这个问题,我使用 C++ 编写了一个可以一键隐藏窗口的 ...
- [VC/MFC]一条语句实现程序运行时隐藏窗口
因为受到经济危机的影响,我在 bokee.com 的博客可能随时出现无法访问的情况:因此将2005年到2006年间在 bokee.com 撰写的博客文章全部迁移到 csdn 博客中来,本文正是其中一篇 ...
- WinForm隐藏窗口控制最大化最小化按钮
设置对窗口大小不能调整 找到[FormBorderStyle]选项,在选项列表中选择[FixedDialog],这样就可以固定窗口大小,禁止对窗口的自由调整了. 隐藏窗口的最大化和最小化按钮: 在选项 ...
- 5e怎么绑定一键跳投_想上班摸鱼?分享一款超好用软件,一键隐藏窗口,摸鱼一时爽,一直摸鱼一直爽!...
点击蓝字即可快速关注我,分享好软件~ 平时小林君分享的一般都是非常实用或者比较增加工作效率的软件,今天就不一样了,今天教大家怎么上班摸鱼(误),隐藏电脑窗口,设置一个老板键 今天要介绍的这款软件名叫H ...
最新文章
- 在论坛中出现的各种疑难问题:性能优化
- MVC的增删改和Razor
- 混沌图像---三翅鹰
- .NET(C#)有哪些主流的ORM框架,FreeSql,SqlSugar,Dapper,EF还是...
- Thundernet
- LeetCode 17. Letter Combinations of a Phone Number
- selenium-webdriver(python) (十六) --unittest 框架
- 传入json对象_【Python基础】可迭代对象amp;迭代器对象及其实现
- LintCode 125. 背包问题 II(DP)
- 基于WDF的PCI/PCIe接口卡Windows驱动程序(3)- 驱动程序代码(头文件)
- Struts2之自定义转换器
- spring配置c3p0连接池
- java中面向对象的例子_java面向对象九个经典例子程序
- mysql 64 免安装_MYSQL 免安装版(windows 7/64)
- Html漂亮的table样式模板
- Linux命令—— expect: command not found
- 机器学习实战ch03
- oracle批量替换保留字,Oracle中的关键字保留字
- DiI(细胞膜红色荧光探针)被广泛应用于神经等细胞或组织的示踪剂或长期示踪剂
- 把项目从meeclipces转移到idead中遇见的问题
热门文章
- SPSS学习(四)单样本t检验
- 【全志T113-S3_100ask】9-音频输入与输出(amixer、aplay、arecord)
- aplay,arec,amix使用
- spring aop 切面执行顺序和常见问题
- 如何用python编写财务记账软件_python实现日常记账本小程序
- 单片机很简单?我们来聊聊如何进阶
- 神器-数学公式识别工具-mathpix
- 拟人拟物法求解不等圆Packing问题
- 核方法也称为核技巧(Kernel method)
- ipa在线安装搭建_免电脑 iOS 12 一键越狱+手机端直接自动安装插件教程