窗口截图(二)

截图功能实现(四)自动框选原理 观察其他截图工具比如QQ 当鼠标在某个窗口是会自动把某个窗口高亮显示,这个功能其实还是很有用的它可以加快截图时间,可以更快的完成截图,于是乎我也寻思着如何去实现这个功能,网上翻来翻去好几天都没什么进展,有一天无意间发现一个截图的Demo有这个功能,因此研究了一下,发现其实原理还是挺简单的,兴奋之余也拿出来和大家探讨下。这个功能分为2部分(下面代码是从哪个demo里找的具体谁写的我也不知道,先声明下 阅读详情

窗口截图,可以获取遮挡窗口完整的图像,并保存到bmp文件中去。主要用到的函数中PrintWindow,VC6不支持该函数,请使用VS2008来编译。其它需求如平台要求请参考MSDN文档。

void SaveHwndToBmpFile(HWND hWnd, LPCTSTR lpszPath) 
{
     HDC hDC = ::GetWindowDC(hWnd); 
     ASSERT(hDC); 
     
     HDC hMemDC = ::CreateCompatibleDC(hDC); 
     ASSERT(hMemDC);
     
      RECT rc;
       ::GetWindowRect(hWnd, &rc); 
       
       HBITMAP hBitmap = ::CreateCompatibleBitmap(hDC, rc.right - rc.left, rc.bottom - rc.top);
       ASSERT(hBitmap);
       
       HBITMAP hOldBmp = (HBITMAP)::SelectObject(hMemDC, hBitmap); 
       
       ::PrintWindow(hWnd, hMemDC, 0); 
       
       BITMAP bitmap = {0}; 
       ::GetObject(hBitmap, sizeof(BITMAP), &bitmap); 
       
       BITMAPINFOHEADER bi = {0}; 
       BITMAPFILEHEADER bf = {0}; 
       CONST int nBitCount = 24; 
       bi.biSize = sizeof(BITMAPINFOHEADER); 
       bi.biWidth = bitmap.bmWidth; 
       bi.biHeight = bitmap.bmHeight; 
       bi.biPlanes = 1; 
       bi.biBitCount = nBitCount; 
       bi.biCompression = BI_RGB; 
       DWORD dwSize = ((bitmap.bmWidth * nBitCount + 31) / 32) * 4 * bitmap.bmHeight; 
       
       HANDLE hDib = GlobalAlloc(GHND, dwSize + sizeof(BITMAPINFOHEADER)); 
       LPBITMAPINFOHEADER lpbi = (LPBITMAPINFOHEADER)GlobalLock(hDib); 
       *lpbi = bi; 
       ::GetDIBits(hMemDC, hBitmap, 0, bitmap.bmHeight, (BYTE*)lpbi + sizeof(BITMAPINFOHEADER), (BITMAPINFO*)lpbi, DIB_RGB_COLORS); 
       
       try 
       { 
           CFile file; 
           file.Open(lpszPath, CFile::modeCreate | CFile::modeWrite); 
           bf.bfType = 0x4d42; 
           dwSize += sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER); 
           bf.bfSize = dwSize; 
           bf.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER); 
           file.Write((BYTE*)&bf, sizeof(BITMAPFILEHEADER)); 
           file.Write((BYTE*)lpbi, dwSize); file.Close(); 
        } 
        catch(CFileException* e) 
        { 
            e->ReportError(); 
            e->Delete(); 
        } 
        
        GlobalUnlock(hDib); 
        GlobalFree(hDib); 
        
        ::SelectObject(hMemDC, hOldBmp); 
        ::DeleteObject(hBitmap);	
        ::DeleteObject(hMemDC); 
        ::ReleaseDC(hWnd, hDC); 
} 

// 调用方法 
HWND hWnd = ::FindWindow(NULL, _T("XXX")); 
if(hWnd) 
{
    SaveHwndToBmpFile(hWnd, _T("F://12.bmp")); 
}

 

TwinCAT3 实时核异步通信:基于ADS的C++ Server/Client数据交换实战解析 本文深入解析了在TwinCAT3实时核中,如何利用ADS协议实现C++ Server与Client之间的异步数据交换。文章从核心概念入手,详细阐述了实时核、ADS通信及异步机制,并通过实战步骤指导环境搭建、路由配置、Server端服务创建与Client端请求发起,重点剖析了Req/Ind/Res/Con异步回调模型,旨在帮助开发者构建高效、非阻塞的实时工业控制应用。 阅读详情

