C# GetAsyncKeyState не работает должным образом
У меня есть этот код, который я сделал, где он получает состояние ключа левого щелчка, а затем, если его значение true, он устанавливает MemeKey в значение true, иначе он устанавливает MemeKey в значение false. По какой-то причине это выдает мне эту ошибку: Не удается неявно преобразовать тип 'short' в 'bool'
Вот мой код:
else if (GetAsyncKeyState(0x01))
{
MemeKey = true;
}
Этот пост НЕ является дубликатом GetAsyncKeyState - проверка самого значимого бита в C#, потому что в этом ответе говорится: "Но ваш код делает то же самое. Поэтому я полагаю, что ваша проблема кроется в другом месте". и его вопрос никогда не был решен.
1 ответ
GetAsyncKeyState возвращает SHORT в Windows API, и я предполагаю, что ваше объявление p / Invoke сохраняет это. Вы пытаетесь сослаться на это как логическое значение. Это пытается привести короткое замыкание к логическому значению, как говорится в исключении.
Вместо этого вам нужно проверить, установлен ли самый старший бит результирующего короткого замыкания, чтобы определить, нажата ли клавиша в данный момент:
else if (GetAsyncKeyState(0x01) & 0x8000 == 0x8000)
{
MemeKey = true;
}