[Screenshot, capture d'écran] Comment l'enregistrer dans un Bitmap ? [Résolu]

Signaler
Messages postés
30
Date d'inscription
dimanche 24 octobre 2004
Statut
Membre
Dernière intervention
4 juillet 2005
-
Messages postés
30
Date d'inscription
dimanche 24 octobre 2004
Statut
Membre
Dernière intervention
4 juillet 2005
-
Bonjour tout le monde,

Voici une source qui pour l'instant a pour effet de prendre une capture de l'écran (par simulation d'appui sur la touche PrintScreen) et de créer un fichier bitmap "vide" (sans image) à côté.

.386
.model flat, stdcall
option casemap :none

; INCLUDES ET BIBLIOTHEQUES
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\masm32.inc
include \masm32\include\rasapi32.inc
include \masm32\include\advapi32.inc
include \masm32\include\shell32.inc
include \masm32\include\user32.inc

includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\shell32.lib
includelib \masm32\lib\masm32.lib
includelib \masm32\lib\rasapi32.lib
includelib \masm32\lib\advapi32.lib
includelib \masm32\lib\user32.lib

.data
pathbmp db "c:\masm32\bin\testil.bmp"

.code
start:

Push 0
Push 0
Push 0
Push VK_SNAPSHOT
Call keybd_event      ; On appuie sur le touche PrintScreen.

Push 0
Push KEYEVENTF_KEYUP
Push 0
Push VK_SNAPSHOT
Call keybd_event      ; On relache la touche PrintScreen.

Push 0
Call OpenClipboard      ; On ouvre le presse papier (clipboard).

Push 0         
Push FILE_ATTRIBUTE_NORMAL
Push OPEN_ALWAYS
Push 0
Push 0
Push GENERIC_WRITE
Push OFFSET pathbmp
Call CreateFile              ; On crée un fichier bitmap.

Call CloseClipboard      ; On ferme le presse papier.

Push 0
Call ExitProcess      ; On quitte le programme.
end start


Mon problème est que j'aimerais beaucoup savoir s'il serait possible (et si oui COMMENT, merci) d'enregistrer le contenu du presse papier (à savoir la capture d'écran) dans le fichier bitmap.

Je pense que je peux utiliser l'API WriteFile pour cela mais je ne la comprends pas très bien (ou plutôt je ne vois pas comment faire). Si cela peut aider je précise que je peux toujours recuperer le handle du contenu du presse papier avec ceci :
Push CF_BITMAP
Call GetClipboardData


En vous remerciant par avance... ;)

3 réponses

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
23
Code capture d'ecran complet en C ici, tu traduiras en asm.
Il ne faut pas encombrer le clipboard pour faire cela.
http://www.cppfrance.com/code.aspx?id=11128
Version optimisee d'enregistrement refaite ici:
http://www.cppfrance.com/code.aspx?id=11139

ciao...
BruNews, MVP VC++
Messages postés
30
Date d'inscription
dimanche 24 octobre 2004
Statut
Membre
Dernière intervention
4 juillet 2005

Je n'ai pas trouvé le module d'édition des posts, j'ai supposé qu'il n'existait pas ici. Veuillez m'excuser si ce n'est pas le cas.

C'était juste pour une précision : dans le code que j'ai donné au dessus je sais pertinament que le fait d'ouvrir et de refermer le presse papier ne sert à rien. J'ai rajouté cela uniquement en prévision d'une utilité future.

Merci.
Messages postés
30
Date d'inscription
dimanche 24 octobre 2004
Statut
Membre
Dernière intervention
4 juillet 2005

Merci beaucoup BruNews. ;)