¿Cómo puedo simular un doble clic de ratón en la ventana (conozco el manejo de esta ventana) en coordenadas x, y, usando SendInput?¿Cómo puedo simular un doble clic del ratón en la ventana (i khow handle) en coordenadas x, y, usando SendInput?
Respuesta
void DoubleClick(int x, int y)
{
const double XSCALEFACTOR = 65535/(GetSystemMetrics(SM_CXSCREEN) - 1);
const double YSCALEFACTOR = 65535/(GetSystemMetrics(SM_CYSCREEN) - 1);
POINT cursorPos;
GetCursorPos(&cursorPos);
double cx = cursorPos.x * XSCALEFACTOR;
double cy = cursorPos.y * YSCALEFACTOR;
double nx = x * XSCALEFACTOR;
double ny = y * YSCALEFACTOR;
INPUT Input={0};
Input.type = INPUT_MOUSE;
Input.mi.dx = (LONG)nx;
Input.mi.dy = (LONG)ny;
Input.mi.dwFlags = MOUSEEVENTF_MOVE | MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP;
SendInput(1,&Input,sizeof(INPUT));
SendInput(1,&Input,sizeof(INPUT));
Input.mi.dx = (LONG)cx;
Input.mi.dy = (LONG)cy;
Input.mi.dwFlags = MOUSEEVENTF_MOVE | MOUSEEVENTF_ABSOLUTE;
SendInput(1,&Input,sizeof(INPUT));
}
Puede utilizar GetWindowRect() para obtener la posición de la ventana de su mango y pasar relativa x
y y
a la función de DoubleClick:
RECT rect;
GetWindowRect(hwnd, &rect);
HWND phwnd = GetForegroundWindow();
SetForegroundWindow(hwnd);
DoubleClick(rect.left + x, rect.top + y);
SetForegroundWindow(phwnd); // To activate previous window
Hay un fragmento de código en this website. Intente utilizar la función LeftClick()
dos veces seguidas. Eso hace el truco según this guy.
Puede especificar su objetivo (el mejor) o el método, pero si intentas especificar ambos, la mayoría de las veces la respuesta será "eso no funciona así".
SendInput
no funciona de esa manera, simula la actividad del mouse en la pantalla, que se entregará a cualquier ventana visible en esa ubicación (o tiene captura de mouse), no la ventana de su elección.
Para entregar un doble clic en una ventana específica, intente PostMessage(hwnd, WM_LBUTTONDBLCLK, 0, MAKEDWORD(x, y))
.
Esto simulará un doble clic en ciertas coordenadas
SetCursorPos(X,Y);
mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP,0,0,0,0);
Desde mi 'reputación' no es lo suficientemente alta (aún), me gustaría hacer comentarios sobre la solución # de fardjad: funciona muy bien, pero uno podría agregar siguiente a la rutina "principal":
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);
- 1. simular el movimiento del ratón en Ubuntu
- 2. Simular clics en coordenadas x/y con javascript
- 3. Cómo simular un clic utilizando las coordenadas x, y en JavaScript?
- 4. La detección de un solo clic del ratón en MFC
- 5. Simular rasgar un doble en C#
- 6. win32: simular un clic sin simular el movimiento del mouse?
- 7. Simular clic real del mouse
- 8. ¿Cómo se detecta un doble clic con el botón izquierdo del ratón en WPF?
- 9. SVG Captura de coordenadas del ratón
- 10. Cómo encontrar las coordenadas del centro x del elemento y la compensación de la ventana relacionada
- 11. python win32 simular haga clic en
- 12. ¿Cómo puedo simular un clic en una etiqueta de anclaje?
- 13. ¿Cómo evitar un doble clic usando jQuery?
- 14. no puede recuperar correctamente las coordenadas del ratón después de cambiar el tamaño de una ventana
- 15. Botón derecho del ratón de la manija Haga doble clic para la forma
- 16. ¿Cómo puedo simular un clic del mouse en una posición determinada en la pantalla?
- 17. usando el mouse con sendInput en C
- 18. Obtener la posición del ratón en desplazamiento
- 19. Javascript: simular un clic en un enlace
- 20. Cómo obtener coordenadas del mundo real (x, y, z) desde un objeto distinto usando un Kinect
- 21. Realización de un doble clic desde CGEventCreateMouseEvent()
- 22. ¿Cómo simular un botón hacer clic usando el código?
- 23. SendInput y 64bits
- 24. Qt Cómo buscar un objeto en un widget usando la posición x() y y()
- 25. Interceptar clic simple o doble del mouse - solo ejecutar doble clic en el código al hacer doble clic
- 26. 2D XNA ratón del juego, haga clic en
- 27. ¿Cómo puedo ver los eventos de un solo clic y doble clic en WPF FrameworkElement?
- 28. Encuadernación a X Y coordenadas del elemento en WPF Canvas
- 29. Distinguir entre un solo clic y doble clic en Java
- 30. ¿Cómo puedo detener un doble clic de la barra de título de la ventana de maximizar una ventana de FormBorderStyle.FixedToolWindow?