Mouse [Résolu]

Signaler
Messages postés
264
Date d'inscription
vendredi 12 décembre 2003
Statut
Membre
Dernière intervention
12 juin 2013
-
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
-
Bonjour,

Je travaille actuellement sur un projet de type VNC. L'appli doit fonctionner
uniquement en réseau interne.

Dans un premier temps je souhaite positionner la sourie sur le bouton
"démarrer' de Windows et simuler le click.

Mon pb est doubles. En effet, la propriété "Mouseposition" est en
lecture uniquement et par conséquent je ne peux pas positionner la sourie au
dessus du bouton "démarrer". De plus, si je trouve une méthode pour
positionner la sourie au dessus du bouton comment faire pour simuler le click?


Merci de vos réponses.


PS: si vous avec des adresse Internet ou il est possible de trouver du code sur
un équivalent VNC en c# je suis preneur.


A+

6 réponses

Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
54
Salut,
La question avait déjà été posée et coq y avait répondu. Voici ce qu'il proposait (tu peux retrouver le topic de ce sujet ici) :

#region API: methodes

[DllImport("user32.dll")]
privatestaticexternint SendInput(
int nInputs,
ref INPUT pInputs,
int cbSize
);

[DllImport("user32.dll")]
privatestaticextern IntPtr GetMessageExtraInfo();

#endregion

#region API: constantes

privateconstuint INPUT_MOUSE = 0;
privateconstuint MOUSEEVENTF_LEFTDOWN = 0x0002;
privateconstuint MOUSEEVENTF_LEFTUP = 0x0004;

#endregion

#region API: structures

[StructLayout(LayoutKind.Explicit)]
privatestruct INPUT
{
[FieldOffset(0)]
publicuint type;
[FieldOffset(4)]
public MOUSEINPUT mi;
}

privatestruct MOUSEINPUT
{
publicint dx;
publicint dy;
publicuint mouseData;
publicuint dwFlags;
publicuint time;
public IntPtr dwExtraInfo;
}

#endregion

Exemple d'utilisation (ça fait un clic sur mon menu démarrer, wahou :p) :
 Cursor.Position = new Point(10, 1010);
// clic
INPUT input = new INPUT();
input.type = INPUT_MOUSE;
input.mi.dwFlags = MOUSEEVENTF_LEFTDOWN;
SendInput(1, ref input, Marshal.SizeOf(input));
input.mi.dwFlags = MOUSEEVENTF_LEFTUP;
SendInput(1, ref input, Marshal.SizeOf(input));

<hr size="2" /> VC# forever
=13319
Messages postés
264
Date d'inscription
vendredi 12 décembre 2003
Statut
Membre
Dernière intervention
12 juin 2013
3
Merci Bidou
Messages postés
264
Date d'inscription
vendredi 12 décembre 2003
Statut
Membre
Dernière intervention
12 juin 2013
3
Si je peux me permette Bidou.


Actuellement l'utilisation da la sourie fonctionne très bien
et je peux ouvrir fermer l'ensemble des applications a distance. Il y a un
petit soucie au niveau de l'écriture je m'explique. J'ouvre un document Word. Lorsque
je tape sur le clavier "TOTO", je n'est pas de problème pour récupérer
les touches enfoncer. Mais comment je fais pour dire a l'ordinateur distant d'écrire
"TOTO".


Comme toujours si tu as une idée je prend si non est ce que tu as des link


Merci d'avance pour ton aimable collaboration


PS: Je pense que mettrai le programme une fois fini sur le site.
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
38
Salut, tu peux simuler l'appuie d'une touche du clavier avec SendInput comme dans l'exemple précédent, ou avec la classe managée SendKeys + la fonction win32 SetForegroundWindow ou si tu préfère cibler une fenêtre particlière FindWindow + PostMessage.
Messages postés
264
Date d'inscription
vendredi 12 décembre 2003
Statut
Membre
Dernière intervention
12 juin 2013
3
Je rencontre de + en + la fonction "SendInput". Il me semble qu'elle a un potentiel enorme. Est ce que vous avez des link ou de la doc sur cette fonction
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
38
C'est normal elle remplace keybd_event et mouse_event.

MSDN : >> SendInput <<