IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Comment récupérer les informations d'une fenêtre dans autre application? [Débutant]


Sujet :

C#

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 11
    Par défaut Comment récupérer les informations d'une fenêtre dans autre application?
    Bonjour,

    Au sein de mon travail il y a une application permettant de suivre l'état de certains appareils au sol via des caméras. Cette application est alimenté par des vidéos qui représente le passage au-dessus de ces appareils. D'un autre côté des lasers mesures certaines données relatives à ces derniers. Un graphique peut être extrait des mesures lasers.
    3 fenêtres de visualisions vidéos (3 angles différents) sont disponible. Et on peut afficher une petite fenêtre pop-up sur n'importe laquelle de ces 3 fenêtres.
    Mon but est de pouvoir récupérer certaines informations contenues dans cette pop-up.
    Si je peut récupérer le temps (qui change continuellement en fonction de l'avancement de la vidéo) je pourrais synchroniser les données laser du graphique avec la lecture des vidéos.
    Voici un code que j'ai réussi à trouver, mais je n'arrive pas à accéder à la fenêtre pop-up s'intitulant "Track information - RailCheck" fille de la fenêtre "ImageViewer - RailScan FrontRear"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
     
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Runtime.InteropServices;
    using System.Text;
     
    namespace ConsoleApplication2
    {
        class Program
        {
     
            static void Main(string[] args)
            {
                List<WinText> windows = new List<WinText>();
     
                //find the "first" window
                IntPtr hWnd = FindWindow("Track Information - RailScan", null);
     
                while (hWnd != IntPtr.Zero)
                {
                    //find the control window that has the text
                    IntPtr hEdit = FindWindowEx(hWnd, IntPtr.Zero, "edit", null);
     
                    //initialize the buffer.  using a StringBuilder here
                    System.Text.StringBuilder sb = new System.Text.StringBuilder(255);  // or length from call with GETTEXTLENGTH
     
                    //get the text from the child control
                    int RetVal = SendMessage(hEdit, WM_GETTEXT, sb.Capacity, sb);
     
                    windows.Add(new WinText() { hWnd = hWnd, Text = sb.ToString() });
     
                    //find the next window
                    hWnd = FindWindowEx(IntPtr.Zero, hWnd, "Track information - RailCheck", null);
                }
     
                //do something clever
                windows.OrderBy(x => x.Text).ToList().ForEach(y => Console.Write("{0} = {1}\n", y.hWnd, y.Text));
     
                Console.Write("\n\nFound {0} window(s).", windows.Count);
                Console.ReadKey();
            }
     
            private struct WinText
            {
                public IntPtr hWnd;
                public string Text;
            }
     
            const int WM_GETTEXT = 0x0D;
            const int WM_GETTEXTLENGTH = 0x0E;
     
            [DllImport("user32.dll", SetLastError = true)]
            public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
     
            [DllImport("user32.dll", SetLastError = true)]
            public static extern int SendMessage(IntPtr hWnd, int msg, int Param, System.Text.StringBuilder text);
     
            [DllImport("user32.dll", SetLastError = true)]
            public static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);
     
        }
    }
    Est-ce que quelqu'un a une idée de la façon de s'y prendre ?
    En pièce jointe la photo de la fenêtre en question et de sa pop-up. et la 2eme image correpsond à la capture des informations de la pop-up par le logiciel WinSpy++. Si ça peut aider... MERCI :D

    Cordialement,
    Ephem
    os : Win 7 pro SP1
    ide : MS Visual studio Express 2013
    Images attachées Images attachées   

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 27/07/2010, 12h59
  2. [AC-2000] Comment récupérer les informations d'une listbox
    Par Remus91 dans le forum IHM
    Réponses: 2
    Dernier message: 26/05/2009, 14h53
  3. Réponses: 3
    Dernier message: 13/03/2009, 15h20
  4. Réponses: 3
    Dernier message: 10/03/2006, 14h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo