2014-12-06 2 views
0

Я пытаюсь обнаружить, когда активно нажата клавиша с помощью GetAsyncKeyState (так как я хочу использовать асинхронную проверку также).GetAsyncKeyState - проверка наиболее значимого бита в C#

Маскировка самого знакового бита и проверка ненулевого значения должны сделать трюк для моего понимания, однако некоторые пользователи моего программного обеспечения обнаруживают, что случайные нажатия клавиш обнаруживаются, что они не нажаты, это проблема с моим методом или есть какой-то фактор, о котором я не знаю?

[DllImport("user32.dll")] 
private static extern short GetAsyncKeyState(Keys vKey); 

public static bool IsKeyDown(Keys vKey) 
{ 
    return ((GetAsyncKeyState(vKey) & 0x8000) != 0); 
} 

ответ

0

идиоматических способ это проверить возвращаемое значение является отрицательным:

return ((GetAsyncKeyState(vKey) < 0); 

Но ваш код делает то же самое. Поэтому я предполагаю, что ваша проблема кроется в другом месте.

+0

Спасибо, что это хорошо, так, кажется, более элегантно. –