Como posso agarrar acesso exclusivo para a área de transferência para fins de teste?

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

  •  10-07-2019
  •  | 
  •  

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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top