Capturer une fenetre non active

Signaler
Messages postés
5
Date d'inscription
samedi 11 août 2007
Statut
Membre
Dernière intervention
23 avril 2010
-
Messages postés
5
Date d'inscription
samedi 11 août 2007
Statut
Membre
Dernière intervention
23 avril 2010
-
Bonjour a tous,
j'écris un petit programme qui capture toutes les X millisecondes une partie de l'affichage d'une fenetre ( en l'occurence un navigateur ) afin de faire des traitements dessus.

Mon probleme est le suivant :
tout marche bien lorsque le navigateur est au premier plan.

J'aimerais que cela marche même si le navigateur est en arriere-plan, de facon à ce que le
programme puisse tourner en fond sans pourrir mon affichage.


Savez-vous s'il est possible de faire un paint d'une fenetre d'un processus externe
directement vers une zone mémoires ?

J'ai essayé pas mal de trucs trouvés çà et là sur le net, mais impossible
de faire ce que je veux .

Cordialement

3 réponses

Messages postés
5
Date d'inscription
samedi 11 août 2007
Statut
Membre
Dernière intervention
23 avril 2010

J'ai trouvé le post d'un gars qui dit qu'il est arrivé.

Seulement, ce code est en VB.

Pensez-vous que çà marche ?
Pensez vous que c'est portable vers du C ou du c# ?


http://www.xtremevbtalk.com/showthread.php?t=312702
Messages postés
1160
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
21 octobre 2010
16
[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr PrintWindow(IntPtr hwnd, IntPtr hDC, uint nFlags);

private Bitmap CaptureWindowPrint(IntPtr hWnd, int targetWidth, int targetHeight)
{
Bitmap memoryImage = new Bitmap(targetWidth, targetHeight);
Graphics memoryGraphics = Graphics.FromImage(memoryImage);
IntPtr hDC = memoryGraphics.GetHdc();
PrintWindow(hWnd, hDC, 0);
memoryGraphics.ReleaseHdc();
memoryGraphics.Dispose();
return memoryImage;
}


Ceci doit fonctionner, je pense
Messages postés
5
Date d'inscription
samedi 11 août 2007
Statut
Membre
Dernière intervention
23 avril 2010

Cool, ca a l'air de marcher assez bien.

Par contre, étrangement ca marche quand je capture le display de Firefox,
mais pas celui d'opera.

Bizarre