Partage
  • Partager sur Facebook
  • Partager sur Twitter

Besoin d'aide, très gros problème [Win32 C#]

Sujet résolu
    6 mai 2019 à 19:12:52

    Bonjour/Bonsoir, alors voilà, j'ai un très gros problème.

    Je m'explique : En fait j'ai besoin de récupérer un handle d'une fenêtre et de vérifier son titre pour voir si c'est bien la bonne instance de la fenêtre avec ce code ci-dessous :

            [DllImport("user32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
            public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
            [DllImport("user32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
            public static extern IntPtr GetWindowText(IntPtr hWnd, StringBuilder lpString, int nMaxCount);
            [DllImport("user32.dll", CharSet = CharSet.Unicode, SetLastError = true)]

    Donc ici les DLLImport qui sont bien fait

    Et maintenant le reste : 

                IntPtr hFenetre = FindWindow("NomDeLaClasse", "NomDeLaFenetre");
                System.Text.StringBuilder titre = new System.Text.StringBuilder("");
                IntPtr d = GetWindowText(hFenetre, titre, 100);
                string a = hFenetre.ToString();
                string b = titre.ToString();
                MessageBox.Show(b);

    Voilà, en théorie je devrais récupérer le titre de la fenêtre .. mais bien que le handle soit effectivement trouvé, impossible de récupérer le titre de la fenêtre .. 

    Pour récupérer le titre de la fenêtre il faut que cette dernière soit en ForeGround et j'avoue que je n'ai pas très envie de devoir la faire passer devant pour pouvoir récupérer le titre, je vous remercie de bien vouloir m'aider

    Aussi (si quelqu'un peut m'aider à comprendre ce que je dois mettre dans "NomDeLaFenetre" car j'ai essayé tout les titres possibles sur toutes les applications possible et le handle vaut toujours 0 encore une fois je vous remercie)

    • Partager sur Facebook
    • Partager sur Twitter
      9 mai 2019 à 17:09:01

      https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-findwindoww
      https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-getwindowtextw

      Attention à la 3ème phrase de la documentation de "GetWindowTextW".

      Utilisez l'outil Spy++ de Visual Studio pour voir/espionner les fenêtres et voir comment elles se comportent "en vrai".

      >je devrais récupérer le titre de la fenêtre

      Heu, non, c'est vous qui fournissez le titre de la fenêtre à "FindWindow".

      > impossible de récupérer le titre de la fenêtre

      Heu, c'est le second argument de "FindWindow".

      >il faut que cette dernière soit en ForeGround

      Peut-être une action de l'application que vous espionnez, non ?

      C'est quoi votre vrai besoin initial, parce que là, votre solution, vous allez vous prendre potentiellement de bons gros coups de bâton de la sécurité de l'OS.

      • Partager sur Facebook
      • Partager sur Twitter
      Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
        11 mai 2019 à 4:52:25

        Mon problème à été résolu, en fait, je pense que j'écrivais mal le titre de la fenêtre et que donc le HANDLE resté NULL ça fonctionne maintenant =)

        Merci d'avoir pris le temps me répondre

        • Partager sur Facebook
        • Partager sur Twitter

        Besoin d'aide, très gros problème [Win32 C#]

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown