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();
}
}
}
查看全文
相关阅读:
如何使用log4net记录日志
js鼠标左右键,键盘值
MagicAjax的内部原理初探(一)
关于VS2005内置web服务器和IIS的区别问题(讨论,收集)
在Linux中使用C#
方便你的测试(TestDriven.NET)
转载:数据库sharding(scale up to scale out)
单元测试--爱你不容易
你期待已久的ASP.NET Atlas(一)[翻]
Ajax底层代码简析(可直接用的框架)
原文地址:https://www.cnblogs.com/myx/p/83479.html
最新文章
图像处理和计算机视觉中的经典论文(转)
Asp.net中防止用户多次登录的方法(转)
脏字过滤算法
MySQLDriverCS 不支持问题解决 Uint 4.0 .net 2.0
mysql的联合查询
基类和子类
编写程序在字符串ABCDEF中匹配字符串CDE,并给出时间复杂度
传值,传地址和传引用
构造器 和析构器 完全困了
我们来造一辆车
热门文章
链表的创建, 出现问题
冒泡排序
dns
winform datetimepicker显示空白及失效问题
可输入的下拉列表
键盘KeyCode值列表(转)
left outer join,inner join,right outer join的区别
30个提高Web程序执行效率的好经验(转)[留着自用]
CSS优先级问题(转)
js日期
Copyright © 2011-2022 走看看