相关推荐

AI嵌入式系统测试:从确定性验证到概率性评估的体系构建

软件测试是保障系统质量的关键环节,其核心在于验证功能是否符合预期。传统嵌入式测试聚焦于确定性逻辑,通过代码覆盖、边界值分析等方法确保时序、内存等指标的精确性。随着人工智能技术的普及,深度学习模型以其概率性输出和复杂非线性映射的特性,为嵌入式系统带来了新的能力,也彻底改变了测试的范式。AI模型的‘黑盒’特性使得测试目标从‘绝对正确’转向‘置信度满足’,并催生了准确率、F1分数等新指标。在工程实践中,这种融合要求测试体系必须扩展维度,将数据质量、模型量化损失、资源约束下的精度与性能权衡纳入核心考量。尤其在嵌入式

weixin_26766559的博客 381

C++实现截屏(屏幕快照)功能(一)

/ 每个像素的位数,通常为 1、4、8、16、24 或 32。// 图像的压缩方式,通常为 0(不压缩)或其他压缩方式的标志。// 对图像显示有重要影响的颜色索引数,0 表示所有颜色都重要。// 位图使用的颜色索引数,0 表示使用所有可用颜色索引。// 图像的大小,以字节为单位(可以是0,不常用)// 结构的大小,通常为 40 字节。//目标设备的平面数,通常为1。// 目标设备的平面数,通常为 1。//需要注意的是对于多现实器,是从主显示器左上角为(0,0)延伸的,可以根据具体业务设置。

Magine_Wen的专栏 2299

Latex下使用JabRef添加参考文献

文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结 前言 Latex可以手动添加参考文献,但文献过多时,使用JabRef软件相对方便。 提示:以下是本篇文章正文内容,下面案例可供参考 一、JabRef安装 网址:http://www.jabref.org 打开网址后,点击“Download” 进入如下页面后,选择 portable (便携版,无需安装),下载后是一压缩包,打开即可使用。 二、使用 1.创建库 ...

sz3076799的博客 3466

C++实现窗口截图

本文主要详解C/C++如何在VS环境下,实现对窗口的截图操作

余识- 1万+

基于STM32的宠物智能照护嵌入式系统设计

嵌入式系统是实现物联网终端设备本地化感知、决策与执行的核心技术载体,其关键在于多传感器融合、低功耗执行控制与轻量级云边协同。本文围绕环境监测(温湿度、烟雾、余粮)、机电执行(步进电机食盘、继电器风扇)和可靠通信(MQTT+ESP8266)三大技术主线,深入解析STM32F103在资源约束下的外设调度策略、ADC采样抗干扰设计、DHT11时序精准控制及HX711称重滤波算法等工程实践要点。系统强调本地闭环优先原则,确保离线基础功能可用,同时通过阿里云IoT平台实现远程监控与告警联动,为中小型智能硬件项目提供可

weixin_29155599的博客 292

用Arduino和FS-i6X遥控器,从零开始打造你的第一只仿生扑翼蝴蝶(附完整代码解析)

本文详细介绍了如何利用Arduino和FS-i6X遥控器从零开始制作仿生扑翼蝴蝶,包括硬件准备、电路连接、代码解析和调试技巧。通过完整的代码示例和参数说明,帮助读者快速掌握仿生机器人的制作要点,实现蝴蝶的自然飞行效果。

weixin_28727975的博客 309

vc屏幕截图实现

1.获取保存截图文件的路径,暂时选定为桌面 //把截图的文件保存到桌面 BOOL CaptureLolToDesktop(HWND hWnd) { LPRECT lprc = new RECT; GetWindowRect(hWnd,lprc); DWORD llocaltime = GetTickCount(); char chDesktopPath[MAX_PATH] = {0}; SHGetSpecialFolderPat

xiapang009的专栏 1420

SE (3) -Transformers:三维旋转 - 平移等变注意力网络

