我有一个应用程序,长话短说,使用剪贴板进行部分操作。
有时候,由于我从未100%确定过的原因,有时剪贴板不可用。有时RDC客户端阻止它,有时它不会阻止它。当你真的需要进行各种交易时,这是极难重现的一种。
是否可以编写一个小测试程序,在运行时,不允许任何其他程序访问剪贴板?
答案 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通知发送到剪贴板查看器。