C#GetAsyncKeyState无法正常工作

时间:2017-03-15 00:39:23

标签: c#

我有这个代码,我在它获得左键单击的关键状态,然后如果它是真的,它使" MemeKey"设置为true,否则它会生成" MemeKey"设为false。出于某种原因,它给了我这个错误:无法隐式转换类型' short'到了布尔'

这是我的代码:

        else if (GetAsyncKeyState(0x01))
        {
            MemeKey = true;
        }

这篇文章不是GetAsyncKeyState - checking most significant bit in C#的重复,因为它在答案中说明了,#34;但是你的代码做了同样的事情。所以我猜你的问题出在其他地方。"他的问题从未解决过。

1 个答案:

答案 0 :(得分:0)

GetAsyncKeyState在windows API中返回SHORT,我猜你的p / Invoke声明保留了它。您试图像布尔值一样引用它。这是试图将short作为布尔值转换为异常状态。

相反,您需要测试是否设置了最终短路的最高位,以确定当前是否按下了该键:

else if (GetAsyncKeyState(0x01) & 0x8000 == 0x8000) 
{
    MemeKey = true;
}