C#模拟PrtScn实现截屏预备知识--剪贴板操作

剪贴板是Windows操作系统中最常用的功能之一,它用来从一个应用程序向另一个应用程序传递数据,可以是文本,图象,甚至是程序对象。不过剪贴板也有限制,它在某个特定的时间只能指向一块内容,每一个随后复制的内容都会取代先前的内容。为了在C#中操作剪贴板(包括内容的读取和写入)需要使用到System.Windows.Forms.Clipboard类.

Clipboard类:

提供将数据置于系统剪贴板中以及从中检索数据的方法,此类不能被继承。

命名空间: System.Windows.Forms

程序集: System.Windows.Forms(在 System.Windows.Forms.dll 中)

语法: public sealed class Clipboard

Clipboard::GetDataObject方法:

语法:

public:
static IDataObject GetDataObject()

返回值

类型:System.Windows.Forms::IDataObject

IDataObject ,表示系统剪贴板中当前的数据;如果剪贴板中没有数据,则为 null 引用(在 Visual Basic 中为 Nothing)。

因为从剪贴板返回的对象的数据类型可以不同,所以此方法返回 IDataObject 中的数据。 然后,可以使用 IDataObject 接口的方法以正确的数据类型提取数据。

Clipboard::ContainsImage方法:

指示剪贴板中是否存在 Bitmap 格式或可转换成此格式的数据

在使用 GetImage 方法检索图像数据之前,使用此方法确定剪贴板中是否包含图像数据。

语法:

public:
static bool ContainsImage()

返回值

类型:System::Boolean

如果剪贴板中存在图像数据,则为 true;否则为,false。

Clipboard::GetImage方法:

指示剪贴板中是否存在

在使用此方法检索图像数据之前,使用 ContainsImage 方法确定剪贴板中是否包含图像数据。

语法:

public:
static Image GetImage()

返回值

类型:System.Drawing::Image

表示剪贴板图像数据的Image;如果剪贴板中不包含任何Bitmap格式或可转换成该格式的数据,则为null引用。

public System.Drawing.Image SwapClipboardImage(
    System.Drawing.Image replacementImage)
{
    System.Drawing.Image returnImage = null;
    if (Clipboard.ContainsImage())
    {
        returnImage = Clipboard.GetImage();
        Clipboard.SetImage(replacementImage);
    }
    return returnImage;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-28 05:58:23

C#模拟PrtScn实现截屏预备知识--剪贴板操作的相关文章

C#模拟PrtScn实现截屏预备知识--keybd_event使用方法

Windows提供了一个模拟键盘API函数Keybd_event(),使用该函数可以相应的屏蔽键盘的动作.Keybd_event()函数能触发一个按键事件,也就是说会产生一个WM_KEYDOWN或WM_KEYUP消息.但是已经被SendInput取代. 语法: VOID keybd_event(BYTE bVk,BYTE bScan,DWORD dwFlags,Ptr dwExtralnfo): 参数: bVk:定义一个虚拟键码.键码值必须在1-254之间. bScan: 定义该键的硬件扫描码.

C#模拟PrtScn实现截屏

有了之前的基础知识了解,如今開始实现PrtScn和Alt+PrtScn. 首先新建一个WPF应用程序,命名为PrintscreenAndAltPrintScreen 导入keybd_event方法: 须要为DllImport加入using System.Runtime.InteropServices; [DllImport("user32.dll")] static extern void keybd_event ( byte bVk,// 虚拟键值 byte bScan,// 硬件扫

分享一种全新的截屏方法

一种全新的截屏方法 在任何时候点击手机上的浮动小球(红色圈内)就能完成整个屏幕信息的截取功能,而且最终保存的图像还不会包含该小球,这就是本文将要介绍的方法.手机整体屏幕获取项目下载链接:http://files.cnblogs.com/files/tgyf/CaptureScreen.rar. 以全新的视角实现手机屏幕的截取(快照)功能,文章可能比较长,感兴趣的朋友一定得看完,会有收获的哦!若发现有哪些地方存在问题或某些功能有更好的实现方式,欢迎指点,先谢过(我可以尽快改正或完善,以免继续误导别

cocos2dx 3.2 Touch Listen和menu回调实现截屏

在Cocos2d-X 3.x里面,已经集成了截屏功能,单独放在utils命名空间里,实现在base/ccUtils.h文件里面.看下函数申明 /** Capture the entire screen * To ensure the snapshot is applied after everything is updated and rendered in the current frame, * we need to wrap the operation with a custom comm

android源码解析(二十六)-->截屏事件流程

今天这篇文章我们主要讲一下Android系统中的截屏事件处理流程.用过android系统手机的同学应该都知道,一般的android手机按下音量减少键和电源按键就会触发截屏事件(国内定制机做个修改的这里就不做考虑了).那么这里的截屏事件是如何触发的呢?触发之后android系统是如何实现截屏操作的呢?带着这两个问题,开始我们的源码阅读流程. 我们知道这里的截屏事件是通过我们的按键操作触发的,所以这里就需要我们从android系统的按键触发模块开始看起,由于我们在不同的App页面,操作音量减少键和电

VB用API模拟截屏键PrintScreen

很多人用 SendKeys "{PRTSC}" 模拟截屏键 PrintScreen 的时候提示<错误:'70' 拒绝的权限>,于是经常遇到人问...干脆写下来 '声明 Private Declare Sub keybd_event Lib "user32" Alias "keybd_event" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal

【iOS开发-82】四个案例认识Quartz2D:模拟UIImageView、圆形头像切割、打水印、截屏

(1)效果 (2)源代码下载(素材自己替换) http://download.csdn.net/detail/wsb200514/8183437 (3)总结 --所有这些都可以通过封装,基于UIImage开发自己的category. --图形上下文,有开启UIGraphicsBeginImageContextWithOptions,获取UIGraphicsGetCurrentContext和关闭UIGraphicsEndPDFContext等主要操作,有开启就要由关闭. --其他图片和文字,是直

Java邮件发送与屏幕截屏

前几天七夕情人节孤独寂寞的程序猿闲来没事,花了一两个小时写了个小Demo主要实现Java的Mail发送功能和桌面截屏功能. 首先让我们先看看Java sendMail邮件发送和桌面屏幕截屏功能是怎么实现的基础知识. 一.Java  SendMail邮件发送 首先让我们来看看邮件发送的原理图: JavaMail 是一套sun 提供开发邮件收发程序API,JavaMail编写程序就是邮件客户端程序(和outlook.foxmail功能类似) * JavaMail开发需要类库 javamail API

[转] - 使用Qt作窗口截屏(含源码)

截屏(screenshot),就是将屏幕上的东西拷贝下来存成图片文件.介绍的好像有点多余:(,那我们就直接切入正题. QPixmap提供了两个函数grabWidget和grabWindow可以将屏幕上的窗体存成一个QPixmap格式的图片,很容易再将QPixmap存成文件.函数使用很简单,两行代码就可以.QPixmap pixmap = QPixmap::grabWidget(this);//this是调用该函数的QWidget *指针pixmap.save(“widget.png”,”png”