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。