lastdream86
Messages postés1Date d'inscriptionjeudi 9 février 2006StatutMembreDernière intervention21 février 2008
-
21 févr. 2008 à 13:15
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 2021
-
21 févr. 2008 à 22:07
Bonjour,
je programme sous visual studio et j'essaye de recuperer les pixels d'une application avec GDI.
Mon programme fonctionne parfaitement quand il s'agit de recuperer les pixels d'une application fenêtré cependant celui-ci me renvoie une image noir quand je tente de recuperer les pixels d'un jeux par exemple .
Voici comment je procède pour réaliser un screen :
LPCTSTR lpCaption = "Call of Duty 4";
HWND handApp = FindWindow(0,lpCaption); //je recupere le handle du jeu
cout << handApp << endl; // je verifie que handApp n'est pas null
hdcScr = GetWindowDC(handApp);
hbmMem = CreateCompatibleBitmap(hdcScr, nScrX, nScrY);
hdcMem = CreateCompatibleDC(hdcScr);
hbmOld = (HBITMAP) SelectObject(hdcMem, hbmMem);
BitBlt(hdcMem, 0, 0, nScrX, nScrY, hdcScr, 0, 0, SRCCOPY) ;
GetDIBits(hdcMem, hbmMem, 0,
nScrY , (LPBYTE)pPixels, &bmi, DIB_RGB_COLORS);pixelList.push_back(pPixels);//je met dans une list mes pixels pour ensuite créer les images
Je ne trouve aucune solution, est-il possible que GDI soit le probleme? Toute aide est la bienvenue
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 21 févr. 2008 à 18:54
Salut,
En général, les jeux utilisent DirectX pour dessiner directement dans la mémoire d'affichage. Pour récupérer ces images, je pense qu'il faudra passer par DirectX.
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 21 févr. 2008 à 22:07
correct, DirectX ne passe pas par le GDI... heureusement, sinon, de fortes chances que ca soit du DIB donc vive la lenteur.
DirectX joue directement avec la carte graphique, lui, avec les pilotes adaptés pour directX...