Untitled
unknown
c_cpp
5 months ago
2.7 kB
5
Indexable
#include <windows.h> #include <string> // Definimos el IOCTL para comunicarnos con el driver #define IOCTL_MOUSE_MOVE CTL_CODE(FILE_DEVICE_UNKNOWN, 0x800, METHOD_BUFFERED, FILE_ANY_ACCESS) // Definimos las macros para clics del mouse #define MOUSE_LEFT_BUTTON_DOWN 0x0001 #define MOUSE_LEFT_BUTTON_UP 0x0002 // Estructura para enviar datos al driver typedef struct _MOUSE_INPUT { long x; // Movimiento en el eje X long y; // Movimiento en el eje Y unsigned short button_flags; // Flags para clics del mouse } MOUSE_INPUT; // adding error handling since std::cerr is not working void LogErrorWithCode(const wchar_t* message) { DWORD error = GetLastError(); wchar_t buffer[256]; swprintf_s(buffer, 256, L"%s (Error code: %lu)\n", message, error); OutputDebugString(buffer); } // Función para mover el mouse void MoveMouse(HANDLE hDevice, long x, long y, unsigned short button_flags = 0) { MOUSE_INPUT input = { x, y, button_flags }; // Preparamos la estructura DWORD returned; if (!DeviceIoControl( hDevice, // Handle del driver IOCTL_MOUSE_MOVE, // Código IOCTL definido &input, // Datos de entrada sizeof(input), // Tamaño de los datos de entrada nullptr, // Sin datos de salida 0, // Tamaño de datos de salida &returned, // Bytes devueltos nullptr // Sin estructura OVERLAPPED )) { LogErrorWithCode(L"Error al mover el mouse"); } } int main() { // Abrimos una conexión con el driver HANDLE hDevice = CreateFile( L"\\\\.\\MouseDriver", // Nombre simbólico del driver (Unicode) GENERIC_READ | GENERIC_WRITE, // Permisos 0, // No compartir nullptr, // Sin seguridad adicional OPEN_EXISTING, // Abrir un dispositivo existente 0, // Atributos normales nullptr // Sin handle de template ); if (hDevice == INVALID_HANDLE_VALUE) { LogErrorWithCode(L"No se pudo abrir el driver"); return 1; } // Ejemplo: mover el mouse 100 píxeles a la derecha y 50 píxeles hacia abajo MoveMouse(hDevice, 100, 50); // Ejemplo: realizar un clic izquierdo MoveMouse(hDevice, 0, 0, MOUSE_LEFT_BUTTON_DOWN); // Ejemplo: mover el mouse hacia la izquierda y liberar el clic MoveMouse(hDevice, -100, -50, MOUSE_LEFT_BUTTON_UP); // Cerramos la conexión con el driver CloseHandle(hDevice); return 0; }
Editor is loading...
Leave a Comment