我有这个代码,我在它获得左键单击的关键状态,然后如果它是真的,它使" MemeKey"设置为true,否则它会生成" MemeKey"设为false。出于某种原因,它给了我这个错误:无法隐式转换类型' short'到了布尔'
这是我的代码:
else if (GetAsyncKeyState(0x01))
{
MemeKey = true;
}
这篇文章不是GetAsyncKeyState - checking most significant bit in C#的重复,因为它在答案中说明了,#34;但是你的代码做了同样的事情。所以我猜你的问题出在其他地方。"他的问题从未解决过。
答案 0 :(得分:0)
GetAsyncKeyState在windows API中返回SHORT,我猜你的p / Invoke声明保留了它。您试图像布尔值一样引用它。这是试图将short作为布尔值转换为异常状态。
相反,您需要测试是否设置了最终短路的最高位,以确定当前是否按下了该键:
else if (GetAsyncKeyState(0x01) & 0x8000 == 0x8000)
{
MemeKey = true;
}