我有一台笔记本电脑,我经常使用鼠标。使用鼠标时我不喜欢加速。因此,每次插入鼠标时都必须禁用加速。每当我插上鼠标时,有没有办法自动禁用鼠标加速? 我知道你可以用udev做一个脚本,所以它可以识别鼠标插入并自动禁用鼠标加速......但我怎么在Windows上做呢?
答案 0 :(得分:1)
我相信使用简单的批处理文件是不可能的。但是,您可以在c ++中使用Windows API:
您可以使用RegisterDeviceNotification
HANDLE hRecipient = hWnd; // your window handle as returned by CreateWindow
GUID InterfaceClassGuid = { 0x378de44c, 0x56ef, 0x11d1, 0xbc, 0x8c, 0x00, 0xa0, 0xc9,
0x14, 0x05, 0xdd }; // GUID_DEVINTERFACE_MOUSE
DEV_BROADCAST_DEVICEINTERFACE NotificationFilter;
ZeroMemory(&NotificationFilter, sizeof(NotificationFilter));
NotificationFilter.dbcc_size = sizeof(DEV_BROADCAST_DEVICEINTERFACE);
NotificationFilter.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE;
NotificationFilter.dbcc_classguid = InterfaceClassGuid;
HDEVNOTIFY hDeviceNotify = RegisterDeviceNotification(hRecipient, &NotificationFilter,
DEVICE_NOTIFY_WINDOW_HANDLE);
if (hDeviceNotify == NULL) {
GetLastError(); // do error handling here
}
并在您窗口的留言处理程序(LRESULT CALLBACK
WndProc
(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
)中收听它们。
switch (message)
{
case WM_DEVICECHANGE:
switch (wParam)
{
case DBT_DEVICEARRIVAL:
// Mouse plugged in - turn mouse acceleration off here
break;
case DBT_DEVICEREMOVECOMPLETE:
// Mouse removed - turn mouse acceleration on here
break;
default:
break;
}
break;
case // ... your usual window message handling
实际更改设置可以使用SystemParametersInfo
中描述的this excellent answer来实现。
我实现了一个名为accelSwitcher的小工具。它可以在github上找到。