Come posso ottenere l'accesso esclusivo agli Appunti a scopo di test?
Domanda
Ho un'app che, per farla breve, usa gli appunti per parte del suo funzionamento.
A volte però, per motivi che non ho mai inchiodato al 100%, a volte gli Appunti non sono disponibili. A volte il client RDC lo blocca, a volte no. Ed è uno di quelli estremamente difficili da riprodurre quando hai davvero bisogno di fare una specie di affare.
Si potrebbe scrivere un piccolo programma di test che, mentre è in esecuzione, non consente ad altri programmi di accedere agli Appunti?
Soluzione
Suppongo che potresti chiamare OpenClipboard e EmptyClipboard, quindi semplicemente tenerlo aperto e chiamare CloseClipboard solo quando termina l'applicazione di test o qualcosa del genere ...
MODIFICA DA SCHNAPPLE
Quindi questo è quello che ho fatto essenzialmente e ho trovato il codice C # per farlo su ... quell'altro sito
[ 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");
}
Altri suggerimenti
La soluzione semplice potrebbe essere quella di configurare manualmente RemDesk per non monitorare gli Appunti. È un'opzione in RemDesk ... Sì, tenere aperti gli Appunti dovrebbe avere l'effetto desiderato e anche impedire che le notifiche di WM_DrawClipboard vengano inviate ai visualizzatori degli Appunti.