Soyez le premier à donner votre avis sur cette source.
Vue 20 121 fois - Téléchargée 853 fois
//Faire un projet "Console" et copier ceci //#define STRING // ligne à décommenter pour STRING, à commenter pour STRINGBUILDER using System; using System.Runtime.InteropServices; using System.Text;//pour le StringBuilder class Test { private const int WM_GETTEXTLENGTH = 14;//pour utilisation de SendMessage private const int WM_GETTEXT = 13;//pour utilisation de SendMessage [DllImport("user32.dll", EntryPoint="FindWindowEx")] public static extern int FindWindowEx ( int hwndParent, int hwndEnfant, int lpClasse, string lpTitre); [DllImport("user32.dll", EntryPoint="SendMessage")] public static extern int SendMessage ( int hwnd, uint wMsg, int wParam, int lParam); [DllImport("user32.dll", EntryPoint="SendMessage")] public static extern int GetControlText ( //renommée pour spécialisation du dernier param #if STRING int hwnd, uint wMsg, int wParam, string lParam);//lParam : récupération du texte #else int hwnd, uint wMsg, int wParam, StringBuilder lParam);//lParam : récupération du texte #endif static void Main(string[] args) { Console.WriteLine("titre de la fenetre a scanner"); string titre = Console.ReadLine(); int hwnd = FindWindowEx(0, 0, 0, titre); if (hwnd==0) {Console.WriteLine("Erreur, fenêtre non trouvée"); return ;} Console.WriteLine("hwnd Parent = {0}",hwnd); Console.WriteLine("Liste des contrôles enfants:"); int hwndEnfant=FindWindowEx(hwnd, 0, 0, null); while (hwndEnfant!=0) { int lgTexte = SendMessage(hwndEnfant, WM_GETTEXTLENGTH, 0, 0) + 1; #if STRING string sbTitre = new string('0',lgTexte); #else StringBuilder sbTitre = new StringBuilder(lgTexte); #endif GetControlText(hwndEnfant, WM_GETTEXT, lgTexte, sbTitre); Console.WriteLine("hwnd={0} => {1}", hwndEnfant, sbTitre); hwndEnfant=FindWindowEx(hwnd, hwndEnfant, 0, null); } Console.WriteLine("Tapez sur une touche..."); Console.Read(); } }
25 nov. 2008 à 16:04
désole je n'arrive pas à faire fonctionner l'exemple je n'ai pas la fenetre dos et je clique sur ok
l'appli s'arrete
19 janv. 2007 à 16:30
Par contre, comment faire pour que ça marche avec des fenêtres à l'intérieur de la fenêtre principale (MDI)?là je vois pas...
Merci.
Steph
19 janv. 2007 à 14:40
Merci d'avance pour vos réponses
Steph
28 févr. 2006 à 16:48
A bientôt,
Seb.
7 févr. 2006 à 11:16
exemple:
private const int WM_SETTEXT = 12;
reponse a la deuxieme question:
GetControlText() c'est un allias de SendMessage(); tu peux le renommer bon te semble.
pour envoyer le text a une fenetre:
[DllImport("user32.dll", EntryPoint = "SendMessage")]
public static extern int SetControlText( //renommée pour spécialisation du dernier param
int hwnd, uint wMsg, int wParam, string lParam);//lParam : texte a envoyer dans hwnd
exemple:
SetControlText(hwnd, WM_SETTEXT, 0, tontext);
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.