SystemParametersInfoA с SPI_GETMOUSE возвращает 0

Перейти к ответу на вопрос

Я пытаюсь увеличить скорость мыши, но когда я вызываю функцию SystemParametersInfoA с параметромSPI_GETMOUSE он устанавливает целевой массив в {0,0,0} что, я думаю, этого не должно быть.

Пример кода:

int IntArr[3];
SystemParametersInfoA(SPI_GETMOUSE, 0, &IntArr, 0);

Я попытался изменить чувствительность мыши (с панели управления), но это тоже не помогло.

Эта функция должна возвращать эти нули или это моя вина?

1 ответ

Решение

В документации говорится:

Получает два пороговых значения мыши и ускорение мыши.

Сначала я подумал, что эти два пороговых значения мыши связаны с чувствительностью моего курсора мыши.

После более глубокого поиска в документации для mouse_event я обнаружил, что в разделе примечаний говорится:

Система применяет два теста к указанному относительному движению мыши при применении ускорения. Если указанное расстояние по оси x или y больше, чем первое пороговое значение мыши, а уровень ускорения мыши не равен нулю, операционная система удваивает расстояние. Если указанное расстояние по оси x или y больше, чем второе пороговое значение мыши, а уровень ускорения мыши равен двум, операционная система удваивает расстояние, полученное в результате применения первого порогового теста. Таким образом, операционная система может увеличивать относительно заданное движение мыши по оси x или y до четырех раз.

Который в основном означает, что эти 3 значения, которые я получил в целевом массиве IntArr не было ничего общего с чувствительностью, но, скорее, эти пороговые значения 2 для мыши и "Enhance указатель Precission", который был либо 0 или 1 с указанием его превратили в или выключен, мой был отключен, поэтому я получил все нули.

Чтобы получить чувствительность мыши, вы должны использовать функцию SystemParametersInfoA сSPI_GETMOUSESPEEDпараметр как uiAction вместо этого.

Другие вопросы по тегам