Programé une capture d'ecran sous windows - C - Programmation
Marsh Posté le 03-08-2006 à 00:13:14
en ma déja dit qu'il faut fair comme ceci :
Citation : |
mais je ne comprand pas bien ceque ca veut bien dire )
Marsh Posté le 03-08-2006 à 00:25:09
On simule l'appui sur la touche <Impr écran> à l'aide de la fonction keybd_event
keybd_event(VK_SNAPSHOT,1,0,0);
Par la même méthode on peut faire une copie de la fenêtre active dans le presse papier:
keybd_event(VK_SNAPSHOT,0,0,0);
Marsh Posté le 03-08-2006 à 00:29:10
Trap D a écrit : On simule l'appui sur la touche <Impr écran> à l'aide de la fonction keybd_event |
c'est en sdl ?
merci
Marsh Posté le 03-08-2006 à 13:35:00
Trap D a écrit : C'est du Windows pur et dur. |
ok merci pour ton aide , mais puisque je suis un débutant (et que j'aispérais faire le screenshoot en sdl ) et vu que je n'est aucune connaissance en ce qui concerne l'utilisation de ses fonction de Windows,
Je vous demande gantiment de me donné une idée : comment j'utilise ces fonction avec le langage c , (si en plus vous me quider vers un tuto pour debutant en ce qui conserne ce truc , ma jois sera complaite
)
merci pour toi Trap D
Marsh Posté le 03-08-2006 à 14:08:05
=> msdn.microsoft.com, y'a le détail des fonctions que tu cites, et souvent des exemples.
big_dadi_fat a écrit : ma jois sera complaite |
Marsh Posté le 03-08-2006 à 15:02:03
J'ajouterais http://atilf.atilf.fr pour faire bonne mesure.
Marsh Posté le 03-08-2006 à 15:06:36
en utilisant keybd_event(VK_SNAPSHOT,1,0,0); peut-on ensuite enregistrer la capture dans un fichier image , pour l'utiliser , si oui comment en code ça svp ?
merci
Marsh Posté le 04-08-2006 à 00:12:12
big_dadi_fat a écrit : en utilisant keybd_event(VK_SNAPSHOT,1,0,0); peut-on ensuite enregistrer la capture dans un fichier image , pour l'utiliser , si oui comment en code ça svp ? |
Pour le moment, je ne sais faire qu'une copie dans un bitmap, pour le sauver sur disque c'est une autre paire de manches :
Code :
|
C'est du MFC mais le principe est le même en Windows.
A noter qu'il faut laisser du temps au système pour mémoriser les données de keybd_event(VK_SNAPSHOT,0,0,0);
Pour mes tests, j'ai utilisé un bouton pour la copie d'écran et un autre bouton pour afficher le bitmap de façon a laisser du temps.
Marsh Posté le 04-08-2006 à 15:22:37
Faudrait que je vérifie si ça marche bien, mais j'ai retrouvé ça dans mes "oubliettes"
void CaptureScreen(HWND hWndMain, long Left, long Top, long Width, long Height)
{
HDC srcDC;
HDC trgDC;
HBITMAP BMPHandle;
DEVMODE *dm;
srcDC = CreateDC("DISPLAY", "", "", &dm);
trgDC = CreateCompatibleDC(srcDC);
BMPHandle = CreateCompatibleBitmap(srcDC, Width, Height);
SelectObject(trgDC, BMPHandle);
BitBlt(trgDC, 0, 0, Width, Height, srcDC, Left, Top, SRCCOPY);
OpenClipboard(hWndMain);
EmptyClipboard();
SetClipboardData(CF_BITMAP, BMPHandle);
CloseClipboard();
DeleteDC(trgDC);
ReleaseDC(BMPHandle, srcDC);
}
Les dimensions de la fenêtre principale, on peut les avoir avec GetWindowRect()
Le hWnd "main" se retrouve par hWndMain = GetDesktopWindow();
J'ai du code (16 bits) pour exporter ce qui est dans le presse-papiers en CLP, ou BMP. faut que je pense à regarder ça ce soir, si ça peut rendre service.
En VB(3), y a http://forum.hardware.fr/hardwaref [...] formulaire mais il n'exporte pas.
Marsh Posté le 04-08-2006 à 15:32:03
merci à tous c'est vraiment trés gantil de votre part, ca commence à s'eclercire pour moi
Marsh Posté le 05-08-2006 à 00:09:58
big_dadi_fat a écrit : merci à tous c'est vraiment trés gentil de votre part, ca commence à s'eclercire pour moi |
A partir du code de Carbon_14 on peut faire comme çà :
Code :
|
Les puristes pourront me reprocher le mélange MFC/Win32
Marsh Posté le 02-08-2006 à 20:11:45
Salut
, mais c'est comme la touche imprim écran du clavier
),

je voudrai savoir svp si en peut prendre une capture d'ecran de tout l'ecran et non pas selement la fenétre SDL (càd ce n'est pas avec SDL_SaveBMP
S'il n y a pas moyen de le faire avec la SDL (en C) , y a t'il un moyen simple de le faire en C ?
je vous remerci pour votre aide
Message édité par big_dadi_fat le 03-08-2006 à 00:11:15