Heim >Backend-Entwicklung >C++ >Wie kann ich mit der Win32-API einen Screenshot einer Windows-Anwendung erfassen?

Wie kann ich mit der Win32-API einen Screenshot einer Windows-Anwendung erfassen?

DDD
DDDOriginal
2024-12-05 22:12:171006Durchsuche

How Can I Capture a Windows Application Screenshot Using the Win32 API?

Windows-Anwendungs-Screenshot-Erfassung

Bei der Windows-Programmierung ist das Erfassen eines Screenshots des aktuellen Bildschirms eine häufige Anforderung. Zu diesem Zweck stellt die Win32-API die notwendigen Funktionen bereit, um eine Bitmap-Darstellung des Bildschirms zu erhalten.

Win32-Screenshot-Code

Zum Erstellen eines Screenshots in einer Windows-Anwendung mit Win32, folgen Sie diesen Schritten:

HDC hScreenDC = GetDC(nullptr);

Rufen Sie den Gerätekontext des gesamten ab Bildschirm.

HDC hMemoryDC = CreateCompatibleDC(hScreenDC);

Erstellen Sie einen kompatiblen Gerätekontext zum Kopieren der Bildschirm-Bitmap.

int width = GetDeviceCaps(hScreenDC,HORZRES);
int height = GetDeviceCaps(hScreenDC,VERTRES);

Ermitteln Sie die Breite und Höhe des Bildschirms in Pixel.

HBITMAP hBitmap = CreateCompatibleBitmap(hScreenDC,width,height);

Erstellen Sie eine kompatible Bitmap, um das Bildschirmbild zu speichern.

HBITMAP hOldBitmap = static_cast<HBITMAP>(SelectObject(hMemoryDC,hBitmap));

Wählen Sie die kompatible Bitmap im kompatiblen Gerät aus Kontext.

BitBlt(hMemoryDC,0,0,width,height,hScreenDC,0,0,SRCCOPY);

Kopieren Sie das Bildschirmbild mithilfe der Bitblockübertragung (BitBlt) in die kompatible Bitmap.

hBitmap = static_cast<HBITMAP>(SelectObject(hMemoryDC,hOldBitmap));

Stellen Sie die vorherige Bitmap-Auswahl im Kontext des Speichergeräts wieder her.

DeleteDC(hMemoryDC);
DeleteDC(hScreenDC);

Löschen Sie beide Gerätekontexte, um Ressourcen freizugeben.

Das obige ist der detaillierte Inhalt vonWie kann ich mit der Win32-API einen Screenshot einer Windows-Anwendung erfassen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn