惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V2EX - 技术
V2EX - 技术
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Latest news
Latest news
T
The Exploit Database - CXSecurity.com
博客园 - 三生石上(FineUI控件)
WordPress大学
WordPress大学
L
Lohrmann on Cybersecurity
aimingoo的专栏
aimingoo的专栏
B
Blog
T
Threat Research - Cisco Blogs
罗磊的独立博客
Application and Cybersecurity Blog
Application and Cybersecurity Blog
P
Proofpoint News Feed
P
Palo Alto Networks Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
宝玉的分享
宝玉的分享
博客园 - 司徒正美
Google DeepMind News
Google DeepMind News
Blog — PlanetScale
Blog — PlanetScale
T
Tor Project blog
阮一峰的网络日志
阮一峰的网络日志
Last Week in AI
Last Week in AI
Martin Fowler
Martin Fowler
酷 壳 – CoolShell
酷 壳 – CoolShell
Recorded Future
Recorded Future
D
DataBreaches.Net
Y
Y Combinator Blog
大猫的无限游戏
大猫的无限游戏
IT之家
IT之家
B
Blog RSS Feed
Scott Helme
Scott Helme
P
Proofpoint News Feed
V
Vulnerabilities – Threatpost
A
Arctic Wolf
Help Net Security
Help Net Security
L
LINUX DO - 最新话题
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Vercel News
Vercel News
AWS News Blog
AWS News Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
S
Schneier on Security
Hacker News: Ask HN
Hacker News: Ask HN
N
Netflix TechBlog - Medium
L
LangChain Blog
博客园 - 叶小钗
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
M
MIT News - Artificial intelligence
N
News and Events Feed by Topic
Webroot Blog
Webroot Blog
W
WeLiveSecurity

博客园 - zoop89850

maven 打包 时出现非法字符: /65279错误 JAVA学习笔记 第一篇 开发环境 传输文件过程中遇到异常被中断 项目所需的应用程序未安装,确保已安装项目类型(.csproj)的应用程序的解决办法[转] 窗体的置顶显示 WPF Image控件中的ImageSource与Bitmap的互相转换 WPF加载相对路径的图片的解决方法 2011/08/27 刷机器,遭遇白苹果,不可连接ipod服务器 的解决 C# 获取屏幕的大小 C# WinForm急速系列 – DataGridView 附Word文档 转载:MicrosoftHelp文件夹中后缀名为.hxw .hxm之类的文件是MSDN帮助文档的索引,不要轻易删除 利用case或者decode实现自定义顺序排序 【摘】枚举类型 一种简单的根据备份文件 恢复数据库的方法 计算sql语句的执行时间 Java,JavaScript,JScript 区别 HTML代码简单教程 文件夹无法打开怎么办? - zoop89850 - 博客园 sqlserver提示“在流水模式下,事务无法启动”的解决办法
将截图图片放入内存(剪贴板)中
zoop89850 · 2011-08-25 · via 博客园 - zoop89850

 今天做一截图工具,发现能截图,但是点击Ctrl+V复制出来的根本不是图像,

查看代码,发现根本没有 将图片放入剪贴板,以便使用Ctrl+V复制的功能

搜了下,发现很简单,就一句话: Clipboard.SetImage(bmp);

Clipboard类的其他功能如下,能实现带格式文本复制或者单纯文本复制,

还能实现快捷键重置功能

using System;

using System.Collections.Specialized;

using System.Drawing;

using System.IO;

namespace System.Windows.Forms

{

    // 摘要:

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

    public sealed class Clipboard

    {

        // 摘要:

        //     从剪贴板中移除所有数据。

        //

        // 异常:

        //   System.Runtime.InteropServices.ExternalException:

        //     未能清空剪贴板。这种情况通常发生在剪贴板正在被其他进程使用的时候。

        //

        //   System.Threading.ThreadStateException:

        //     当前线程未处于单线程单元 (STA) 模式下。请将 System.STAThreadAttribute 添加到应用程序的 Main 方法中。

        public static void Clear();

        //

        // 摘要:

        //     指示在剪贴板中是否存在 System.Windows.Forms.DataFormats.WaveAudio 格式的数据。

        //

        // 返回结果:

        //     如果剪贴板中有音频数据,则为 true;否则为,false。

        //

        // 异常:

        //   System.Runtime.InteropServices.ExternalException:

        //     未能清空剪贴板。这种情况通常发生在剪贴板正在被其他进程使用的时候。

        //

        //   System.Threading.ThreadStateException:

        //     当前线程未处于单线程单元 (STA) 模式下。请将 System.STAThreadAttribute 添加到应用程序的 Main 方法中。

