Qual è il modo migliore per fare screenshot di una finestra con C ++ in Windows?

Qual è il modo migliore (più semplice) per acquisire uno screenshot di un’applicazione in esecuzione con C ++ in Windows?

È necessario ottenere il contesto del dispositivo della finestra ( GetWindowDC() ) e copiare l’immagine ( BitBlt() ) da esso. A seconda di cos’altro sai dell’applicazione, verranno utilizzati diversi metodi per trovare l’handle della finestra da passare in GetWindowDC() .

Nella documentazione della funzione keybd_event si afferma che è ansible utilizzarlo per catturare uno screenshot e salvarlo negli appunti. Per esempio:

 keybd_event(VK_SNAPSHOT, 0, KEYEVENTF_SILENT, 0); 

Nella mia versione (guida di Visual Studio 2005 installata sul mio computer) si afferma che è ansible acquisire uno screenshot dell’intero desktop impostando il secondo parametro su 0 o una schermata della sola applicazione corrente impostandola su 1.

Portarlo fuori dal buffer degli appunti è lasciato come esercizio per il lettore.

Tuttavia, penserei attentamente prima di fare questo, dato che sarà già presente qualsiasi dato di immagine presente negli appunti.

Ecco un codice di esempio
Puoi fare CaptureAnImage(GetDesktopWindow()); per fare una cattura dello schermo.