Как получить эксклюзивный доступ к буферу обмена для тестирования?

StackOverflow https://stackoverflow.com/questions/1822996

  •  10-07-2019
  •  | 
  •  

Вопрос

У меня есть приложение, которое, короче говоря, использует буфер обмена для части своей работы.

Иногда, хотя по причинам, которые я никогда не использовал на 100%, иногда буфер обмена недоступен. Иногда клиент RDC блокирует его, иногда нет. И это один из тех, которые чрезвычайно трудно воспроизвести, когда вам действительно нужны какие-то предложения.

Можно ли написать небольшую тестовую программу, которая при запуске не позволяет другим программам получать доступ к буферу обмена?

Это было полезно?

Решение

Полагаю, вы могли бы вызвать OpenClipboard и EmptyClipboard, а затем просто оставить их открытыми и вызывать CloseClipboard только при выходе из приложения тестирования или что-то в этом роде ...

РЕДАКТИРОВАТЬ ИЗ SCHNAPPLE

Итак, это то, что я сделал по сути, и я нашел код C #, чтобы сделать это на ... этот другой сайт

[ 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 зрителям буфера обмена.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top