Я в замешательстве, потому что две строки очень похожи. Есть ли какие-либо ошибки в mspaint?
Эти две строки кода могут быть успешно выполнены, и они отправляют WM_LBUTTONDOWN
и WM_RBUTTONDOWN
сообщения в целевое окно. Я могу подтвердить это с помощью целевого собственного созданного оконного приложения и отслеживать в нем сообщение мыши. Поэтому, возможно, разница зависит от того, как приложение mspaint обрабатывает щелчок левой и правой кнопки мыши.
Следующий код работает для меня как для левой, так и для правой кнопок мыши. Вы можете попробовать.
int x = 100, y = 100;
// Left mouse button click
int lResult = SendMessageA(hwnd, WM_LBUTTONDOWN, MK_LBUTTON, MAKELPARAM(x, y));
Sleep(500);
lResult = SendMessageA(hwnd, WM_LBUTTONUP, MK_LBUTTON, MAKELPARAM(x, y));
x += 10;
// Right mouse button click
int rResult = SendMessageA(hwnd, WM_RBUTTONDOWN, MK_RBUTTON, MAKELPARAM(x, y));
Sleep(500);
rResult = SendMessageA(hwnd, WM_RBUTTONUP, MK_RBUTTON, MAKELPARAM(x, y));
printf("Done.");
Результат теста вышеупомянутого кода:

Примечание: Как уже отмечали другие сообщества, использование SendInput
вместо SendMessage
до Синтезирует нажатия клавиш, движения мыши и нажатия кнопок .