Можно ли смоделировать движение мыши и щелчки мышью в скрытом окне?

Так есть ли способ заставить мое приложение Win32 «думать», что мышь перемещается по своему окну и делает несколько щелчков, когда фактическое окно скрыто (я имею в виду ShowWindow(hWnd, SW_HIDE);)?

Я пытался симулировать движение мыши PostMessage а также SendMessage но пока не повезло.

int x = 0;
int y = 0;
while (true)
{
SendMessage(hwnd, WM_MOUSEMOVE, 0, MAKELPARAM(x, y));
x += 10;
y += 10;
Sleep(100);
}

Это вообще возможно?

3

Решение

Да, это возможно. Это тестовое скрытое окно:

#define UNICODE
#include <Windows.h>
#include <Strsafe.h>
#include <Windowsx.h>

LRESULT CALLBACK WndProc(HWND Hwnd, UINT Msg, WPARAM WParam, LPARAM LParam);

INT CALLBACK
WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
INT nCmdShow)
{
WNDCLASSEX WndClass;

ZeroMemory(&WndClass, sizeof(WNDCLASSEX));

WndClass.cbSize           = sizeof(WNDCLASSEX);
WndClass.lpfnWndProc      = WndProc;
WndClass.hInstance        = hInstance;
WndClass.lpszClassName    = L"HiddenWinClass";

if(RegisterClassEx(&WndClass))
{
HWND Hwnd;
MSG Msg;

Hwnd = CreateWindowEx(0, L"HiddenWinClass", L"Nan",
0, 0, 0, 0, 0, NULL, NULL, hInstance, NULL);

if(Hwnd)
{
UpdateWindow(Hwnd);
ShowWindow(Hwnd, SW_HIDE);
while(GetMessage(&Msg, 0, 0, 0) > 0)
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
}
}

return 0;
}LRESULT CALLBACK
WndProc(HWND Hwnd,
UINT Msg,
WPARAM WParam,
LPARAM LParam)
{
TCHAR Message[255];

switch(Msg)
{
case WM_MOUSEMOVE:
StringCbPrintf(Message, sizeof(Message), L"(%d, %d)",
GET_X_LPARAM(LParam), GET_Y_LPARAM(LParam));
MessageBox(NULL, Message, L"WM_MOUSEMOVE", MB_OK);
break;
default:
return DefWindowProc(Hwnd, Msg, WParam, LParam);
}

return 0;
}

и это твой код:

#define UNICODE
#include <Windows.h>

int
main(int argc, char **argv)
{
HWND Hwnd;

if((Hwnd = FindWindow(L"HiddenWinClass", L"Nan")))
{
int x, y;

for(x = y = 0 ; ; x += 10, y += 10)
{
SendMessage(Hwnd, WM_MOUSEMOVE, 0, MAKELPARAM(x, y));
Sleep(100);
}
}

return 0;
}

Это работает хорошо.

5

Другие решения


По вопросам рекламы [email protected]