如何锁定剪贴板?

kam*_*msu 5 c# clipboard

我想知道是否有办法从 C# 锁定和解锁剪贴板。基本上,我会在里面写一些东西,我不希望其他人在我拿起我的东西之前写信。

我怎样才能做到这一点?

Han*_*ant 5

OpenClipboard() API 函数(后跟 EmptyClipboard())会锁定剪贴板,直到调用 CloseClipboard。您可能应该在目标进程中传递窗口的窗口句柄,但零可以。

当我想测试我的应用程序是否优雅地处理锁定剪贴板的恶意应用程序时,这是一个 C# 控制台应用程序,它对我有用。

class Program
{
    [DllImport("user32.dll", EntryPoint = "OpenClipboard", SetLastError = true)]
    private static extern bool OpenClipboard(IntPtr hWndNewOwner);

    [DllImport("user32.dll", SetLastError = true)]
    private static extern bool CloseClipboard();

    [DllImport("user32.dll", SetLastError = true)]
    private static extern bool EmptyClipboard();

    static void Main(string[] args)
    {
        OpenClipboard(new IntPtr(0));
        EmptyClipboard();
        Console.WriteLine("Clipboard locked. Press enter to unlock and exit.");
        Console.ReadLine();
        CloseClipboard();
    }
}
Run Code Online (Sandbox Code Playgroud)

这些声明来自 pinvoke.net。