代码之家  ›  专栏  ›  技术社区  ›  Tom Kidd

为了测试的目的,我如何获取对剪贴板的独占访问权?

  •  1
  • Tom Kidd  · 技术社区  · 15 年前

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

    但有时,出于我从未100%确定的原因,有时剪贴板不可用。有时RDC客户机会阻止它,有时不会。当您真正需要进行各种交易时,这是一种极难重现的情况。

    你能不能写一个小测试程序,当它运行时,不允许任何其他程序访问剪贴板?

    2 回复  |  直到 15 年前
        1
  •  2
  •   Tom Kidd    15 年前

    我想您可以调用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");
    }
    
        2
  •  0
  •   Chris Thornton    15 年前

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