KroOon
Messages postés10Date d'inscriptionmardi 10 juin 2008StatutMembreDernière intervention 5 octobre 2009
-
30 déc. 2008 à 15:01
ed73
Messages postés276Date d'inscriptionlundi 8 septembre 2008StatutMembreDernière intervention15 avril 2013
-
30 déc. 2008 à 19:43
Voila j' essaye de simuler un clik sur une fenétre en arriére plan dont j' ai l' id.
J' ai donc utilisé ceci :
Une fonction simulant un Clik de souris a un endroit donné par le paramétre 'ip'.
private
void clik(
IntPtr id,
int ip){
if (id == _id1){
SendMessage((
int)_id2, 0x201, 0x00000001, ip);SendMessage((
int)_id2, 0x202, 0x00000000, ip);
Thread.Sleep(200);}
else
if (id == _id2){
SendMessage((
int)_id1, 0x201, 0x00000001, ip);
SendMessage((
int)_id1, 0x202, 0x00000000, ip);
Thread.Sleep(200);}
}
----------------------------------------------------------------------------------------------------------------------
Or mon paramétre ip me pause probléme.
Je me suis donc positionné sur la fenétre en premier plan .. Possédant l' ID1
et j' ai testé un clik sur l' ID2
Pour essfectuer mon Clik je mi suis pris comme ceci :
//Ici je Construit mon paramétre LPARAM qui est 'ip'
// J' obtien un int32 Contenant ma Position Y suivi de celle de X
Int32
iples =
Convert.ToInt32(
Convert.ToString(YPositionFin) +
Convert.ToString(XPositionFin));
// Je Convertis cette position dans un format comphréensible par la fonction sendmessage();
Int32 iple =
Convert.ToInt32(
"0x" + iples ,16);
// Enfin je simule un Clik de Mon ID1 ==> Donc le clik est a effectuer sur l' Id2 daprés ma fonction Clik
this.clik(_id1,iple
);
----------------------------------------------------------------------------------------------------------------------
Voila Mon probléme .. si je reléve les informations ki traversent mon Application ID2
je reléve bien une demande de Clik cepandant les coordonnées ne sont pas bonnes ..
J' Obtien de X de valeur -3000(+-) et des Y de valeur 10(+-)
J' en conclu que j' ai un probléme dans la conception de mon paramétre LPARAM ( ip )
Quelqu'un ayant compris quelquechose pourais t' il m' aider ?
J' ai essayé :
lParam l = MAKELPARAM(XPositionFin, YPositionFin);
J' ai obtenu les erreurs suivantes :
Erreur 1 Le type ou le nom d'espace de noms 'lParam' est introuvable (une directive using ou une référence d'assembly est-elle manquante ?) C:\Documents and Settings\...\DoX\Class1.cs 1702 20 DoX
Erreur 2 Le nom 'MAKELPARAM' n'existe pas dans le contexte actuel C:\Documents and Settings\...\DoX\Class1.cs 1702 31 DoX
En tt cas ton Aide est trés précieuses .. j' avance a pas de Géant .. ^^'
Vous n’avez pas trouvé la réponse que vous recherchez ?
MAKELPARAM est équivalent à MAKELONG. MAKELONG construit un entier 32 bits à partir de deux entiers 16 bits. Il décale le deuxième entier passé en paramètre dans les 16 bits de poid fort de l'entier 32 bits.
Sauf erreur, tu peux le réécrire comme ça :
int MakLParam(int low, int high)
{
return low + high * 0x10000
}
Multiplier par 0x10000 = 65536 revient à décaler de 16 bits.