Como posso agarrar acesso exclusivo para a área de transferência para fins de teste?
Pergunta
Eu tenho um aplicativo que, longa história curta, usa a área de transferência para a parte de sua operação.
Às vezes, porém, por razões que eu nunca 100% pregado para baixo, às vezes a área de transferência não está disponível. Às vezes, os clientes blocos RDC, às vezes isso não acontece. E é um daqueles extremamente difícil de reproduzir quando você realmente precisa os tipos de negócios.
Alguém poderia escrever um pequeno programa de testes que, enquanto ele é executado, não permite quaisquer outros programas para acessar a área de transferência?
Solução
Eu suponho que você poderia chamar OpenClipboard e EmptyClipboard, em seguida, basta mantê-lo aberto e só chamar CloseClipboard quando sai do aplicativo de teste, ou algo assim ...
Editar Schnapple
Então é isso que eu fiz, essencialmente, e eu achei código C # para fazê-lo em ... que outro 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");
}
Outras dicas
A solução fácil pode ser a RemDesk apenas configure manualmente para não monitora a área de transferência. É uma opção em RemDesk ... Mas sim, manter o aberto área de transferência deve ter o efeito desejado, e também irá manter notificações WM_DRAWCLIPBOARD de serem enviados para os telespectadores prancheta.