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

时间:2009-11-30 22:54:30

标签: windows clipboard

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

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

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

2 个答案:

答案 0 :(得分:2)

我想你可以调用OpenClipboard和EmptyClipboard,然后只需保持打开状态,只在测试应用程序退出时调用CloseClipboard,或类似的东西...

从SCHNAPPLE编辑

所以这就是我本质上所做的,我找到了C#代码来做... that other site

[ 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");
}

答案 1 :(得分:0)

简单的解决方案可能是手动配置RemDesk以不监控剪贴板。这是RemDesk中的一个选项...... 但是,保持剪贴板打开应该具有所需的效果,并且还会阻止WM_DrawClipboard通知发送到剪贴板查看器。