屏幕抓屏(包括活动窗口,指定区域及全屏等)

根据指定窗口句柄进行截屏 1、获取窗口句柄     见http://blog.youkuaiyun.com/dazhong159/article/details/7903382 2、截屏函数代码(包含截屏类和调用示例)     Screen.h头文件如下: #ifndef __CSCREEN_H__ #define __CSCREEN_H__ #include class CScreen { public: ch 阅读详情
using System;
using System.Runtime.InteropServices;
using System.Drawing;

namespace SystemTools
{
    [StructLayout(LayoutKind.Sequential)]
    
public struct RECT
    
{
        
public int left, top, right, bottom;
    }


    
/// <summary>
    
/// 封装API的类
    
/// </summary>

    public class APIs
    
{
        [DllImport(
"user32.dll")]
        
public static extern bool GetCursorPos(ref Point lpPoint);
        [DllImport(
"user32.dll")]
        
public static extern int WindowFormPoint(Point lpPoint);
        [DllImport(
"user32.dll")]
        
public static extern IntPtr GetDesktopWindow();
        [DllImport(
"user32.dll")]
        
public static extern int GetForegroundWindow();
        [DllImport(
"user32.dll")]
        
public static extern int GetWindowRect(int hwnd, ref RECT rc);
        [DllImport(
"user32.dll")]
        
public static extern int GetWindowDC(int hwnd);
        [DllImport(
"Gdi32.dll")]
        
public static extern bool Bitblt(
            IntPtr hdcDest, 
// 目标设备的句柄
            int nXDest, // 目标对象的左上角的X坐标
            int nYDest, // 目标对象的左上角的X坐标
            int nWidth, // 目标对象的矩形的宽度
            int nHeight, // 目标对象的矩形的长度
            IntPtr hdcSrc, // 源设备的句柄
            int nXSrc, // 源对象的左上角的X坐标
            int nYSrc, // 源对象的左上角的X坐标
            System.Int32 dwRop // 光栅的操作值
            );
        [DllImportAttribute(
"gdi32.dll")]
        
public static extern IntPtr CreateDC(
        
string lpszDriver, // 驱动名称
        string lpszDevice, // 设备名称
        string lpszOutput, // 无用,可以设定位"NULL"
        IntPtr lpInitData // 任意的打印机数据
        );

    }

}

 
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Drawing.Imaging;

namespace SystemTools
{
    
/// <summary>
    
/// 封装各种抓屏操作的类
    
/// </summary>

    public class CatchScreen
    
{
        
/// <summary>
        
/// 获得屏幕指定区域 
        
/// </summary>
        
/// <param name="left"></param>
        
/// <param name="top"></param>
        
/// <param name="width"></param>
        
/// <param name="height"></param>
        
/// <returns></returns>

        public Bitmap getScreen(int left, int top, int width, int height)
        
{
            IntPtr dc1 
= APIs.CreateDC("DISPLAY", null, null, (IntPtr)null);
            Graphics newGraphics 
= Graphics.FromHdc(dc1);
            Bitmap img 
= new Bitmap(width, height, newGraphics);
            Graphics thisGraphics 
= Graphics.FromImage(img);
            IntPtr dc2 
= thisGraphics.GetHdc();
            IntPtr dc3 
= newGraphics.GetHdc();
            APIs.Bitblt(dc2, 
0, 0, width, height, dc3, left, top, 13369376);
            thisGraphics.ReleaseHdc(dc2);
            newGraphics.ReleaseHdc(dc3);
            
return img;
        }


        
/// <summary>
        
/// 获得全屏
        
/// </summary>
        
/// <returns></returns>

        public Bitmap getFullScreen()
        
{
            
return getScreen(0, 0, Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);
        }


        
/// <summary>
        
/// 抓取句柄所指窗口
        
/// </summary>
        
/// <param name="hwnd"></param>
        
/// <returns></returns>

        public Bitmap getScreenFromHandle(int hwnd)
        
{
            RECT rc 
= new RECT();
            APIs.GetWindowRect(hwnd, 
ref rc);
            
return getScreen(rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top);
        }


        
/// <summary>
        
/// 抓取活动窗口
        
/// </summary>
        
/// <returns></returns>

