Petit coups de pouce sur SendMessage

Résolu
georgeduke
Messages postés
167
Date d'inscription
dimanche 6 février 2005
Statut
Membre
Dernière intervention
13 avril 2007
- 17 juil. 2005 à 17:48
cs_coq
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Membre
Dernière intervention
2 août 2014
- 28 avril 2007 à 19:09
Salut,


Malgré toutes les infos que j'ai trouvé ici et là, des choses me
manquent pour utiliser correctement SendMessage(..) de user32.dll.

Depuis mon programme en C#, je souhaite "simuler" la pression de la
touche F5 vers une application externe dont je réussi à identifier le
handle. Voilà où j'en suis au niveau de mon source.... J'ai bon ?? lol



using System;

using System.Runtime.InteropServices;

using ...;



[...]

[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);
[...]

//code du bouton suivant qui simule une pression de la touche F5 sur la
fenetre dont le titre est "UNLOAD.SQL - SQLTalk for Windows"

void B_SuivantClick(object sender, System.EventArgs e)

{

int hwnd = FindWindowEx(0, 0, 0, "UNLOAD.SQL - SQLTalk for Windows");

if (hwnd != 0) {

rtb_etapes.Text += hwnd.ToString();





SendMessage(hwnd, WM_KEYDOWN,VK_F5, 0);

System.Threading.Thread.Sleep(100);

SendMessage(hwnd, WM_KEYUP,VK_F5, 0);



}

}



=> Le problème est tout simple : Quelles sont les valeurs que
doivent prendre "WM_KEYDOWN" et de "VK_F5" pour que SendMessage
puisse fonctionner ?



Ps : J'ai vu que "Coq" a réussi a trouvé la valeur de WM_LBUTTONDOWN (=
0x0201) pour simuler la pression clic_gauche avec la souris - je ne
sais pas comment il a fait



Un petit coups de pouce serait vraiment sympa !

11 réponses

cs_coq
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Membre
Dernière intervention
2 août 2014
99
17 juil. 2005 à 17:57
Salut,

Par exemple pour WM_KEYDOWN :
"Header Declared in Winuser.h", un des fichiers du PlatformSDK.

Tu le trouveras dans ce rep là par défaut si tu utilises VS : C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include

Tu y trouveras :
#define WM_KEYDOWN 0x0100

:-)

Cocoricoooooooo !!!!
coq
MVP Visual C#
3