【发布时间】:2019-09-20 13:50:46
【问题描述】:
所以我只是开始使用 C++ 进行编码,在学习了一点之后,我开始编写一个自动点击器。我已经做到了,所以你可以使用键盘上的按钮或类似的东西来切换自动点击器,但这不是我想要的。
我遇到的问题是我似乎无法找到一种方法来检查鼠标左键是否被按住。如果它被按住,则继续单击,直到不再按住鼠标左键。
另外,我环顾四周,想知道如何做到这一点,我已经得到了一些我应该做的不同的事情,但它们都不起作用。我被告知要使用:
if((GetKeyState(VK_LBUTTON) & 0x100) != 0)
从这个答案here,但我也发现人们被告知使用:
if(GetKeyState(VK_LBUTTON) & 0x8000
遗憾的是,我在我的历史中找不到我在哪里找到它。
我已尝试获取 WM_LBUTTONDOWN 的键状态,但它似乎没有拾起正在按下的鼠标按钮。
我可以通过检查 VK_LBUTTON 的键状态来使其工作,但这仅检查鼠标左键是否被按下,而不是按住。所以它只是不断地点击,直到你打破 while 循环或关闭程序。
真的不值得把它放下,但我凌晨 12 点的自我认为检查左键是否被按下(就像之前的那个),它会将布尔值设置为 true,然后继续单击。但在那之后,我无法像以前那样停下来。现在回头看看代码,我明白为什么它不起作用了。
while (1) {
if(GetKeyState(WM_LBUTTONDOWN)) {
Sleep(delay);
mouse_event(MOUSEEVENTF_LEFTDOWN, x, y, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, x, y, 0, 0);
std::cout << "Clicked" << endl;
}
if (GetKeyState(VK_ESCAPE)) {
break;
}
}
就像我之前说的,我尝试了所有不同的组合来尝试让它发挥作用。但是我看不到鼠标左键是否被按住。我希望有人有答案,可以帮助我和其他人。无论如何,谢谢,祝您有愉快的一天。
【问题讨论】:
-
嗨,exro,问题解决了吗?如果是,您可以accept the answer 帮助您或发布您自己的解决方案。