        public Bitmap getScreenFromActiveWindow()
        
{
            
int handle = APIs.GetForegroundWindow();
            
return getScreenFromHandle(handle);
        }


        
//保存成各种格式
        public string savepic(Bitmap bmp)
        
{
            SaveFileDialog saveDialog 
= new SaveFileDialog();
            saveDialog.Filter 
= "位图文件 (*.bmp)|*.bmp|jpg文件 (*.jpg)|*.jpg|gif文件 (*.gif)|*.gif|tiff文件 (*.tiff)|*.tiff|"+
            
"emf文件 (*.emf)|*.emf|图标文件 (*.ico)|*.ico|wmf文件 (*.wmf)|*.wmf|png文件 (*.png)|*.png";
            saveDialog.DefaultExt
="*.bmp";
            
if(saveDialog.ShowDialog() == DialogResult.OK)
            
{
            
string ext = saveDialog.FileName.Substring(saveDialog.FileName.Length-4,4);
            
switch( ext)
            
{ 
            
case ".bmp":
            bmp.Save(saveDialog.FileName,ImageFormat.Bmp);
            
break; 
            
case ".gif": 
            bmp.Save(saveDialog.FileName,ImageFormat.Gif);
            
break;
            
case ".jpg": 
            bmp.Save(saveDialog.FileName,ImageFormat.Jpeg);
            
break;
            
case ".emf":
            bmp.Save(saveDialog.FileName,ImageFormat.Emf);
            
break; 
            
case ".ico": 
            bmp.Save(saveDialog.FileName,ImageFormat.Icon);
            
break;
            
case ".wmf": 
            bmp.Save(saveDialog.FileName,ImageFormat.Wmf);
            
break;
            
case ".png": 
            bmp.Save(saveDialog.FileName,ImageFormat.Png);
            
break;
            
case ".tiff": 
            bmp.Save(saveDialog.FileName,ImageFormat.Tiff);
            
break;
            
default :
            
return "";
            }
 
            
return saveDialog.FileName;
            }

            
return "";
        }

    }

}

VB编程实现全屏与窗口自定义截图功能 本文还有配套的精品资源,点击获取 简介:在Visual Basic编程中,通过GDI+库操作Bitmap、Graphics对象及Windows API函数,开发者可以轻松实现全屏、活动窗口和用户自定义区域的屏幕截图功能。教程将提供这些功能的详细实现步骤,包括创建绘图对象、捕获屏幕内容并保存为图像文件。此外,还推荐开发者通过添加用户界面和快捷键支持来提高软件的实用性和用户体验... 阅读详情

相关推荐

FSCapture全功能屏幕截图与录屏工具

FSCapture是一款专业的屏幕捕捉软件,它提供了丰富的截图功能,从简单的快速截图到复杂的滚动长截图,再到视频录制,几乎可以满足所有用户的需求。对于IT专业人士来说,FSCapture不仅仅是一个工具,更是一个强大的辅助设备,帮助他们提高工作效率,解决日常工作中遇到的难题。FSCapture的自定义脚本和宏功能是提升工作效率的强大工具。用户可以通过编写脚本批量执行一系列截图和图像处理任务,或者创建宏来自动化重复性的操作流程。

weixin_34779181的博客 1212

C#编程,获取指定窗口的截图

本章介绍如何通过句柄,截取指定窗口内容,以及截取失败的场景

君一席 4640

用纯C#实现截取屏幕指定区域

以前在别的地方见过一个通过调用系统API实现屏幕截图的例子,从内心来说我不太喜欢在C#代码中出现这种情况,现在什么都讲“和谐”,我觉得这种做法就是破坏了我们的“和谐”代码,呵呵,开玩笑,有的时候,不通过系统API确实难以做到的。

Magpie窗口区域精准放大实用指南:告别全屏拉伸的高效方案

