【发布时间】:2009-11-30 22:54:29
【问题描述】:
我有一个应用程序,长话短说,它使用剪贴板进行部分操作。
但有时,由于我从未 100% 确定的原因,有时剪贴板不可用。有时 RDC 客户端会阻止它,有时不会。当您确实需要进行各种交易时,它是极难复制的一种。
是否可以编写一个小测试程序,在运行时不允许任何其他程序访问剪贴板?
【问题讨论】:
我有一个应用程序,长话短说,它使用剪贴板进行部分操作。
但有时,由于我从未 100% 确定的原因,有时剪贴板不可用。有时 RDC 客户端会阻止它,有时不会。当您确实需要进行各种交易时,它是极难复制的一种。
是否可以编写一个小测试程序,在运行时不允许任何其他程序访问剪贴板?
【问题讨论】:
我想你可以调用 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");
}
【讨论】:
简单的解决方案可能是手动配置 RemDesk 以不监视剪贴板。这是 RemDesk 中的一个选项... 但是,是的,保持剪贴板打开应该会产生预期的效果,并且还会阻止 WM_DrawClipboard 通知被发送到剪贴板查看器。
【讨论】: