Как получить эксклюзивный доступ к буферу обмена для тестирования?
Вопрос
У меня есть приложение, которое, короче говоря, использует буфер обмена для части своей работы.
Иногда, хотя по причинам, которые я никогда не использовал на 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 зрителям буфера обмена. Р>