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();
}
}
}
查看全文
相关阅读:
安装gmsll
常用LInux命令和操作
yum 一键安装 jdk
Linux目录详解,软件应该安装到哪个目录
安装npm
linux安装mysql (rpm + yum)
springboot 打包jar 运行找资源文件
rpm包安装java jar开机自启
centos7设置服务开机自启
linux(centos7) nginx 配置
原文地址:https://www.cnblogs.com/myx/p/83479.html
最新文章
CentOS6.10_防火墙开放端口
RobotFramework 自动化框架环境搭建及使用
本地启动 NameServer 和 Broker | 读 RocketMQ 源码前的准备工作
RocketMQ 死信队列 | 消费者出现异常如何处理?
RocketMQ 重复消费问题 | 订单系统核心流程引入幂等性机制
一文读懂 Java 序列化与反序列化
一文读懂 Java 异常体系
图解 synchronized 的锁升级机制
IDEA 通过Run DashBoard管理你的微服务
IDEA 设置热部署 Devtools
热门文章
线程池的5种状态
面试官对于消息队列的连环炮
流媒体服务器、海康威视 大华摄像头实现视频监控、直播解决方案
Redis 安装总结记录 附送redis-desktop-manager工具
PostgreSql 使用dblink跨库
psql 关于主键自增的问题
Redis 主从复制原理及雪崩 穿透问题
.net core下Redis帮助类
Linux下利用crontab定时kill进程
postgresql 添加uuid扩展
Copyright © 2011-2022 走看看