C# 操作剪贴板



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

Clipboard.SetDataObject("这条信息置于剪切板中,相当于Ctrl+C");

//获取剪切板中文本格式的内容,相当于Ctrl+V(不过如果剪切板中的内容不是文本格式就返回空字符串)

string message = Convert.ToString(Clipboard.GetDataObject().GetData(DataFormats.Text));

System.Windows.Forms 命名空间

Clipboard 类

Clipboard 成员

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

方法
   名称                  说明
   Clear                 从剪贴板中移除所有数据。
   ContainsAudio         指示在剪贴板中是否存在 WaveAudio 格式的数据。
   ContainsData          指示剪贴板中是否存在指定格式的数据,或可转换成此格式的数据。
   ContainsFileDropList 指示剪贴板中是否存在 FileDrop 格式或可转换成此格式的数据。
   ContainsImage         指示剪贴板中是否存在 Bitmap 格式或可转换成此格式的数据。
   ContainsText          已重载。 指示剪贴板中是否存在文本数据。
   Equals                确定指定的 Object 是否等于当前的 Object。 (继承自 Object。)
   Finalize              允许 Object 在“垃圾回收”回收 Object 之前尝试释放资源并执行其他清理操作。 (继承自 Object。)
   GetAudioStream        检索剪贴板上的音频流。
   GetData               从剪贴板中检索指定格式的数据。
   GetDataObject         检索当前位于系统剪贴板中的数据。
   GetFileDropList       从剪贴板中检索文件名的集合。
   GetHashCode           用作特定类型的哈希函数。 (继承自 Object。)
   GetImage              检索剪贴板上的图像。
   GetText               已重载。 从剪贴板中检索文本数据。
   GetType               获取当前实例的 Type。 (继承自 Object。)
   MemberwiseClone       创建当前 Object 的浅表副本。 (继承自 Object。)
   SetAudio              已重载。 将 WaveAudio 格式的数据添加到剪贴板中。
   SetData               将指定格式的数据添加到剪贴板中。
   SetDataObject         已重载。 将数据置于系统剪贴板中。
   SetFileDropList       将 FileDrop 格式的文件名集合添加到剪贴板中。
   SetImage              将 Bitmap 格式的 Image 添加到剪贴板中。
   SetText               已重载。 将文本数据添加到剪贴板中。
   ToString              返回表示当前 Object 的 String。 (继承自 Object。)

  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C#中,可以使用Windows API来监听剪贴板的消息,以便获取Excel剪贴板复制的消息。具体步骤如下: 1. 声明Windows API函数: ```csharp [DllImport("user32.dll", SetLastError = true)] public static extern IntPtr SetClipboardViewer(IntPtr hWndNewViewer); [DllImport("user32.dll", SetLastError = true)] public static extern bool ChangeClipboardChain(IntPtr hWndRemove, IntPtr hWndNewNext); [DllImport("user32.dll", SetLastError = true)] public static extern int SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam); ``` 2. 创建一个窗口用于接收Windows消息: ```csharp public partial class Form1 : Form { private const int WM_DRAWCLIPBOARD = 0x308; private const int WM_CHANGECBCHAIN = 0x30D; private IntPtr _nextClipboardViewer; protected override void WndProc(ref Message m) { switch (m.Msg) { case WM_DRAWCLIPBOARD: // 剪贴板内容发生变化,处理变化后的操作 break; case WM_CHANGECBCHAIN: // 剪贴板链发生变化,更新链 if (m.WParam == _nextClipboardViewer) { _nextClipboardViewer = m.LParam; } else { SendMessage(_nextClipboardViewer, m.Msg, m.WParam, m.LParam); } break; default: base.WndProc(ref m); break; } } private void Form1_Load(object sender, EventArgs e) { // 注册剪贴板观察器 _nextClipboardViewer = SetClipboardViewer(this.Handle); } private void Form1_FormClosing(object sender, FormClosingEventArgs e) { // 移除剪贴板观察器 ChangeClipboardChain(this.Handle, _nextClipboardViewer); } } ``` 在上面的代码中,我们重载了窗体的WndProc方法用于接收Windows消息。当收到WM_DRAWCLIPBOARD消息时,说明剪贴板内容发生了变化,我们可以在方法中处理相应的操作。当收到WM_CHANGECBCHAIN消息时,说明剪贴板链发生了变化,我们需要更新链。 3. 在处理WM_DRAWCLIPBOARD消息时,获取剪贴板中的数据: ```csharp private void GetClipboardData() { IDataObject clipboardData = Clipboard.GetDataObject(); if (clipboardData.GetDataPresent(DataFormats.Text)) { string clipboardText = (string)clipboardData.GetData(DataFormats.Text); // 处理剪贴板中的文本内容 } else if (clipboardData.GetDataPresent(DataFormats.Html)) { string clipboardHtml = (string)clipboardData.GetData(DataFormats.Html); // 处理剪贴板中的HTML内容 } else if (clipboardData.GetDataPresent(DataFormats.Bitmap)) { Bitmap clipboardBitmap = (Bitmap)clipboardData.GetData(DataFormats.Bitmap); // 处理剪贴板中的图片内容 } // 其他格式的处理 } ``` 在上面的代码中,我们使用Clipboard类获取剪贴板数据对象,然后根据数据格式获取相应的数据并进行处理。 需要注意的是,当我们注销窗口时,需要移除剪贴板观察器,否则可能会导致程序崩溃。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值