        public static bool ContainsAudio();

        //

        // 摘要:

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

        //

        // 参数:

        //   format:

        //     要查找的数据格式。请参见 System.Windows.Forms.DataFormats 以获取预定义的格式。

        //

        // 返回结果:

        //     如果在剪贴板中存在指定 format 或可以转换成该格式的数据,则为 true;否则为 false。

        //

        // 异常:

        //   System.Runtime.InteropServices.ExternalException:

        //     未能清空剪贴板。这种情况通常发生在剪贴板正在被其他进程使用的时候。

        //

        //   System.Threading.ThreadStateException:

        //     当前线程未处于单线程单元 (STA) 模式下。请将 System.STAThreadAttribute 添加到应用程序的 Main 方法中。

        public static bool ContainsData(string format);

        //

        // 摘要:

        //     指示剪贴板中是否存在 System.Windows.Forms.DataFormats.FileDrop 格式或可转换成此格式的数据。

        //

        // 返回结果:

        //     如果剪贴板中有文件放置列表,则为 true;否则为,false。

        //

        // 异常:

        //   System.Runtime.InteropServices.ExternalException:

        //     未能清空剪贴板。这种情况通常发生在剪贴板正在被其他进程使用的时候。

        //

        //   System.Threading.ThreadStateException:

        //     当前线程未处于单线程单元 (STA) 模式下。请将 System.STAThreadAttribute 添加到应用程序的 Main 方法中。

        public static bool ContainsFileDropList();

        //

        // 摘要:

        //     指示剪贴板中是否存在 System.Windows.Forms.DataFormats.Bitmap 格式或可转换成此格式的数据。

        //

        // 返回结果:

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

        //

        // 异常:

        //   System.Runtime.InteropServices.ExternalException:

        //     未能清空剪贴板。这种情况通常发生在剪贴板正在被其他进程使用的时候。

        //

        //   System.Threading.ThreadStateException:

        //     当前线程未处于单线程单元 (STA) 模式下。请将 System.STAThreadAttribute 添加到应用程序的 Main 方法中。

        public static bool ContainsImage();

        //

        // 摘要:

        //     指示剪贴板中是否存在 System.Windows.Forms.TextDataFormat.Text System.Windows.Forms.TextDataFormat.UnicodeText

        //     格式的数据(取决于操作系统)。

        //

        // 返回结果:

        //     如果剪贴板中存在文本数据,则为 true;否则为,false。

        //

        // 异常:

        //   System.Runtime.InteropServices.ExternalException:

        //     未能清空剪贴板。这种情况通常发生在剪贴板正在被其他进程使用的时候。

        //

        //   System.Threading.ThreadStateException:

        //     当前线程未处于单线程单元 (STA) 模式下。请将 System.STAThreadAttribute 添加到应用程序的 Main 方法中。

        public static bool ContainsText();

        //

        // 摘要:

        //     指示剪贴板中是否存在具有指定的 System.Windows.Forms.TextDataFormat 值所指示的格式的文本数据。

        //

        // 参数:

        //   format:

        //     System.Windows.Forms.TextDataFormat 值之一。

        //

        // 返回结果:

        //     如果剪贴板中存在格式值为指定 format 的文本数据,则为 true;否则为 false。

        //

        // 异常:

        //   System.Runtime.InteropServices.ExternalException:

        //     未能清空剪贴板。这种情况通常发生在剪贴板正在被其他进程使用的时候。

        //

        //   System.Threading.ThreadStateException:

        //     当前线程未处于单线程单元 (STA) 模式下。请将 System.STAThreadAttribute 添加到应用程序的 Main 方法中。

        //

        //   System.ComponentModel.InvalidEnumArgumentException:

        //     format 不是有效的 System.Windows.Forms.TextDataFormat 值。

        public static bool ContainsText(TextDataFormat format);

        //

        // 摘要:

        //     检索剪贴板上的音频流。

        //

        // 返回结果:

        //     包含音频数据的 System.IO.Stream;如果剪贴板不包含任何 System.Windows.Forms.DataFormats.WaveAudio

        //     格式的数据,则为 null。

        //

        // 异常:

        //   System.Runtime.InteropServices.ExternalException:

        //     未能清空剪贴板。这种情况通常发生在剪贴板正在被其他进程使用的时候。

        //

        //   System.Threading.ThreadStateException:

        //     当前线程未处于单线程单元 (STA) 模式下。请将 System.STAThreadAttribute 添加到应用程序的 Main 方法中。

        public static Stream GetAudioStream();

        //

        // 摘要:

        //     从剪贴板中检索指定格式的数据。

        //

