10
votes

Comment puis-je simuler un clic à double souris sur la fenêtre (I Khow Maniping) sur X, Y Coordonnée, en utilisant SendInput?

Comment puis-je simuler un clic à double souris sur la fenêtre (je connais la poignée de cette fenêtre) sur la coordonnée X, Y, à l'aide de SendInput?


0 commentaires

5 Réponses :


1
votes

Il y a un morceau de code dans Ce site . Essayez d'utiliser la fonction gaucherclick () deux fois de suite. Cela fait l'affaire selon Ce gars .


0 commentaires

18
votes
RECT rect;
GetWindowRect(hwnd, &rect);

HWND phwnd = GetForegroundWindow();

SetForegroundWindow(hwnd);

DoubleClick(rect.left + x, rect.top + y);

SetForegroundWindow(phwnd); // To activate previous window

0 commentaires

2
votes

Vous pouvez spécifier votre objectif (meilleur) ou la méthode, mais si vous essayez de spécifier les deux, plus souvent que la réponse ne sera pas "qui ne fonctionne pas comme ça".

sendinput ne fonctionne pas comme ça, il simule l'activité de la souris sur l'écran, qui sera livrée à la fenêtre visible à cet endroit (ou a la capture de souris), pas la fenêtre de votre choix.

Pour diffuser un double-clic à une fenêtre spécifique, essayez postmessage (hwnd, wm_lbuttondblck, 0, maquedword (x, y)) .


0 commentaires

4
votes

Ceci simulera un double clic à certaines coordonnées xxx


0 commentaires

0
votes

Étant donné que ma «réputation» n'est pas assez élevée (encore), j'aimerais commenter la solution de # Fardjad: cela fonctionne bien, mais on pourrait ajouter à la suite de la routine "principale":

SetForegroundWindow(hwnd);
SetCursorPos(rect.left + x, rect.top + y);
// which shows your current mouseposition...
// during my testing, I used a _getch() so that I actually could verify it
Sleep(nWinSleep);
// delay the mouseclick, as window might not get to foreground quick enough;
   took me awhile to figure this one out...
DoubleClick(rect.left + x, rect.top + y);


0 commentaires