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) :
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).
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(); } }
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).
Partager