J'essaie de faire de Teamviewer un logiciel amusant, qui permet à une personne de voir l'écran d'une autre personne et de cliquer sur tout ça. Quoi qu'il en soit, j'ai la plupart des choses de socket, mais je ne sais pas comment faire pour que les clics de la souris fonctionnent correctement. Voici le code que je trouve en ligne pour déplacer la souris programme:Déplacer la souris en C# (unités de coordonnées)
public static class VirtualMouse
{
// import the necessary API function so .NET can
// marshall parameters appropriately
[DllImport("user32.dll")]
static extern void mouse_event(int dwFlags, int dx, int dy, int dwData, int dwExtraInfo);
// constants for the mouse_input() API function
private const int MOUSEEVENTF_MOVE = 0x0001;
private const int MOUSEEVENTF_LEFTDOWN = 0x0002;
private const int MOUSEEVENTF_LEFTUP = 0x0004;
private const int MOUSEEVENTF_RIGHTDOWN = 0x0008;
private const int MOUSEEVENTF_RIGHTUP = 0x0010;
private const int MOUSEEVENTF_MIDDLEDOWN = 0x0020;
private const int MOUSEEVENTF_MIDDLEUP = 0x0040;
private const int MOUSEEVENTF_ABSOLUTE = 0x8000;
// simulates movement of the mouse. parameters specify changes
// in relative position. positive values indicate movement
// right or down
public static void Move(int xDelta, int yDelta)
{
mouse_event(MOUSEEVENTF_MOVE, xDelta, yDelta, 0, 0);
}
// simulates movement of the mouse. parameters specify an
// absolute location, with the top left corner being the
// origin
public static void MoveTo(int x, int y)
{
mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE, x, y, 0, 0);
}
// simulates a click-and-release action of the left mouse
// button at its current position
public static void LeftClick()
{
mouse_event(MOUSEEVENTF_LEFTDOWN, Control.MousePosition.X, Control.MousePosition.Y, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, Control.MousePosition.X, Control.MousePosition.Y, 0, 0);
}
}
Maintenant, je veux déplacer la souris en utilisant la méthode MoveTo, mais il nécessite un nombre élevé fous pour tout mouvement. Y at-il de toute façon que je peux faire correspondre les coordonnées pour déplacer ici à la position sur l'écran en pixels? Désolé si cela semble une question évidente, mais j'ai googlé pendant près d'une heure et je ne peux trouver aucune discussion sur les unités qui sont utilisées pour la position de la souris x et y, donc je ne peux pas mettre en place une sorte de formule pour faire correspondre les clics sur un panneau à des clics sur l'écran de l'utilisateur.
['Cursor.Position'] (http://msdn.microsoft.com/en-us/library/system.windows.forms.cursor.position.aspx) semble prometteur. – chris