Hades53
Messages postés231Date d'inscriptionmercredi 12 février 2003StatutMembreDernière intervention 7 juillet 2009
-
19 mai 2009 à 15:37
wkenw
Messages postés19Date d'inscriptionmardi 30 septembre 2008StatutMembreDernière intervention 3 août 2009
-
3 août 2009 à 21:49
Bonjour à tous, voilà je me trouve confronté à un petit problème. En fait je voudrais afficher une copier le contenu graphique d'une fenêtre.
La fonction marche très bien mais seulement quand la fenêtre cible est activée, donc ça ne marche pas quand c'est caché :(
Y'aurait-il un moyen de contourner ce problème ?
J'ai regardé sur divers forums mais apparement personne n'a su solutionner le problème.
Voici la portion de code que j'utilise:
HDC targetDC = GetDCEx(target_HWND,0,DCX_CACHE);
if (targetDC) {
BitBlt(hDC,0,400,200,200,target_DC,0,0,SRCCOPY);
ReleaseDC(target_HWND,target_DC);
}
hDC est le context où j'affiche l'aperçu de la fenêtre (geré lors du WM_PAINT).
De plus il me semble que la fonction PrintWindow() a le même problème.
Hades53
Messages postés231Date d'inscriptionmercredi 12 février 2003StatutMembreDernière intervention 7 juillet 2009 28 mai 2009 à 01:54
Ok j'avais approximativement fait un program du genre, mais j'obtiens le même résultat qu'avec le tiens, à savoir une fenêtre noir. En tout cas merci pour les conseils, et l'upload du prog.
Conclusion, on ne peut pas obtenir le contenu d'une fenêtre cachée.
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 23 mai 2009 à 17:44
Hein ? Qu'appelles tu inactives ? Je viens de refaire des essais avec le Delphi, avec une fenêtre de calculatrice qui :
<li>N'a pas le focus.</li><li>A une partie d'elle même en dehors de l'écran.</li><li>A une partie d'elle même derrière une fenêtre.</li>
Et pourtant... Pourtant PrintWindow a parfaitement travaillé !
Bon, ça ne marche pas sur toutes les application (A base de DirectDraw...), si la fenêtre est minimisée, cela fait une impression écran du bouton dans la barre des tâches...
MAIS, si tu n'es pas arrivé au même résultat avec la calculatrice, c'est que tu as raté quelque chose...
Hades53
Messages postés231Date d'inscriptionmercredi 12 février 2003StatutMembreDernière intervention 7 juillet 2009 23 mai 2009 à 18:28
Ok c'est vrai que ça à l'air de marcher, mais tu n'a pas ton executable dispo quelque part (pour que je test de mon côté), en fait j'ai pas de compilateur Deplhi, juste basic et C++, mais j'pense que si ça marche j'essairai de convertir au mieux ton bout de code ;)
wkenw
Messages postés19Date d'inscriptionmardi 30 septembre 2008StatutMembreDernière intervention 3 août 2009 9 juil. 2009 à 18:54
En fait je viens de tomber sur le même problème. Contrairement à ce que tu dis, on peut obtenir une capture d'écran d'une fenêtre cachée.
racpp (et oui, toujours lui !) explique comment faire ici. Je me demande comment il connaît tout ça !
Pour info, mon code est :
HWND hWnd = FindWindow(NULL, "Titre Fenetre");
HDC hWndDC = GetWindowDC(hWnd);
HDC hdcMemDC = CreateCompatibleDC(hWndDC);
RECT rcClient;
GetClientRect(hWnd, &rcClient); // GetWindowRect pour avoir la decoration
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 9 juil. 2009 à 18:59
wkenw -> Tu as pas lu le thread mon grand ! Je filais le même lien dans mon premier message. Et Hades53 s'est effectivement basé sur le code de racpp. Mais pourquoi dans son cas (Quel cas d'ailleurs ? Aaaah. Peut être une fenêtre cachée avec SW_HIDE ou autre !) ça n'a pas fonctionné, mystère...