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

Messages postés
30
Date d'inscription
dimanche 24 octobre 2004
Dernière intervention
4 juillet 2005
- - Dernière réponse : kinkey_wizard
Messages postés
30
Date d'inscription
dimanche 24 octobre 2004
Dernière intervention
4 juillet 2005
- 22 déc. 2004 à 16:50
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... ;)
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
Messages postés
21054
Date d'inscription
jeudi 23 janvier 2003
Dernière intervention
7 novembre 2014
3
Merci
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++

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

Commenter la réponse de BruNews
Messages postés
30
Date d'inscription
dimanche 24 octobre 2004
Dernière intervention
4 juillet 2005
0
Merci
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.
Commenter la réponse de kinkey_wizard
Messages postés
30
Date d'inscription
dimanche 24 octobre 2004
Dernière intervention
4 juillet 2005
0
Merci
Merci beaucoup BruNews. ;)
Commenter la réponse de kinkey_wizard

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.