Проблема с генерацией левой кнопки мыши в Win32 API? - PullRequest
0 голосов
/ 28 марта 2011


Ниже приведен мой код для генерации левого клика с помощью Win32 API.Проблема в том, что он застревает и не возвращается в главное.Когда я нажимаю Ctrl + C, он возвращается к основному. НО когда я вызываю его дважды, чтобы смоделировать двойной щелчок, тогда это нормально.Что-то не так с этим кодом?Спасибо.

void LeftClick(void)
{  
  INPUT    Input={0};

  // left down 
  Input.type      = INPUT_MOUSE; /*The event is a mouse event. Use the mi structure of the union.*/
  Input.mi.dwFlags  = MOUSEEVENTF_LEFTDOWN;
  SendInput(1,&Input,sizeof(INPUT));

  // left up
  ZeroMemory(&Input,sizeof(INPUT));
  Input.type      = INPUT_MOUSE;
  Input.mi.dwFlags  = MOUSEEVENTF_LEFTUP;
  SendInput(1,&Input,sizeof(INPUT));
}

1 Ответ

1 голос
/ 28 марта 2011

Если вы не привержены использованию SendInput, в прошлом я имел успех, используя SendMessage на желаемом hWnd с WM_LBUTTONDOWN, а затем снова с WM_LBUTTONUP.

Большинство кнопок также имитируют щелчок при вводе с клавиатуры. Вы можете использовать SendMessage для вашего желаемого hWnd с WM_KEYDOWN и wParam VK_SPACE, затем WM_KEYUP с VK_SPACE для завершения имитации нажатия клавиши пробела.

...