        // 参数:

        //   format:

        //     要检索的数据的格式。请参见 System.Windows.Forms.DataFormats 以获取预定义的格式。

        //

        // 返回结果:

        //     表示剪贴板数据的 System.Object;如果剪贴板中包含的数据都不是指定 format,也无法转换为该格式,则为 null。

        //

        // 异常:

        //   System.Runtime.InteropServices.ExternalException:

        //     未能清空剪贴板。这种情况通常发生在剪贴板正在被其他进程使用的时候。

        //

        //   System.Threading.ThreadStateException:

        //     当前线程未处于单线程单元 (STA) 模式下。请将 System.STAThreadAttribute 添加到应用程序的 Main 方法中。

        public static object GetData(string format);

        //

        // 摘要:

        //     检索当前位于系统剪贴板中的数据。

        //

        // 返回结果:

        //     System.Windows.Forms.IDataObject,表示系统剪贴板中当前的数据;如果剪贴板中没有数据,则为 null。

        //

        // 异常:

        //   System.Runtime.InteropServices.ExternalException:

        //     从剪贴板中检索不到数据。这种情况通常发生在剪贴板正在被其他进程使用的时候。

        //

        //   System.Threading.ThreadStateException:

        //     当前线程未处于单线程单元 (STA) 模式下,且 System.Windows.Forms.Application.MessageLoop 属性值为

        //     true。请将 System.STAThreadAttribute 添加到应用程序的 Main 方法中。

        public static IDataObject GetDataObject();

        //

        // 摘要:

        //     从剪贴板中检索文件名的集合。

        //

        // 返回结果:

        //     包含文件名的 System.Collections.Specialized.StringCollection;如果剪贴板中不包含任何格式为 System.Windows.Forms.DataFormats.FileDrop

        //     或可转换为该格式的数据,则为 null。

        //

        // 异常:

        //   System.Runtime.InteropServices.ExternalException:

        //     未能清空剪贴板。这种情况通常发生在剪贴板正在被其他进程使用的时候。

        //

        //   System.Threading.ThreadStateException:

        //     当前线程未处于单线程单元 (STA) 模式下。请将 System.STAThreadAttribute 添加到应用程序的 Main 方法中。

        public static StringCollection GetFileDropList();

        //

        // 摘要:

        //     检索剪贴板上的图像。

        //

        // 返回结果:

        //     表示剪贴板图像数据的 System.Drawing.Image;如果剪贴板中不包含任何 System.Windows.Forms.DataFormats.Bitmap

        //     格式或可转换成该格式的数据,则为 null。

        //

        // 异常:

        //   System.Runtime.InteropServices.ExternalException:

        //     未能清空剪贴板。这种情况通常发生在剪贴板正在被其他进程使用的时候。

        //

        //   System.Threading.ThreadStateException:

        //     当前线程未处于单线程单元 (STA) 模式下。请将 System.STAThreadAttribute 添加到应用程序的 Main 方法中。

        public static Image GetImage();

        //

        // 摘要:

        //     从剪贴板中检索 System.Windows.Forms.TextDataFormat.Text System.Windows.Forms.TextDataFormat.UnicodeText

        //     格式的文本数据(取决于操作系统)。

        //

        // 返回结果:

        //     剪贴板文本数据;如果剪贴板中不包含 System.Windows.Forms.TextDataFormat.Text System.Windows.Forms.TextDataFormat.UnicodeText

        //     格式的数据(取决于操作系统),则为 System.String.Empty。

        //

        // 异常:

        //   System.Runtime.InteropServices.ExternalException:

        //     未能清空剪贴板。这种情况通常发生在剪贴板正在被其他进程使用的时候。

        //

        //   System.Threading.ThreadStateException:

        //     当前线程未处于单线程单元 (STA) 模式下。请将 System.STAThreadAttribute 添加到应用程序的 Main 方法中。

        public static string GetText();

        //

        // 摘要:

        //     从剪贴板中检索由指定的 System.Windows.Forms.TextDataFormat 值表示的格式的文本数据。

        //

        // 参数:

        //   format:

        //     System.Windows.Forms.TextDataFormat 值之一。

        //

        // 返回结果:

        //     剪贴板文本数据;如果剪贴板中不包含指定格式的数据,则为 System.String.Empty

        //

        // 异常:

        //   System.Runtime.InteropServices.ExternalException:

        //     未能清空剪贴板。这种情况通常发生在剪贴板正在被其他进程使用的时候。

        //

        //   System.Threading.ThreadStateException:

        //     当前线程未处于单线程单元 (STA) 模式下。请将 System.STAThreadAttribute 添加到应用程序的 Main 方法中。

