Maison >développement back-end >C++ >Comment puis-je capturer une capture d'écran d'une application Windows à l'aide de l'API Win32 ?

Comment puis-je capturer une capture d'écran d'une application Windows à l'aide de l'API Win32 ?

DDD
DDDoriginal
2024-12-05 22:12:171042parcourir

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

Capture d'écran d'application Windows

Dans la programmation Windows, capturer une capture d'écran de l'écran actuel est une exigence courante. A cet effet, l'API Win32 fournit les fonctions nécessaires pour acquérir une représentation bitmap de l'écran.

Code de capture d'écran Win32

Pour prendre une capture d'écran dans une application Windows à l'aide Win32, suivez ces étapes :

HDC hScreenDC = GetDC(nullptr);

Récupérez le contexte de l'appareil de l'ensemble écran.

HDC hMemoryDC = CreateCompatibleDC(hScreenDC);

Créez un contexte de périphérique compatible pour copier le bitmap de l'écran.

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

Obtenez la largeur et la hauteur de l'écran en pixels.

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

Créez un bitmap compatible pour contenir l'image à l'écran.

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

Sélectionnez le bitmap compatible dans l'appareil compatible. contexte.

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

Copiez l'image d'écran sur le bitmap compatible à l'aide du transfert de blocs de bits (BitBlt).

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

Restaurez la sélection bitmap précédente dans le contexte du périphérique de mémoire.

DeleteDC(hMemoryDC);
DeleteDC(hScreenDC);

Supprimez les deux contextes d'appareil pour libérer des ressources.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn