如何使用C#清除剪贴板内容

时间:2010-10-14 09:17:21

标签: c# winforms .net-2.0 clipboard

我有一个应用程序,我使用剪贴板进行复制和粘贴操作。对于复制,我使用了这段代码:

Clipboard.Clear();
const byte VK_CONTROL = 0x11;
keybd_event(VK_CONTROL, 0, 0, 0);
keybd_event(0x43, 0, 0, 0); // Send the C key (43 is "C")
keybd_event(0x43, 0, CONST_KEYEVENTF_KEYUP, 0);
keybd_event(VK_CONTROL, 0, CONST_KEYEVENTF_KEYUP, 0);

但它发出的错误是无法执行剪贴板操作,我无法粘贴它。这是一个例外。

如何解决此问题,或者在复制之前是否有其他方法可以清除剪贴板内容?

4 个答案:

答案 0 :(得分:2)

使用:

Clipboard.SetText("some string");
Clipboard.GetText();

请参阅MSDN文章 Clipboard Class (System.Windows.Forms)

答案 1 :(得分:1)

我使用Win32 API调用(EmptyClipboard function)完成了它。

答案 2 :(得分:0)

Clipboard.Clear()

MSDN

答案 3 :(得分:0)

一种简便的方法,用于清除其内容,以空格代替:

public static void Clear()
{
    Thread STAThread = new Thread(
                             delegate ()
                             {
                                 System.Windows.Forms.Clipboard.SetText(" ");
                             });

    STAThread.SetApartmentState(ApartmentState.STA);
    STAThread.Start();
    STAThread.Join();

}