临时写的,需要用。
程序(50kb):
链接: https://pan.baidu.com/s/1qi0wZOrotiEwSwFeKOcJ-w 提取码: 7chk
代码
#include <stdio.h>
#include <Windows.h>
#define KEY_DOWN(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 1:0)
bool bOn = false;
POINT pOldMouse = { 0,0 };
int nDPI = 2;
// 记录鼠标左右键是否被按下
bool bLeft = false;
bool bRight = false;
int main()
{
printf("kbCtrlMouse 使用键盘控制鼠标 hd[2021.7.25]\n");
printf("按下 Ctrl + Alt + B 启用键盘控制鼠标,再按一次关闭\n");
printf("启用键盘控制鼠标后:\n");
printf("使用 WSAD 或 方向键 控制鼠标光标移动\n");
printf("使用 J 键模拟鼠标左键,使用 K 键模拟鼠标右键\n");
printf(" [ 和 ] 键分别可以调小或调大每次鼠标移动的距离(DPI)\n\n");
printf("--- 事件记录 ---\n");
while (true)
{
if (KEY_DOWN(VK_CONTROL) && KEY_DOWN(VK_MENU) && KEY_DOWN('B'))
{
bOn = !bOn;
if (bOn)
{
printf("开启了键盘控制。\n");
GetCursorPos(&pOldMouse);
}
else
{
printf("关闭了键盘控制。\n");
}
Sleep(300);
}
if (bOn)
{
// 方向键
if (KEY_DOWN('W') || KEY_DOWN(VK_UP))
{
pOldMouse.y -= nDPI;
SetCursorPos(pOldMouse.x, pOldMouse.y);
printf("键盘控制鼠标上移 up move\n");
}
if (KEY_DOWN('S') || KEY_DOWN(VK_DOWN))
{
pOldMouse.y += nDPI;
SetCursorPos(pOldMouse.x, pOldMouse.y);
printf("键盘控制鼠标下移 down move\n");
}
if (KEY_DOWN('A') || KEY_DOWN(VK_LEFT))
{
pOldMouse.x -= nDPI;
SetCursorPos(pOldMouse.x, pOldMouse.y);
printf("键盘控制鼠标左移 left move\n");
}
if (KEY_DOWN('D') || KEY_DOWN(VK_RIGHT))
{
pOldMouse.x += nDPI;
SetCursorPos(pOldMouse.x, pOldMouse.y);
printf("键盘控制鼠标右移 right move\n");
}
// 左键
if (KEY_DOWN('J'))
{
bLeft = true;
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
printf("键盘控制鼠标左键按下 Left down\n");
}
else if (bLeft)
{
// 松开鼠标
bLeft = false;
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
printf("键盘控制鼠标左键松开 Left up\n");
}
// 右键
if (KEY_DOWN('K'))
{
bRight = true;
mouse_event(MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0);
printf("键盘控制鼠标右键按下 Right down\n");
}
else if (bRight)
{
// 松开鼠标
bRight = false;
mouse_event(MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0);
printf("键盘控制鼠标右键松开 Right up\n");
}
// [ 键
if (KEY_DOWN(VK_OEM_4))
{
if (nDPI - 1 >= 1)
{
nDPI--;
printf("DPI 减小为 %d\n", nDPI);
}
else
{
printf("DPI 为 1,无法再减小了\n");
}
Sleep(200);
}
// ] 键
if (KEY_DOWN(VK_OEM_6))
{
if (nDPI + 1 <=200)
{
nDPI++;
printf("DPI 增大为 %d\n", nDPI);
}
else
{
printf("DPI 为 200,无法再增大了\n");
}
Sleep(200);
}
}
Sleep(50);
}
return 0;
}