当你在网课中想放大老师的板书却不想让聊天区也跟着变大?或者在复古游戏中只想聚焦角色对话而忽略周围界面?Magpie窗口区域放大功能正是解决这些痛点的利器。这款Windows平台的窗口增强工具通过灵活的区域自定义功能,让你精准控制放大范围,既保留原始界面布局,又能突出重点内容。本文将带你解锁这项实用技能,让屏幕空间利用率提升300%! ## 三步实现窗口区域精准放大 ### 第一步:打开区域设置

gitblog_01187的博客 566

c# 截取指定窗口图 根据指定坐标

USB硬件模拟键鼠,使用系统自带键鼠驱动 【工具说明】 c#.net 3.5 版本 需要Win7 系统或者 XP安装 .net 3.5 简易取图工具,用于获取游戏窗体某个位置某个大小的图片,根据指定坐标截取,方便脚本图片对比使用。 因为位置和大小都一样,执行效率高。 文本框输入游戏窗口包含的字符串,下面设置好参数。点击截取按钮后,激活游戏窗口使位置为最前。即可成功截取。

屏幕截图(GDI+技术)

双缓冲截取屏幕 保存类型自己定义(任意格式或大小)

Lightscreen截图全模式详解:全屏、区域、活动窗口、指定窗口4种玩法一次讲清

**Lightscreen** 是一款轻量、跨平台的开源截图工具,内置**全屏截图、区域截图、活动窗口截图、指定窗口截图**4种捕获模式,配合全局快捷键、延时截图、预览编辑和云端上传,让每一次截屏都快如闪电。本文带你一次讲清这 4 种模式的触发方式与适用场景。 ## 认识 Lightscreen 截图主窗口 Lightscreen 的主窗口非常小巧,只有三块大按钮区域:全屏、区域、拾取窗口,下

gitblog_00002的博客 376

OPENCV实现屏幕抓取 并压制成AVI格式的视频

利用GDI抓取桌面图像 然后利用opencv实现 压缩成小视屏

用Python进行屏幕截图,只用两行代码搞定

一、计算机中如何进行屏幕截图呢? 1、全屏截图 按下键盘中的‘PRTSC’或者‘Print Screen’键,即可实现全屏截图(不同键盘位置和名称可能不同)。此时,并不能看到效果,只是将截图保存在粘贴板中,我们打开Word或者其它windows自带的画图板工具(以画图板工具为例)。我们打开画图板直接按下‘Ctrl’+ 'V'粘贴即可。然后你可以对该图片执行其它操作了。 2、截取当前活动窗口 ...

采菊东篱下,Python满乾坤! 1万+

vc GDI+实现屏幕截图,图片裁剪,

VC2015实现简单的整个屏幕截图保存为jpg, 然后再该图片上根据需要裁剪特定大小的图片在另存jpg, 以及其他范例。

2024年最全scrapy+scrapyd+gerapy 爬虫调度框架,字节跳动面试时间

scrapyd是一个用于部署和运行scrapy爬虫的程序,它允许你通过JSON API来部署爬虫项目和控制爬虫运行,scrapyd是一个守护进程,监听爬虫的运行和请求,然后启动进程来执行它们方便地控制爬虫运行直观地查看爬虫状态实时地查看爬取结果简单地实现项目部署统一地实现主机管理轻松地编写爬虫代码。

2401_84140653的博客 1200

一款抓屏工具FSCapture 注册码 序列号 SERIAL

一款抓屏工具FSCapture 注册码 序列号 SERIAL

qq_43741193的博客 4545

MTK pwm beeper配置记录

如果正常,系统启动后会在/dev/input下生成 一个event节点,使用方法参考标准linux使用。dts相关修改如下,全都在里面,注意一下位置。对应的配置文件中增加如下定义。

hclydao的专栏 727

C# 两种方法截取活动窗口屏幕,实现窗体截图

方法1,截屏内容仅包括活动窗口界面,而方法2是从屏幕范围取图,截屏内容会包括屏幕上所有内容。例如有一些程序在桌面顶层显示半透明的悬浮窗,用方法2截屏就会包括这些内容,并不是单纯的活动窗口内容。方法1,对一些有渐变效果的边框,截图会包括边框范围。方法2则可以把截屏范围限制在程序窗口,截屏效果更好。win32 api调用网上都有,这里就不再重复了。

