Comment puis-je obtenir un accès exclusif au presse-papiers à des fins de test?

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

  •  10-07-2019
  •  | 
  •  

Question

J'ai une application qui, en résumé, utilise le presse-papiers pour une partie de son fonctionnement.

Parfois, cependant, pour des raisons que je n'ai jamais parfaitement cernées, le presse-papiers n'est parfois 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 passer des accords.

Peut-on écrire un petit programme d’essai qui, lorsqu’il est lancé, n’autorise aucun autre programme à accéder au presse-papiers?

Était-ce utile?

La solution

Je suppose que vous pouvez appeler OpenClipboard et EmptyClipboard, puis maintenez-le simplement ouvert et appelez CloseClipboard uniquement lorsque l'application de test se ferme, ou quelque chose comme ça ...

MODIFIER À PARTIR DE SCHNAPPLE

C’est donc ce que j’ai fait essentiellement et j’ai trouvé le code C # pour le faire sur ... cet autre 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");
}

Autres conseils

La solution simple consiste peut-être simplement à configurer manuellement RemDesk pour ne pas surveiller le presse-papiers. C'est une option dans RemDesk ... Mais oui, le maintien du presse-papiers ouvert devrait avoir l'effet souhaité et empêcher les notifications WM_DrawClipboard d'être envoyées aux visualiseurs du presse-papiers.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top