这是我的代码:
#include <Windows.h>
void InputRButtonDown()
{
INPUT inp;
inp.type = INPUT_MOUSE;
inp.mi.dwFlags = MOUSEEVENTF_RIGHTDOWN;
SendInput(1, &inp, sizeof(INPUT));
}
void InputRButtonUp()
{
INPUT inp;
inp.type = INPUT_MOUSE;
inp.mi.dwFlags = MOUSEEVENTF_RIGHTUP;
SendInput(1, &inp, sizeof(INPUT));
}
LRESULT CALLBACK MouseProc(int nCode, WPARAM wParam, LPARAM lParam)
{
if (nCode >= 0)
{
WORD button;
switch (wParam)
{
case WM_LBUTTONDOWN:
break;
case WM_LBUTTONUP:
break;
case WM_RBUTTONDOWN:
break;
case WM_RBUTTONUP:
break;
case WM_XBUTTONDOWN:
button = HIWORD(((MSLLHOOKSTRUCT*)lParam)->mouseData);
if (button == XBUTTON2) {
InputRButtonDown();
}
break;
case WM_XBUTTONUP:
button = HIWORD(((MSLLHOOKSTRUCT*)lParam)->mouseData);
if (button == XBUTTON2) {
InputRButtonUp();
}
break;
}
}
return CallNextHookEx(NULL, nCode, wParam, lParam);
}
int main()
{
SetWindowsHookExW(WH_MOUSE_LL, MouseProc, NULL, 0);
MSG msg;
while (GetMessageW(&msg, NULL, 0, 0) != NULL) {
TranslateMessage(&msg);
DispatchMessageW(&msg);
}
}
当我单击鼠标侧键之一时,它应该模拟右键单击。问题是鼠标右键单击会在短暂延迟(约 400 毫秒)后触发,而不是立即触发。如果我修改此代码以调用InputRButton...
键盘挂钩 proc 而不是鼠标挂钩 proc 中的函数,则它可以毫无延迟地工作。我的错误在哪里以及如何解决?