        //

        //   System.ComponentModel.InvalidEnumArgumentException:

        //     format 不是有效的 System.Windows.Forms.TextDataFormat 值。

        public static string GetText(TextDataFormat format);

        //

        // 摘要:

        //     将 System.Byte 数组转换成 System.IO.Stream 之后,将该数组添加到格式为 System.Windows.Forms.DataFormats.WaveAudio

        //     的剪贴板中。

        //

        // 参数:

        //   audioBytes:

        //     包含音频数据的 System.Byte 数组。

        //

        // 异常:

        //   System.Runtime.InteropServices.ExternalException:

        //     未能清空剪贴板。这种情况通常发生在剪贴板正在被其他进程使用的时候。

        //

        //   System.Threading.ThreadStateException:

        //     当前线程未处于单线程单元 (STA) 模式下。请将 System.STAThreadAttribute 添加到应用程序的 Main 方法中。

        //

        //   System.ArgumentNullException:

        //     audioBytes 为 null。

        public static void SetAudio(byte[] audioBytes);

        //

        // 摘要:

        //     System.Windows.Forms.DataFormats.WaveAudio 格式的 System.IO.Stream 添加到剪贴板中。

        //

        // 参数:

        //   audioStream:

        //     包含音频数据的 System.IO.Stream。

        //

        // 异常:

        //   System.Runtime.InteropServices.ExternalException:

        //     未能清空剪贴板。这种情况通常发生在剪贴板正在被其他进程使用的时候。

        //

        //   System.Threading.ThreadStateException:

        //     当前线程未处于单线程单元 (STA) 模式下。请将 System.STAThreadAttribute 添加到应用程序的 Main 方法中。

        //

        //   System.ArgumentNullException:

        //     audioStream 为 null。

        public static void SetAudio(Stream audioStream);

        //

        // 摘要:

        //     将指定格式的数据添加到剪贴板中。

        //

        // 参数:

        //   format:

        //     要设置的数据格式。请参见 System.Windows.Forms.DataFormats 以获取预定义的格式。

        //

        //   data:

        //     表示要添加的数据的 System.Object。

        //

        // 异常:

        //   System.Runtime.InteropServices.ExternalException:

        //     未能清空剪贴板。这种情况通常发生在剪贴板正在被其他进程使用的时候。

        //

        //   System.Threading.ThreadStateException:

        //     当前线程未处于单线程单元 (STA) 模式下。请将 System.STAThreadAttribute 添加到应用程序的 Main 方法中。

        //

        //   System.ArgumentNullException:

        //     data 为 null。

        public static void SetData(string format, object data);

        //

        // 摘要:

        //     将非持久性数据置于系统剪贴板中。

        //

        // 参数:

        //   data:

        //     要置于剪贴板中的数据。

        //

        // 异常:

        //   System.Runtime.InteropServices.ExternalException:

        //     未能将数据置于剪贴板中。这种情况通常发生在剪贴板正在被其他进程使用的时候。

        //

        //   System.Threading.ThreadStateException:

        //     当前线程未处于单线程单元 (STA) 模式下。请将 System.STAThreadAttribute 添加到应用程序的 Main 方法中。

        //

        //   System.ArgumentNullException:

        //     data 的值为 null。

        public static void SetDataObject(object data);

        //

        // 摘要:

        //     将数据置于系统剪贴板中,并指定在退出应用程序后是否将数据保留在剪贴板中。

        //

        // 参数:

        //   data:

        //     要置于剪贴板中的数据。

        //

        //   copy:

        //     如果想在退出应用程序后将数据保留在剪贴板中,则为 true;否则为 false。

        //

        // 异常:

        //   System.Runtime.InteropServices.ExternalException:

        //     未能将数据置于剪贴板中。这种情况通常发生在剪贴板正在被其他进程使用的时候。

        //

        //   System.Threading.ThreadStateException:

        //     当前线程未处于单线程单元 (STA) 模式下。请将 System.STAThreadAttribute 添加到应用程序的 Main 方法中。

        //

        //   System.ArgumentNullException:

        //     data 的值为 null。

        public static void SetDataObject(object data, bool copy);

        //

        // 摘要:

        //     尝试指定的次数,以将数据置于系统剪贴板中,且两次尝试之间具有指定的延迟,可以选择在退出应用程序后将数据保留在剪贴板中。

        //

        // 参数:

        //   data:

        //     要置于剪贴板中的数据。

        //

        //   copy:

        //     如果想在退出应用程序后将数据保留在剪贴板中,则为 true;否则为 false。

        //

        //   retryTimes:

        //     尝试将数据置于剪贴板中的次数。

