2009-11-30 3 views
2

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

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

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

ответ

2

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

EDIT ИЗ 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"); 
} 
0

Простое решение может быть просто вручную настроить RemDesk не контролировать буфер обмена. Это вариант в RemDesk ... Но да, сохранение открытого буфера обмена должно иметь желаемый эффект, а также будет передавать уведомления WM_DrawClipboard в буфер обмена.