/ / ¿Cómo puedo obtener acceso exclusivo al portapapeles para realizar pruebas? - ventanas, portapapeles

¿Cómo puedo obtener acceso exclusivo al portapapeles para realizar pruebas? - ventanas, portapapeles

Tengo una aplicación que, para abreviar, usa el portapapeles como parte de su funcionamiento.

A veces, sin embargo, por razones que nunca he tenido el 100%.clavado, a veces el portapapeles no está disponible. A veces el cliente RDC lo bloquea, a veces no lo hace. Y es uno de esos extremadamente difíciles de reproducir cuando realmente necesitas un tipo de ofertas.

¿Se podría escribir un pequeño programa de prueba que, mientras se ejecuta, no permita que ningún otro programa acceda al portapapeles?

Respuestas

2 para la respuesta № 1

Supongo que podrías llamar a OpenClipboard y a EmptyClipboard, luego simplemente mantenerlo abierto y solo llamar a CloseClipboard cuando la aplicación de prueba salga, o algo así ...

EDITAR DE SCHNAPPLE

Así que esto es lo que hice esencialmente y encontré el código C # para hacerlo en ... ese otro sitio

[ 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 para la respuesta № 2

La solución fácil puede ser simplemente manualconfigura RemDesk para no monitorear el portapapeles. Es una opción en RemDesk ... Pero sí, mantener el portapapeles abierto debe tener el efecto deseado y también mantendrá las notificaciones de WM_DrawClipboard para que no se envíen a los usuarios del portapapeles.