E (3) 变换器,这是一种用于三维点云和图的自注意力模块变体,在连续三维旋转平移下具有等变性。注意力机制的计算量会随着点云规模的增大呈二次方增长,因此引入邻域的概念是很有必要的:每个点不再关注所有其他点,而只关注其最近的邻点。注意力机制此前已在图的领域中以内部注意力、自注意力、顶点注意力或图注意力等名称被引入 [17, 31, 32, 12, 26]。等变性意味着当输入数据发生旋转或平移时,模型的输出也会以相应的、可预测的方式进行变换,从而保证模型性能的稳定性和可预测性。

qq_49786473的博客 1479

c# 窗体最小化后截图实现

我们知道,当我们需要对Control进行截图时,我们可以使用Control.DrawToBitmap()进行截图, 那么问题来了,当我们的窗体最小化了,我们还怎么截图呢? 当窗体最小化的时候,我们知道Control的size为(0,0),那么你截图的话也就没有或者一片漆黑,嘿嘿 其实我们可以这么搞来曲线救国,请往下看! 假如我们需要截图 TabControl的图片呢,我们要...

dengxuanxian9113的博客 1769

Valgrind 从入门到精通:内存调试和性能分析

Valgrind 提供了强大的 API,允许开发者编写自定义的检查工具。通过扩展 Valgrind,可以针对特定场景实现更精准的检测。

大模型大数据攻城狮的专栏 1215

⭐️【2024年新版教程】vmware tools安装步骤(Windows、Linux、MacOS版本)

VMware Tools是VMware提供的一套实用工具,它可以增强虚拟机与宿主机之间的交互性能,如改进显示性能、优化鼠标和键盘性能、提供时间同步功能等。无论是在Windows、Linux还是MacOS虚拟机上,安装VMware Tools都可以提高虚拟机的使用体验。以上就是在不同操作系统上安装VMware Tools的步骤,希望对您有所帮助。

Python老吕的博客 6万+

截屏函数

