#c #windows #winapi
#c #Windows #winapi
Вопрос:
Я возился с позиционированием указателя мыши, с которым у меня вообще не было проблем, но попытка имитировать щелчок левой кнопкой мыши на данный момент вызывает у меня проблемы.
#include <Windows.h>
int main()
{
SetCursorPos(100, 450);
Sleep(3000);
SetCursorPos(1600, 450);
int n = 1;
while (n <= 10);
{
SetCursorPos(1600, 450);
LeftClick();
n ;
}
}
Моя LeftClick()
функция заключается в следующем:
void LeftClick()
//down
INPUT Input = {0};
Input.type = INPUT_MOUSE;
Input.mi.dwFlags = MOUSEEVENTF_LEFTDOWN;
::SendInput(1, amp;Input, sizeof(INPUT));
//up
::ZeroMemory(amp;Input, sizeof(INPUT));
Input.type = INPUT_MOUSE;
Input.mi.dwFlags = MOUSEEVENTF_LEFTUP;
::SendInput(1, amp;Input, sizeof(INPUT));
Я осмотрелся, и до сих пор все, что я видел, у меня не работало.
Пожалуйста, дайте мне любую помощь во всем, что связано с моим неаккуратным кодом, а не только с тем, как я пытаюсь имитировать нажатие,
Комментарии:
1. В вашем
while
цикле есть ошибочное завершение;
, поэтому вы застреваете в бесконечном цикле и вообще никогда не вызываетеLeftClick()
. Если бы вы вошли в свой код с помощью отладчика, вы бы увидели эту ошибку в действии. После того, как вы это исправите, знайте, что вызовSendInput()
сnInputs=1
почти всегда является логической ошибкой. Отправляйте входные данные как вниз, так и вверх в одном вызовеSendInput()
, а не по отдельности. И, к вашему сведению, вы также можете перемещать мышь с помощьюSendInput()
.SetCursorPos()
выполняется немедленно, ноSendInput()
задерживается .2. Спасибо, отлично работал без цикла while, я обязательно начну использовать отладчик и подробнее изучу ваши советы. Спасибо: D