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? P>
5 Réponses :
RECT rect; GetWindowRect(hwnd, &rect); HWND phwnd = GetForegroundWindow(); SetForegroundWindow(hwnd); DoubleClick(rect.left + x, rect.top + y); SetForegroundWindow(phwnd); // To activate previous window
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". P>
Pour diffuser un double-clic à une fenêtre spécifique, essayez sendinput code> 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. p>
postmessage (hwnd, wm_lbuttondblck, 0, maquedword (x, y)) code>
. p>
Ceci simulera un double clic à certaines coordonnées
É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);