[C++] Récupérer la valeur de l'écran

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   -  
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Je voudrais faire un programme en C++ sous Windows qui me permette de faire comme une impression écran, c'est à dire récupérer un tableau de pixel, pour que je puisse le traiter après...

Problème : je n'ai aucune idée de comment récupérer ce tableau de pixel !

PS. Ce que je voudrais au final c'est faire des clichés successifs et optimiser la taille de la "vidéo", non pas pour l'utilité du programme, mais par simple défi algorithmique...

Tout aide est la bienvenue. Merci !
A voir également:

4 réponses

Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
Salut.
Là je pense qu'il faut rentrer dans les méandres de windows.
Je ne sais pas si on peut récupérer facilement des video, car si tu fait une impression écran, bien souvent il n'y a pas la vidéo dessus.
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
En fait je ne veux pas utiliser le bouton impression écran déjà existant, mais plutôt le simuler, récupérer la sortie écran comme si c'était un fichier...
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
J'ai bien compris. Je te disait juste que ça ne doit pas être si facile que ça. Il est possible que la vidéo passe en grande partie par la carte vidéo, et donc que ça soit plus dur à récupérer.
0
François2
 
Ca se fait en 30 secondes avec l'api Win32 (qui fait tout sous Windows, c'est le but des fcts exportées)
Donc demander sur le groupe Pro fr Win32 https://groups.google.com/forum/?hl=fr#!forum/fr.comp.os.ms-windows.programmation
où le code a été donné... des centaines de fois ( en C et C++)
0
michael
 
Je dirais des milliers de fois même, vu que la hardcopy est une FAQ Winapi depuis la sortie de Windows 95 (ça date...)
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
Pour une fois, je pense que l'intervention du gros lourd de service cette fois ci incarné sous le pseudonyme
François2 est bien placé. Par contre, ça manque toujours autant d'intéret.
J'ai cliqué et fait une recherche "capture ecran" et j'ai trouvé ça :
Pour le capturer tu fais juste un BitBlt() dans un DC compatible après
avoir récupéré ses dimensions.
Un truc comme ça :

nX = GetSystemMetrics( SM_CXSCREEN );
nY = GetSystemMetrics( SM_CYSCREEN );
hDCScreen = GetDC(NULL);
hDCMem = CreateCompatibleDC(hDCScreen);
hBitmap=CreateCompatibleBitmap(hDCScreen, nX, nY);
hBitmapOld = SelectObject(hDCMem, hBitmap);
BitBlt( hDCMem, 0,0, nX,nY, hDCScreen, 0, 0 , SRCCOPY);
SelectObject(hDCMem, hBitmapOld);
DeleteObject( hBitmap );
DeleteDC( hDCMem );
ReleaseDC( NULL, hDCMem ); 

Du charabia pour moi. Donc maintenant si M. le gros malin Win32 pouvait nous dire un peu à quoi servent ces différentes instructions.
0
carly31 Messages postés 57 Date d'inscription   Statut Membre Dernière intervention   5
 
> Du charabia pour moi.

Ca fait peur de lire de telles remarques.
On dirait un gosse de 15 ans
Achète "Windows pour les nuls" car, là, c'est grave...
Et comme on t'a dit, va demander sur le réseau Pro où ce code (qui n'est pas la bonne méthode en plus) est un code de débutant...
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299 > carly31 Messages postés 57 Date d'inscription   Statut Membre Dernière intervention  
 
code trouver pourtant sur ton super lien de pro !
C'est bien remarque, tu descend en flèche le site promu depuis si longtemps avec tant d'amour...
Et si tu es si malin, mets donc la solution, comment tu l'a trouver et explique un peu au lieu de tout prendre de haut.
Car si tu as fait preuve de ton arrogance et de ta condescendance, tu n'as en rien fait preuve de ta connaissance et de ta compétence.
0