2009-11-30 13 views
2

J'ai une application qui, pour faire court, utilise le presse-papiers pour une partie de son fonctionnement.Comment puis-je obtenir un accès exclusif au presse-papiers à des fins de test?

Parfois cependant, pour des raisons que je n'ai jamais clouées à 100%, parfois le presse-papiers n'est pas disponible. Parfois, le client RDC le bloque, parfois non. Et c'est l'un de ceux qui sont extrêmement difficiles à reproduire lorsque vous avez vraiment besoin de sortes d'offres. Est-il possible d'écrire un petit programme de test qui, pendant qu'il s'exécute, n'autorise aucun autre programme à accéder au presse-papiers?

Répondre

2

Je suppose que vous pourriez appeler OpenClipboard et EmptyClipboard, puis tout simplement le garder ouvert et seulement appeler CloseClipboard lorsque les sorties d'applications de test, ou quelque chose comme ça ...

EDIT DE SCHNAPPLE

Alors c'est ce que je faisais essentiellement et j'ai trouvé le code C# pour le faire sur ... 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

La solution facile peut être juste configurer manuellement RemDesk pour ne pas surveiller le presse-papiers. C'est une option dans RemDesk ... Mais oui, garder le presse-papiers ouvert devrait avoir l'effet désiré, et empêchera également les notifications WM_DrawClipboard d'être envoyées aux visualiseurs de presse-papier.