Windows 我如何获取对剪贴板的独占访问权以进行测试?

Windows 我如何获取对剪贴板的独占访问权以进行测试?,windows,clipboard,Windows,Clipboard,我有一个应用程序,长话短说,使用剪贴板的一部分操作 但有时,由于我从未100%确定的原因,剪贴板有时不可用。有时RDC客户端会阻止它,有时不会。当你真的需要做各种各样的交易时,这是一种极难复制的交易 可以编写一个小测试程序,在运行时不允许任何其他程序访问剪贴板吗 我想您可以调用OpenClipboard和EmptyClipboard,然后简单地保持它的打开状态,并且只在测试应用程序退出时调用CloseClipboard,或者类似的东西 从苹果编辑 这就是我基本上所做的,我找到了C代码来做这件事

我有一个应用程序,长话短说,使用剪贴板的一部分操作

但有时,由于我从未100%确定的原因,剪贴板有时不可用。有时RDC客户端会阻止它,有时不会。当你真的需要做各种各样的交易时,这是一种极难复制的交易


可以编写一个小测试程序,在运行时不允许任何其他程序访问剪贴板吗

我想您可以调用OpenClipboard和EmptyClipboard,然后简单地保持它的打开状态,并且只在测试应用程序退出时调用CloseClipboard,或者类似的东西

从苹果编辑

这就是我基本上所做的,我找到了C代码来做这件事


简单的解决方案可能是手动配置RemDesk,使其不监视剪贴板。这是RemDesk中的一个选项。。。 但是,是的,保持剪贴板打开应该会产生预期的效果,并且还可以防止WM_DrawClipboard通知被发送到剪贴板查看器

[ DllImport( "user32.dll" ) ]
extern static bool OpenClipboard( IntPtr hWnd );

[ DllImport( "user32.dll" ) ]
extern static bool CloseClipboard();

[ DllImport( "user32.dll" ) ]
extern static IntPtr GetClipboardData( uint uFormat );

public static void GetSomeDib()
{
      OpenClipboard( System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle );

      IntPtr img = GetClipboardData(8);

      MessageBox.Show("Clipboard Locked");

      CloseClipboard();

      MessageBox.Show("Clipboard Unlocked");
}