2016-03-12 4 views
0

Я был сумасшедшим относительно изменения скорости мыши с помощью C# с помощью этой статьи: http://www.sparrowtail.com/changing-mouse-pointer-speed-c.Получение скорости курсора мыши в C#

Теперь я также хочу получить текущую скорость мыши. Я попытался изменить const uint SPI_GETMOUSESPEED на 0x0072, а также на 0x0070, надеясь, что это будет правильный адрес. В документации Microsoft говорится, что адрес (по крайней мере, на C++) равен 0x70, однако мне не удастся получить правильный адрес в Интернете.

Моя функция:

private int GetMouseSpeed() 
    { 

     const uint SPI_GETMOUSESPEED = 0x0070; 
     uint mouseSpeed = 0; 

     SystemParametersInfo 
     (
      SPI_GETMOUSESPEED, 
      0, 
      mouseSpeed, 
      0 
     ); 

     return (int) mouseSpeed; 
    } 
+0

Согласно MSDN 'Параметр pvParam должен указатель на целое число, которое принимает значение, которое находится в диапазоне от 1 (самый медленный) и 20 (самый быстрый) .' –

+0

Добавлено мою текущую функцию к основному сообщению – chris579

ответ

2

Вы можете найти все возможные значения uiAction на MSDN. SPI_GETMOUSESPEED значение 0x70. Кроме того, вам нужно передать указатель на целое число, которое получает значение. В приведенном ниже коде я сделал это с помощью небезопасного оператора &. Чтобы скомпилировать его, вам нужно проверить Allow unsafe context в настройках сборки вашего проекта.

public const UInt32 SPI_GETMOUSESPEED = 0x0070; 

[DllImport("User32.dll")] 
static extern Boolean SystemParametersInfo(
    UInt32 uiAction, 
    UInt32 uiParam, 
    IntPtr pvParam, 
    UInt32 fWinIni); 

static unsafe void Main(string[] args) 
{ 
    int speed; 
    SystemParametersInfo(
     SPI_GETMOUSESPEED, 
     0, 
     new IntPtr(&speed), 
     0); 
    Console.WriteLine(speed); 
} 
+0

Спасибо! Я уже пытался реализовать то же самое на C++ и уже знал о нужном указателе для получения скорости, но не знал, как реализовать указатель на C#. – chris579

+0

@ chris579, используя небезопасный код в этом случае не требуется. Просто сделайте pvParam параметром ref (ref UInt32 pvParam). –

Смежные вопросы