Good Good Work, Day Day Up. 4119

Zabbix-01简单导入MIB文件并测试

这里写自定义目录标题安装 MIB文件启用MIB文件测试MIB文件 MIB文件 MIB代表管理信息库。 MIB文件允许您使用OID(对象标识符)的文本表示。 ##例如: ifHCOutOctets 是OID【1.3.6.1.2.1.31.1.1.1.10】的文本表示 安装 MIB文件 在基于Debian的系统上: # apt install snmp-mibs-downloader # download-mibs 在基于RedHat的系统上: # yum install net-snmp-libs 启用M

lokibaba的博客 9178

制造业私有化LLM部署实战:从RAG到智能体,构建企业专属知识大脑

大型语言模型(LLM)作为人工智能的核心技术,通过在海量文本数据上进行预训练,具备了强大的语言理解和生成能力。其原理在于基于Transformer架构,通过自注意力机制捕捉长距离语义依赖。这一技术价值在于能将非结构化信息转化为可计算、可推理的知识,从而赋能企业实现知识的高效管理与应用。在制造业等强数据安全与知识密集型领域,私有化部署的LLM结合检索增强生成(RAG)和智能体(Agent)技术,能够深入业务流程,构建安全、专属的智能知识中枢。本文聚焦于如何利用Qwen、LangChain、向量数据库等技术栈,

weixin_42523711的博客 246

绿色抓屏截屏工具:FastStoneCapture

FastStoneCapture下载 软件是绿色版本,下载后直接打开即可   链接:绿色抓屏截屏工具FastStoneCapture下载地址   提取码:ebxy FastStoneCapture安装 下载后解压,双击直接打开 FastStoneCapture使用 截屏方式 “捕获活动窗口” 红框中的是快捷活动窗口截图功能,一点击就会将目前活动的窗口进行截屏,不需要选择。 “捕获窗口/对象” ...

别念科技吴良秋博客 1153

【STM32开源实战】基于STM32的智能输液监控系统设计与实现

本文详细介绍了基于STM32F103C8T6主控芯片的智能输液监控系统设计与实现。该系统通过光学液位传感器、温度传感器和红外滴速检测模块实时监测输液状态,利用步进电机自动调节滴速,并通过蓝牙实现数据远程传输,为医院提供了一套低成本、高可靠性的智能输液解决方案。

h6i7j8的博客 761

delphi抓全屏图,游戏窗口,游戏Client窗口

以下的抓图,来源于网上。 function dlGetDesktopRect(nLeft,nTop,nWidth,nHeight:integer;pixel:TPixelFormat):TBitmap;var   dcDesk:hdc;   bmp:TBitmap;begin  bmp:=TBitmap.Create;  bmp.PixelFormat := pixel;  bmp.Width:...

weixin_34195364的博客 147

Android 集成Chrome 浏览器内核 Crosswalk

Crosswalk 内核的兴起与消亡 Android 4.4 版本之前,使用的是基于 androidWebKit 的 WebView 但实际上,由于 Android 的碎片化问题(大量存在不同的 Android 系统版本,并且各个厂商对内置应用进行定制化,有可能用的不是最新的浏览器内核)。这就导致 WebView 在真实环境中对 API 的支持根本无迹可寻,越发混乱。 随着混合开发的兴起,前端对 ...

司马懿的西山居 2万+

肖特基二极管选型参数,结构原理,工艺与注意问题总结

肖特基二极管(Schottky Diode)是一种特殊的二极管,也被称为肖特基势垒二极管。它是利用金属与半导体接触形成的金属-半导体结原理制成的。与传统的PN结二极管相比,肖特基二极管具有更低的正向压降、更高的开关速度、更高的反向恢复时间以及更好的温度稳定性等特点。本文对肖特基二极管的工作原理,结构特点,工艺流程,选型参数及设计注意事项进行总结。

fydar的博客 812
上一篇: c#开机自动启动程序实现代码
下一篇: ASP.NET的实时天气及24小时天气预报(C#)
Alexantao
博客等级 码龄19年 86粉丝 185原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值