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;
}
Другие вопросы по тегам