zoukankan
html css js c++ java
屏幕捕获程序
using
System;
using
System.Drawing;
using
System.Collections;
using
System.ComponentModel;
using
System.Windows.Forms;
using
System.Data;
using
System.Drawing.Imaging;
namespace
屏幕捕获程序
{
/**/
///
<summary>
///
Form1 的摘要说明。
///
</summary>
public
class
Form1 : System.Windows.Forms.Form
{
private
System.Windows.Forms.Button button1;
/**/
///
<summary>
///
必需的设计器变量。
///
</summary>
private
System.ComponentModel.Container components
=
null
;
public
Form1()
{
//
//
Windows 窗体设计器支持所必需的
//
InitializeComponent();
//
//
TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
}
/**/
///
<summary>
///
清理所有正在使用的资源。
///
</summary>
protected
override
void
Dispose(
bool
disposing )
{
if
( disposing )
{
if
(components
!=
null
)
{
components.Dispose();
}
}
base
.Dispose( disposing );
}
Windows Form Designer generated code
#region
Windows Form Designer generated code
/**/
///
<summary>
///
设计器支持所需的方法 - 不要使用代码编辑器修改
///
此方法的内容。
///
</summary>
private
void
InitializeComponent()
{
this
.button1
=
new
System.Windows.Forms.Button();
this
.SuspendLayout();
//
//
button1
//
this
.button1.Location
=
new
System.Drawing.Point(
48
,
48
);
this
.button1.Name
=
"
button1
"
;
this
.button1.Size
=
new
System.Drawing.Size(
112
,
40
);
this
.button1.TabIndex
=
0
;
this
.button1.Text
=
"
开始
"
;
this
.button1.Click
+=
new
System.EventHandler(
this
.button1_Click);
//
//
Form1
//
this
.AutoScaleBaseSize
=
new
System.Drawing.Size(
6
,
14
);
this
.ClientSize
=
new
System.Drawing.Size(
232
,
149
);
this
.Controls.AddRange(
new
System.Windows.Forms.Control[]
{
this
.button1}
);
this
.Name
=
"
Form1
"
;
this
.Text
=
"
Form1
"
;
this
.ResumeLayout(
false
);
}
#endregion
/**/
///
<summary>
///
应用程序的主入口点。
///
</summary>
[STAThread]
static
void
Main()
{
Application.Run(
new
Form1());
}
[ System.Runtime.InteropServices.DllImportAttribute (
"
gdi32.dll
"
) ]
private
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
//
光栅的操作值
) ;
[ System.Runtime.InteropServices.DllImportAttribute (
"
gdi32.dll
"
) ]
private
static
extern
IntPtr CreateDC (
string
lpszDriver ,
//
驱动名称
string
lpszDevice ,
//
设备名称
string
lpszOutput ,
//
无用,可以设定位"NULL"
IntPtr lpInitData
//
任意的打印机数据
) ;
private
void
button1_Click(
object
sender, System.EventArgs e)
{
this
.Hide();
IntPtr dc1
=
CreateDC (
"
DISPLAY
"
,
null
,
null
, ( IntPtr )
null
) ;
//
创建显示器的DC
Graphics g1
=
Graphics.FromHdc ( dc1 ) ;
//
由一个指定设备的句柄创建一个新的Graphics对象
Bitmap MyImage
=
new
Bitmap ( Screen.PrimaryScreen.Bounds.Width , Screen.PrimaryScreen.Bounds.Height , g1 ) ;
//
根据屏幕大小创建一个与之相同大小的Bitmap对象
Graphics g2
=
Graphics.FromImage ( MyImage ) ;
//
获得屏幕的句柄
IntPtr dc3
=
g1.GetHdc ( ) ;
//
获得位图的句柄
IntPtr dc2
=
g2.GetHdc ( ) ;
//
把当前屏幕捕获到位图对象中
BitBlt ( dc2 ,
0
,
0
, Screen.PrimaryScreen.Bounds.Width , Screen.PrimaryScreen.Bounds.Height , dc3 ,
0
,
0
,
13369376
) ;
//
把当前屏幕拷贝到位图中
g1.ReleaseHdc ( dc3 ) ;
//
释放屏幕句柄
g2.ReleaseHdc ( dc2 ) ;
//
释放位图句柄
MyImage.Save (
"
c:\\MyJpeg.jpg
"
, ImageFormat.Jpeg ) ;
MessageBox.Show (
"
已经把当前屏幕保存到C:\\MyJpeg.jpg文件中!
"
) ;
this
.Show();
}
}
}
查看全文
相关阅读:
小程序排错(redis导致)
linux系统删除-开头文件或目录
nginx 反向代理
memcache
一次故障过程
json.Decoder vs json.Unmarshal
ssl中间证书
作业10:String类
Angular6如何引入jQuery-knob
OpenJdk源码下载
原文地址:https://www.cnblogs.com/myx/p/83479.html
最新文章
HDFS源码分析:NameNode相关的数据结构
关于使用struts2时子窗体页面跳转后在父窗体打开的问题以及Session过期后的页面跳转问题
Hadoop版本变迁
YARN :Architecture
MapReduce基础知识
NameNode & DataNode
配置服务器有错/usr/libexec/gconf-sanity-check-2的退出状态为256
直播这么火,你知道怎么测试直播软件吗?
app测试与web测试的区别
测试用例设计的原则
热门文章
测试用例设计
测试进度需要考虑的问题
从十大经典故事中学管理
查看Oracle当前连接数
常用SQL命令
接口测试该怎么做
自动化测试基础知识
nginx sever_name正则
redis主从和主从切换
redis实践一些要注意的事项
Copyright © 2011-2022 走看看