web-dev-qa-db-fra.com

Quel est le meilleur moyen de prendre des captures d'écran d'une fenêtre avec C++ sous Windows?

Quel est le meilleur moyen (le plus simple) de prendre une capture d'écran d'une application en cours d'exécution avec C++ sous Windows?

36
mgiza

Vous devez obtenir le contexte de périphérique de la fenêtre ( GetWindowDC() ) et copier une image ( BitBlt() ) à partir de celle-ci. En fonction de ce que vous savez sur l'application, vous utiliserez différentes méthodes pour trouver le descripteur de fenêtre à transmettre à GetWindowDC().

26
sharptooth

Dans la documentation de keybd_event function, il est indiqué que vous pouvez l'utiliser pour prendre une capture d'écran et la sauvegarder dans le presse-papiers. Par exemple:

keybd_event(VK_SNAPSHOT, 0, KEYEVENTF_SILENT, 0);

Dans ma version (l'aide de Visual Studio 2005 installée sur mon ordinateur), il est indiqué que vous pouvez effectuer une capture d'écran de l'ensemble du bureau en définissant le deuxième paramètre sur 0 ou une capture d'écran de l'application actuelle en définissant le paramètre 1.

Le sortir du tampon du presse-papiers est laissé comme un exercice pour le lecteur.

Cependant, je réfléchissais bien avant de faire ceci car cela effacerait les données d'image déjà présentes dans le presse-papiers.

4
Daemin

Voici un exemple code
Vous pouvez utiliser CaptureAnImage(GetDesktopWindow()); pour effectuer une capture d’écran.

0
sflee