        //

        //   retryDelay:

        //     两次尝试之间暂停的毫秒数。

        //

        // 异常:

        //   System.Threading.ThreadStateException:

        //     当前线程未处于单线程单元 (STA) 模式下。请将 System.STAThreadAttribute 添加到应用程序的 Main 方法中。

        //

        //   System.ArgumentNullException:

        //     data 为 null。

        //

        //   System.ArgumentOutOfRangeException:

        //     retryTimes 小于零。- 或 -retryDelay 小于零。

        //

        //   System.Runtime.InteropServices.ExternalException:

        //     未能将数据置于剪贴板中。这种情况通常发生在剪贴板正在被其他进程使用的时候。

        public static void SetDataObject(object data, bool copy, int retryTimes, int retryDelay);

        //

        // 摘要:

        //     System.Windows.Forms.DataFormats.FileDrop 格式的文件名集合添加到剪贴板中。

        //

        // 参数:

        //   filePaths:

        //     包含这些文件名的 System.Collections.Specialized.StringCollection

        //

        // 异常:

        //   System.Runtime.InteropServices.ExternalException:

        //     未能清空剪贴板。这种情况通常发生在剪贴板正在被其他进程使用的时候。

        //

        //   System.Threading.ThreadStateException:

        //     当前线程未处于单线程单元 (STA) 模式下。请将 System.STAThreadAttribute 添加到应用程序的 Main 方法中。

        //

        //   System.ArgumentNullException:

        //     filePaths 为 null。

        //

        //   System.ArgumentException:

        //     filePaths 中不包含任何字符串。- 或 -在 filePaths 中至少有一个字符串为以下情况之一:为 System.String.Empty、仅包含空白、包含一个或多个

        //     System.IO.Path.InvalidPathChars 定义的无效字符、值为 null、包含冒号 (:)、或超出系统定义的最大长度。有关更多信息,请参见

        //     System.ArgumentException System.Exception.InnerException 属性。

        public static void SetFileDropList(StringCollection filePaths);

        //

        // 摘要:

        //     System.Windows.Forms.DataFormats.Bitmap 格式的 System.Drawing.Image 添加到剪贴板中。

        //

        // 参数:

        //   image:

        //     要添加到剪贴板中的 System.Drawing.Image。

        //

        // 异常:

        //   System.Runtime.InteropServices.ExternalException:

        //     未能清空剪贴板。这种情况通常发生在剪贴板正在被其他进程使用的时候。

        //

        //   System.Threading.ThreadStateException:

        //     当前线程未处于单线程单元 (STA) 模式下。请将 System.STAThreadAttribute 添加到应用程序的 Main 方法中。

        //

        //   System.ArgumentNullException:

        //     image 为 null。

        public static void SetImage(Image image);

        //

        // 摘要:

        //     System.Windows.Forms.TextDataFormat.Text 或 System.Windows.Forms.TextDataFormat.UnicodeText

        //     格式的文本数据添加到剪贴板中(取决于操作系统)。

        //

        // 参数:

        //   text:

        //     要添加到剪贴板中的文本。

        //

        // 异常:

        //   System.Runtime.InteropServices.ExternalException:

        //     未能清空剪贴板。这种情况通常发生在剪贴板正在被其他进程使用的时候。

        //

        //   System.Threading.ThreadStateException:

        //     当前线程未处于单线程单元 (STA) 模式下。请将 System.STAThreadAttribute 添加到应用程序的 Main 方法中。

        //

        //   System.ArgumentNullException:

        //     text 为 null 或 System.String.Empty。

        public static void SetText(string text);

        //

        // 摘要:

        //     将文本数据添加到剪贴板中,该数据的格式由指定的 System.Windows.Forms.TextDataFormat 值指示。

        //

        // 参数:

        //   text:

        //     要添加到剪贴板中的文本。

        //

        //   format:

        //     System.Windows.Forms.TextDataFormat 值之一。

        //

        // 异常:

        //   System.Runtime.InteropServices.ExternalException:

        //     未能清空剪贴板。这种情况通常发生在剪贴板正在被其他进程使用的时候。

        //

        //   System.Threading.ThreadStateException:

        //     当前线程未处于单线程单元 (STA) 模式下。请将 System.STAThreadAttribute 添加到应用程序的 Main 方法中。

        //

        //   System.ArgumentNullException:

        //     text 为 null 或 System.String.Empty。

        //

        //   System.ComponentModel.InvalidEnumArgumentException:

        //     format 不是有效的 System.Windows.Forms.TextDataFormat 值。

        public static void SetText(string text, TextDataFormat format);

    }

}