Capture d'écran

Signaler
Messages postés
49
Date d'inscription
mardi 27 mars 2007
Statut
Membre
Dernière intervention
29 juin 2020
-
Messages postés
49
Date d'inscription
mardi 27 mars 2007
Statut
Membre
Dernière intervention
29 juin 2020
-
Bonjour,

J'ai repris une vieille application (10 ans) que j'avais développée et certaines choses semblent ne plus fonctionner. Une instruction apparemment simple :

pt.x = 100;
pt.y = 100;
BitBlt(GetDC(g_WndMainFrame),0,0,500,500,GetDC(WindowFromPoint(pt)),0,0,SRCCOPY);

Ceci est donc censé repérer quelle est la fenêtre qui se trouve au point (100,100) de mon écran, puis de copier un carré de 500x500 de cette fenetre sur mon application.
Si la fenêtre en question est une application genre Paint, Excel ou Explorateur windows, ça fonctionne parfaitement, mais si c'est une page web par exemple (à partir de n'importe quel navigateur), ça m'affiche un carré tout blanc .. (ou noir)

Quelqu'un voit il pourquoi ?

Merci


--

2 réponses

Messages postés
459
Date d'inscription
dimanche 7 février 2016
Statut
Membre
Dernière intervention
8 juillet 2020
2
Bonjour,

Je ne vois pas pourquoi ça a pu marcher.
Les HWND des autres applications sont accessibles, mais à ma connaissance c'est essentiellement pour pouvoir communiquer avec elles.
Prendre un DC dessus je ne vois pas comment, d'autant qu'au mieux ça serait un WindowDC et dans le cas il faudrait impérativement le rendre par ReleaseDC(). Et un ClassDC ne devrait pas être accessible d'une autre application.
Pour rappel : tous les objets GDI sont locaux à leur application.

Maintenant, on devrait pouvoir accéder à la fenêtre "écran" qui elle, est forcément accessible de toutes les applications, ça donnerait quelque chose comme :
HDC hdcScreen = GetDC(NULL);
BitBlt(GetDC(g_WndMainFrame),0,0,500,500,hdcScreen,0,0,SRCCOPY);
ReleaseDC( hdcScreen );
Messages postés
49
Date d'inscription
mardi 27 mars 2007
Statut
Membre
Dernière intervention
29 juin 2020

Merci pour ta solution qui fonctionne (juste ReleaseDC(0,hcdScreen))

Mais comme je veux récupérer un élément qui est sur une page (toujours au même endroit), ta solution nécessite que la fenêtre soit toujours pile poil au même endroit sur mon écran, alors que si je pouvais prendre un DC sur son HWND, le positionnement de cette fenetre n'aurait pas d'importance.

Je ne sais pas si je suis bien clair ...

--