窗口最小化的后台截图,如何编程序实现dfa最小化

真正能实现后台运行的按键精灵代码支持最小化和切换窗口_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
享专业文档下载特权
&赠共享文档下载特权
&10W篇文档免费专享
&每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
真正能实现后台运行的按键精灵代码支持最小化和切换窗口
&&真正能实现后台运行的按键精灵代码支持最小化和切换窗口
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩6页未读,
定制HR最喜欢的简历
你可能喜欢解决C# 截取当前程序窗口指定位置截图的实现方法
转载 &更新时间:日 11:07:16 & 作者:
本篇文章是对C#中截取当前程序窗口指定位置截图的实现方法进行了详细的分析介绍,需要的朋友参考下
要想完成这个功用,首先要了解一下在C#中如何调用API(利用程序交口)函数。固然在.Net框架中已经降求了很多类库,400电话,这些类库的功效也非常强盛,但关于一些Windows顶层编程来道,仍是要通过调用这些API函数才可以实现。一切API皆在"Kernel"、"User "和"GDI"三个库中得以运转:其中"Kernel",他的库名为 "KERNEL32.DLL", 他重要用于发生取操做体系之间的联系关系,譬如:程序加载,上下文挑选,文件输进输出,内存治理等等。"User "这个类库在Win32中名鸣 "USER32.DLL"。 它容许治理全体的用户交心。譬如:窗心 、菜双 、对话框 、图本等等。"GDI"(图象装备交口),它正在Win32中的库实为:"GDI32.dll",它是图形输出库。使用GDI Windows"绘"出窗心、菜双以及对话框等;它能创修图形输出;它也能保存图形文件。因为原文所触及到是图象答题,一切调用的类库是"GDI32.dll"。在原文程序中人们使用的API函数是"BitBlt",这个函数关于宽大程序员来道,必定没有感觉到生疏,由于在图象处置方面他的用处是绝对狭的,在用其他程序言语编程中,经常也要和他挨接讲。在.Net FrameWork SDK中有一个实字空间"System.Runtime.InteropServices",此名字空间降求了一系列的类来拜访COM对象,和调用外地的API函数。下面是正在C#中声亮此函数: 代码如下:[ System.Runtime.InteropServices.DllImportAttribute ( "gdi32.dll" ) ]private static extern bool BitBlt (&&& IntPtr hdcDest , // 目的 DC的句柄&&& int nXDest ,&&& int nYDest ,&&& int nWidth ,&&& int nHeight ,&&& IntPtr hdcSrc , // 流DC的句柄&&& int nXSrc ,&&& int nYSrc ,&&& System.Int32 dwRop // 光栅的处置数值) ;通过上面这个声亮,就可以正在下里的代码中使用此函数了。下里是用C#做屏幕捕捉程序的详细真隐步骤:(1).首先要取得当前屏幕的graphic对象,通过以下代码可以真隐:Graphics g1 = this.CreateGraphics ( ) ;(2).创修一个Bitmap对象,十月妈咪,并且那个Bitmap对象的大小是当前屏幕:首先要获得当前屏幕的大小,通过实字空间"System.Windows.Forms"中的"Screen"类的GetWorkingArea()方式,可以实现。下面是得到当前屏幕的长(Height)和阔(Width):Rectangle rect = new Rectangle ( ) ;rect = Screen.GetWorkingArea ( this ) ;"屏幕阔"= rect.W"屏幕长"= rect.H至彼便能够失掉人们念要的Bitmap了,通功下列语句可以完成:Image MyImage = new Bitmap ( rect.Width , rect.Height , g1 ) ;//创修以屏幕大小为尺度的位图(3).取得当前屏幕和此Bitmap对于象的DC,那可以通功下列语句真隐://失掉屏幕的DCIntPtr dc1 = g1.GetHdc ( ) ;//失掉Bitmap的DCIntPtr dc2 = g2.GetHdc ( ) ;(4).调用API函数,把以后屏幕拷贝到创立的Bitmap中:BitBlt ( dc2 , 0 , 0 , rect.Width , rect.Height , dc1 , 0 , 0 ,
) ;(5).开释该前屏幕和彼Bitmap对于象的DC,通功下里代码能够完成://开释掉屏幕的DCg1.ReleaseHdc ( dc1 ) ;//开释掉Bitmap的DCg2.ReleaseHdc ( dc2 ) ;(6).保管Bitmap对于象,构成jpg图片:MyImage.Save ( @"c:\Capture.jpg" , ImageFormat.Jpeg );该然你也可以依据本人的须要,把屏幕以其他图片的格局来保管,假如您念把图片保存为位图文件,可以把"ImageFormat.Jpeg"更换成"ImageFormat.Bmp";念把图片保管为Gif白件,便把"ImageFormat.Jpeg"更换成"ImageFormat.Gif"。您能够保存的文件类型大约有十少类,那里便没有逐个引见了,当然您也要相当转变保留文件的后缀。用C#来捕捉屏幕的流程序代码(Capture.cs):了解上面的这些步骤的实现方式,就可以得到用C#捕捉屏幕的流程序,如下: 代码如下:using Susing System.Dusing System.Cusing System.ComponentMusing System.Windows.Fusing System.Dusing System.Drawing.Ipublic class Form1 : Form{&&& private Button button1 ;&&& private System.ComponentModel.Container components =public Form1 ( ){&&& //始初化窗体中的各个组件&&& InitializeComponent ( ) ;}// 肃清程序中使用过的资源protected override void Dispose ( bool disposing ){&&& if ( disposing )&&& {&&&&&&& if ( components != null )&&&&&&& {&&&&&&&&&&& components.Dispose ( ) ;&&&&&&& }&&& }&&& base.Dispose ( disposing ) ;}private void InitializeComponent ( ){&&& button1 = new Button ( );&&& SuspendLayout ( ) ;&&& button1.Location = new System.Drawing.Point ( 64 , 40 ) ;&&& button1.Name = "button1" ;&&& button1.Size = new System.Drawing.Size ( 80 , 32 ) ;&&& button1.TabIndex = 0 ;&&& button1.Text = "捕捉" ;&&& button1.Click += new System.EventHandler ( button1_Click ) ;&&& AutoScaleBaseSize = new System.Drawing.Size ( 6 , 14 ) ;&&& ClientSize = new System.Drawing.Size ( 216 , 125 ) ;&&& Controls.Add ( button1 ) ;&&& MaximizeBox =&&& MinimizeBox =&&& Name = "Form1" ;&&& Text = "C#捕捉以后屏幕!" ;&&& ResumeLayout ( false ) ;}//声亮一个API函数&&& [ System.Runtime.InteropServices.DllImportAttribute ( "gdi32.dll" ) ]&&& private static extern bool BitBlt (&&&&&&& IntPtr hdcDest , // 目的 DC的句柄&&&&&&& int nXDest ,&&&&&&& int nYDest ,&&&&&&& int nWidth ,&&&&&&& int nHeight ,&&&&&&& IntPtr hdcSrc , // 源DC的句柄&&&&&&& int nXSrc ,&&&&&&& int nYSrc ,&&&&&&& System.Int32 dwRop // 光栅的处置数值&&& ) ;static void Main ( ){&&& Application.Run ( new Form1 ( ) ) ;}private void button1_Click ( object sender , System.EventArgs e ){&&& //取得当前屏幕的大小&&& Rectangle rect = new Rectangle ( ) ;&&& rect = Screen.GetWorkingArea ( this ) ;&&& //创立一个以以后屏幕为模板的图象&&& Graphics g1 = this.CreateGraphics ( ) ;&&& //创立以屏幕大小为尺度的位图&&& Image MyImage = new Bitmap ( rect.Width , rect.Height , g1 ) ;&&& Graphics g2 = Graphics.FromImage ( MyImage ) ;&&& //得到屏幕的DC&&& IntPtr dc1 = g1.GetHdc ( ) ;&&& //得到Bitmap的DC&&& IntPtr dc2 = g2.GetHdc ( ) ;&&& //调用彼API函数,完成屏幕捕捉&&& BitBlt ( dc2 , 0 , 0 , rect.Width , rect.Height , dc1 , 0 , 0 ,
) ;&&& //开释掉屏幕的DC&&& g1.ReleaseHdc ( dc1 ) ;&&& //开释掉Bitmap的DC&&& g2.ReleaseHdc ( dc2 ) ;&&& //以JPG白件格局来保留&&& MyImage.Save ( @"c:\Capture.jpg" , ImageFormat.Jpeg );&&& MessageBox.Show ( "该前屏幕已经保留为C盘的capture.jpg白件!" ) ;}}
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具BitBlt如何获取最小化后的窗口截图
[问题点数:20分]
本版专家分:0
结帖率 66.67%
CSDN今日推荐
本版专家分:18111
本版专家分:0
结帖率 66.67%
本版专家分:8885
2017年4月 .NET技术大版内专家分月排行榜第二
本版专家分:0
结帖率 66.67%
本版专家分:3396
匿名用户不能发表回复!|
CSDN今日推荐一个简单的API实现后台截图,游戏脚本编写必备功能!|脚本|计算器|句柄_新浪网
一个简单的API实现后台截图,游戏脚本编写必备功能!
一个简单的API实现后台截图,游戏脚本编写必备功能!
今天教大家实现后台截图(后台的定义是:游戏最小化或被遮挡也可以截到图片),当然这种方法不能通杀所有游戏,仅适用于部分游戏。我们需要用到PrintWindow这个API。我们先看下API定义:Private Declare Function PrintWindow Lib "user32" (ByVal hwnd As Long, ByVal HDC As Long, ByVal nFlags As Long) As Long我们可以看到共需要传递4个参数。hwnd:需要截取的窗口句柄HDC:截图后的图片显示在哪个容器中nFlags:标识符,通常为0我们就以系统自带的计算器为例,截取计算器的画面。1.首先我们先获取计算器的窗口句柄,我们可以利用FindWindow这个API来获取句柄。计算器标题名我们可以看到计算器的标题名为:计算器利用FindWindow获取计算器窗口句柄代码如下:HwndVal = FindWindow(vbNullString, "计算器")2.在VB6.0中,建立picture1和command1。获取窗口句柄后,利用PrintWindow获取计算器窗口画面,保存在picture1控件中。代码如下:PrintWindow HwndVal, Picture1.HDC, 0VB6.0完整代码如下:Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPrivate Declare Function PrintWindow Lib "user32" (ByVal hwnd As Long, ByVal HDC As Long, ByVal nFlags As Long) As LongDim HwndVal&Private Sub Command1_Click()HwndVal = FindWindow(vbNullString, "计算器") '使用FindWindow这个API 并以窗口名获取这个窗口的句柄 赋值给变量 HwndValPrintWindow HwndVal, Picture1.HDC, 0 '调用PrintWindow这个API 复制对象的图像到Picture1图片框End Sub3.运行程序,效果如下:效果图是不是很简单呢?大家学会了吗?有喜欢游戏和编程的可以点击我的头条主页,加群!
特别声明:以上文章内容仅代表作者本人观点,不代表新浪看点观点或立场。如有关于作品内容、版权或其它问题请于作品发表后的30日内与新浪看点联系。如何实现最小化窗口的截图_百度知道
如何实现最小化窗口的截图
我有更好的答案
没听懂你的意思!
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 js实现当前页面最小化 的文章

 

随机推荐