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
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 , mais c'est comme la touche imprim écran du clavier ),
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