Was ist der beste (einfachste) Weg, um einen Screenshot einer laufenden Anwendung mit C++ unter Windows zu machen?Was ist der beste Weg, Screenshots eines Windows mit C++ in Windows zu machen?
Antwort
Sie müssen den Gerätekontext des Fensters (GetWindowDC()
) holen und Bild (BitBlt()
) davon kopieren. Abhängig davon, was Sie sonst noch über die Anwendung wissen, werden Sie verschiedene Methoden verwenden, um herauszufinden, welcher Fenstergriff in GetWindowDC()
übergeben werden soll.
In der Funktionsdokumentation keybd_event steht, dass Sie damit einen Screenshot erstellen und in die Zwischenablage speichern können. Zum Beispiel:
keybd_event(VK_SNAPSHOT, 0, KEYEVENTF_SILENT, 0);
In meiner Version (Visual Studio 2005 Hilfe auf meinem Computer installiert ist) heißt es, dass Sie, indem Sie den zweiten Parameter auf 0 oder einen Screenshot nur einen Screenshot des gesamten Desktop nehmen die aktuelle Anwendung, indem Sie es auf 1 setzen.
Es aus der Zwischenablage Puffer wird als Übung für den Leser verlassen.
Allerdings würde ich sorgfältig überlegen, bevor Sie dies tun, da es torf, was auch immer Bilddaten bereits in der Zwischenablage vorhanden war.
das ist das Ereignis für die PrintScr Taste auf der Tastatur. das 'keybd_event', das Sie angaben, kann nicht verwendet werden, um screenshot zu machen. was für ein Konzept Missverständnis! – jondinham
@Paul Folgen Sie dem Link, den ich eingefügt habe, und lesen Sie den Abschnitt "Bemerkungen": "Eine Anwendung kann einen Druck auf die Taste PRINTSCRN simulieren, um einen Screenshot zu erhalten und in die Zwischenablage zu speichern. Rufen Sie dazu keybd_event auf mit dem bVk-Parameter auf VK_SNAPSHOT gesetzt. " – Daemin
oh ok ich sehe, wusste nicht, wir könnten das Drücken von printscr Schlüssel simulieren :) – jondinham
Hier ist ein Beispiel code
Sie können CaptureAnImage(GetDesktopWindow());
machen, um eine Bildschirmaufnahme zu machen.
Drücken Sie die Taste "Druck" auf der Tastatur. –
Wie war diese Frage off-topic? Es fragt, wie man es programmatisch macht, was mir ziemlich relevant erscheint (und nicht zu ungewöhnlich ist). – jamesdlin
Offtopic? "Ja wirklich?" – Nakilon