Bonjour à tous,
Je viens vous embêter car après deux bonnes heures de prise de tête, je ne vois pas l’issue à mon problème.

Le contexte :
- J’ai un Notepad d’ouvert, dans lequel j’ai tapé du texte.
- Je récupère le bon Handle de mon Notepad (ça je sais faire, et Spy++ me le confirme).
- Je récupère le bon Handle de la zone de saisie de texte (ça aussi j’y arrive, Spy++ me le confirme également, et récupère bien le texte que j’ai saisi dans le susnommé Notepad).
- Je tente donc de récupérer, via le Handle de ma zone de saisie, le texte que cette dernière contient (sans succès, et c’est à n’y rien comprendre).

Un morceau de code (je vous fais grâce des déclaration concernant l’api) :

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
    class Program
    {
        #region WinAPI
 
[...]
 
        #endregion
 
        static void Main(string[] args)
        {
            IntPtr win      = GetWindow("Notepad");
            IntPtr control  = GetControl(win, "Edit");
 
            string text     = GetText(control);
 
            Console.WriteLine(text);
        }
 
        public static IntPtr GetWindow(string className)
        { return FindWindow(className, null); }
 
        public static IntPtr GetControl(IntPtr hWnd, string className)
        { return FindWindowEx(hWnd, IntPtr.Zero, className, IntPtr.Zero); }
 
        public static string GetText(IntPtr hWnd)
        {
            int length = GetWindowTextLength(hWnd);
 
            StringBuilder sb = new StringBuilder(length + 1);
            GetWindowText(hWnd, sb, sb.Capacity);
            return sb.ToString();
        }
    }
Ma fonction GetText(IntPtr hWnd) fonctionne parfaitement sur le Handle de ma fenêtre (il me retourne le titre de ma fenêtre en somme), mais rien à faire sur le control « Edit » qu’elle contient (et je le répète, le Handle de « Edit » est pourtant tout à fait correct).
Où est mon erreur ? je vénèrerai mon sauveur =D


(ps : j'ai vu -grace à mon ami google- des bribes de conversation faisant référence à 'sendMessage' ou encore 'GetDlgItemText', mais à part tourner en rond, je n'ai pas réussi à aboutir à quoi que ce soit).