from PIL import ImageGrab import time import tkinter as tk window = tk.Tk() screenWidth = int(window.winfo_screenwidth()) screenHeight = int(window.winfo_screenheight()) def screenshot(): filename = str(time.time()) + “.jpg” ImageGrab.grab((0, 0, screenWid

weixin_43736354的博客 392

Unity 实战项目 ☀️| 只用一个脚本做一个 刮刮乐 案例,一不小心刮出来一个女朋友!【学习娱乐一下】

只用一个脚本做一个刮刮乐,一不小心刮出来一个女朋友!【学习娱乐一下!】

努力前行,总会成为自己心中的那道光 23万+

C#软件开发实例.私人订制自己的屏幕截图工具(二)创建项目、注册热键、显示截图主窗口

C#软件开发实例.私人订制自己的屏幕截图工具(二)创建项目、注册热键、显示截图主窗口 实现热键功能 这里需要使用WindowsAPI 注册热键:RegisterHotKey 该函数定义一个系统范围的热键。函数原型:BOOL RegisterHotKey(HWND hWnd,int id,UINT fsModifiers,UINT vk); 取消热键注册:UnregisterHotKey 该函数释放调用线程先前登记的热键。 获取热键ID:GlobalAddAtom 只适用于桌面应用程序。 向全局原子表添加一个

无知人生,记录点滴 9605

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

slenium 随手记 (二) 窗口截图

#coding: utf-8from selenium import webdrivera=webdriver.Firefox()a.get('http://www.baidu.com')try: a.find_element_by_id('lw').send_keys('aaaa') a.find_element_by_id('su').click()except: #...

weixin_30832351的博客 107

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

C#软件开发实例.私人订制自己的屏幕截图工具(二)创建项目、注册热键、显示截图主窗口...

开发环境 操作系统:Windows Server 2008 R2 集成开发环境(IDE):Microsoft Visual Studio 2010 开发语言:c# 创建项目 文件》新建》项目 .NET Framework可以选择2.0版本,也可以选择4.0版本; 项目类型选择:Windows窗体应用程序 输入项目名称,确定 项目创建成功,如下图: 修改主窗体属性 ...

无知人生,记录点滴 984

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Mac下截图工具

苹果系统自带截图功能 1、截取全屏:快捷键(Shift+Command+3) ▲直接按“Shift+Command+3“快捷键组合,即可截取电脑全屏,图片自动保存在桌面。 2、截图窗口:快捷键(Shift+Command+4,然后按空格键) ▲直接按“Shift+Command+4“快捷键组合,会出现十字架的坐标图标; ▲将此坐标图标移动到需要截取的窗口上,然后按空格键...

angou6476的博客 255

怎样保持下拉菜单截图?如何快速截图截图快捷键

浏览器快捷键截图是我目前发现最方便有限的截图方式。打开浏览器,点击截图下拉菜单,会发现浏览器自带截图快捷键,笔者这边是“Ctrl+Shift+X”。 也就是说,只要按住“Ctrl+Shift+X”,就可以实现任意截图。笔者将浏览器最小化,打开任意软件(此处以PS为例)点击任一下拉菜单,然后按住“Ctrl+Shift+X”,会发现鼠标指针已经变成彩色,就可以截图了。 ...

a754315344的博客 6356

ubuntu20.04 | 常用截图工具 | 如何截图

Flameshot 具有可定制的标注功能,可以在截图中添加文本、箭头、形状和自由绘图。使用 Flameshot,可以快速将截图发布到像Imgur这样的知名图片托管网站。它会生成一个共享链接,方便他人轻松查看您的截图。ubuntu 内置了一个名为GNOME的截图工具,使用 GNOME 截图可以截取整个屏幕、特定窗口或指定区域的截图。对于 ubuntu 系统来说,Flameshot 火焰截图是一款功能强大的截图工具。它将直观的使用体验与复杂的。工具完美结合,以用户友好的界面和强大的编辑选项而闻名。

⁢ 2442

QQ的截图使用

1、正常情况下在弹出菜单时使用QQ截图按钮或Ctrl+Alt+A快捷键,弹出折菜单会缩回去,使得无法截取下拉菜单。6、该QQ截图功能优点在于可以添加文字和图形注释,同时可在任意位置截取,缺点也是不能进行任意形状的截取。2、或直接按Ctrl+Alt+A组合键,会进入屏幕截图状态,在需要的地方按下鼠标左键开始截图。5、可利用弹出的工具按钮添加边框和文字注释等操作,完成后点击“完成”按钮即可完成截图操作。4、在弹出菜单后,松开Shift键,但Ctrl+Alt+A还不能松开。7、截图完成后松开鼠标左键即可。

2201_76058660的博客 749

Linux 截图

方法一:快捷键截图 对整个屏幕截图: PrintScreen 对活动窗口截图: Alt+PrintScreen 对任意矩形截图: Shift+PrintScreen 以上三个快捷键再加上Ctrl,就会默认复制截图到粘贴板 方法二:使用Screenshot 搜索并运行Screenshot

在路上 1073

windows截图功能

windows截图功能 1.截全屏并保存(笔记本)    键盘上敲windows+prt sc sysrq   自动保存在路径下C:\Users\www\Pictures\Screenshots,在本机文件管理的“这台电脑”的“图片”下可以找到“屏幕截图”这一文件夹。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/2019051916104163.JPG?x-...

qq_33011197的博客 762

如何使用qq截图

现在qq截图是大家很普遍用的。其给大家带来很多方便,要知道如何使用qq这个截图功能呢,我们这里就来学习2种qq截图方式。 1 用快捷键方式截图 首先你得打开你的qq程序。按下CTRL+ALT+A后,鼠标就会变成彩色,就可以单击鼠标左键,拉动来进行截图,当选定相应的区域之后,点击鼠标左边,即可把图片保存在临时内存中。 2打开对话框方式截图 有时候使用快捷键并不方便,或者有时候

u013433809的专栏 589

Python实现屏幕截图

好处是 灵活速度快缺点是: 写法繁琐不跨平台import timeimport win32gui, win32ui, win32con, win32api def window_capture(filename): hwnd = 0 # 窗口的编号,0号表示当前活跃窗口 # 根据窗口句柄获取窗口的设备上下文DC(Divice Context) hwndDC = win32...

weixin_30294295的博客 626
上一篇: 窗口截图(可指定HWND窗口句柄)
下一篇: 在编辑框(CEdit)控件上追加内容
Eleven
博客等级 码龄19年 4918粉丝 75原创
评论 13
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值