C# capture (image) un peu spécial

Résolu/Fermé
christboy Messages postés 157 Date d'inscription jeudi 31 mai 2007 Statut Membre Dernière intervention 30 juillet 2008 - 29 juil. 2008 à 19:12
christboy Messages postés 157 Date d'inscription jeudi 31 mai 2007 Statut Membre Dernière intervention 30 juillet 2008 - 30 juil. 2008 à 13:11
Bonjour,
Alors voici mon problème j'ouvre un processus, jusque la ça va.
Ensuite il me faut un screenshoot de la fenêtre de ce processus et uniquement de cette fenêtre (car ensuite je fait des recherche de pixel dessus etc...). Un screen total de l'écran n'est pas envisageable car le processus que j'ouvre peut 'être plusieurs fois et donc comme notre amis windows ouvre les fenêtre en cascade (et donc décaler) je ne peux pas screen l'écran.


voici un bout de code:
try 
{ 
      proc = Process.Start(new ProcessStartInfo(@"C:\Program Files\.....exe"));
}
catch (Exception execp2)
{
       MessageBox.Show(execp2.Message);
       return;
}
Bitmap bmp;
int timer = 0;
do
{
        bmp = ?????? //<---- ici il faudrait reussir a screen uniquement le processus proc
        timer++;
        System.Threading.Thread.Sleep(1000);
        if (timer == 10)
        break;
}
while ((bmp.GetPixel(213, 353) != Color.FromArgb(250, 243, 235))  //les coordonnées
&& (bmp.GetPixel(213, 365) != Color.FromArgb(250, 243, 235))      //sont fictivent et
&& (bmp.GetPixel(251, 353) != Color.FromArgb(250, 243, 235))      //présentent pour
&& (bmp.GetPixel(351, 356) != Color.FromArgb(250, 243, 235)));    //la compréhension


J'ai faillit oublier, je n'est pas d'acces au processus appelé, il n'est pas de moi
A voir également:

4 réponses

christboy Messages postés 157 Date d'inscription jeudi 31 mai 2007 Statut Membre Dernière intervention 30 juillet 2008 20
30 juil. 2008 à 00:01
Personne voit ? ^^"
-1
wiederhe Messages postés 53 Date d'inscription mardi 29 juillet 2008 Statut Membre Dernière intervention 25 mars 2013 7
30 juil. 2008 à 00:13
Bonsoir,

Le principe est le suivant.
Tu récupère le Handle de la fenêtre ouverte par le process en utilisant le membre process.handle.
Le handle de la fenêtre s'obtient par des appels d'API windows. Tu trouveras le code à l'adresse suivante:

https://support.microsoft.com/en-us/help/242308

C'est du VB mais ce ne sont que des appels d'API donc facile à convertir en C#.
Tu mets le focus sur la fenêtre et tu affectes l'objet bitmap correspondant.

J'espère que ça t'aidera.

Hervé
-1
christboy Messages postés 157 Date d'inscription jeudi 31 mai 2007 Statut Membre Dernière intervention 30 juillet 2008 20
30 juil. 2008 à 12:40
j'ai deja tenté ce genre de chose avec proc.Handle et la classe Bitmap mais impossible de trouver une méthode qui s'applique a un processus on a le choix en Hbitmap, ressource, FIle, Icon, ou un flux :') (j'ai tenter avec ressource mais rien a faire ^^".

Merci de ta réponse.
-1
christboy Messages postés 157 Date d'inscription jeudi 31 mai 2007 Statut Membre Dernière intervention 30 juillet 2008 20
30 juil. 2008 à 13:11
pour ceux qui sont dans le même cas que moi sachez que wiederhe etait sur la bonne voie en parlant des API.
la solution se trouve ici : http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=3301647&SiteID=1
-1