在 win32 api 中生成左键单击时出现问题?

发布于 2024-10-26 19:45:56 字数 581 浏览 5 评论 0原文


下面是我使用 win32 api 生成左键单击的代码。问题是它被卡住并且没有返回到main。当我按 Ctrl+c 时,它返回到 main。 但是当我调用它两次时,模拟双击就可以了。这段代码有什么问题吗? 谢谢。

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));
}

Below is my code to generate left click using win32 api. The problem is that it gets stuck and does not return to main. When i press Ctrl+c, then it returns to main. BUT when I call it twice, to simulate double click then it is fine. Is there anything wrong with this code?
Thank you.

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));
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

不如归去 2024-11-02 19:45:56

如果您不打算使用 SendInput,我过去已经成功地使用 WM_LBUTTONDOWN 在所需的 hWnd 上使用 SendMessage,然后再次使用 WM_LBUTTONUP。

大多数按钮还模拟键盘输入的点击。您可以使用 SendMessage 到您想要的 hWnd 配合 WM_KEYDOWN 和 wParam VK_SPACE,然后使用 WM_KEYUP 配合 VK_SPACE 来完成空格键按键模拟。

If you're not committed to using SendInput, I've had success in the past using SendMessage on the desired hWnd with WM_LBUTTONDOWN then again with WM_LBUTTONUP.

Most buttons also simulate a click with keyboard entry. You can use SendMessage to your desired hWnd with WM_KEYDOWN and wParam VK_SPACE, then WM_KEYUP with VK_SPACE to complete the space bar keypress simulation.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文