繁体   English   中英

Windows 7 x64上的GetAsyncKeyState

[英]GetAsyncKeyState on windows 7 x64

我正在尝试使用C#在Windows7 x64上使用GetAsyncKeyState(i)以获取按下的键。 它在x86上完美运行。 这是我的代码:

[DllImport("user32.dll")]
public static extern int GetAsyncKeyState(long vKey);
[DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true, CallingConvention = CallingConvention.Winapi)]
public static extern short GetKeyState(int keyCode); 

        search = false;
        int key_my;
        for (i = 0; i < 255; i++)
        {
            key_my = GetAsyncKeyState(i); // this should return -3.... but it does 46...........
            if ( key_my == (System.Int16.MinValue + 1))
            { search = true; break; }
        }
        if ( search == true)
        {
           ...//using if to keys here.
        }

任何想法?

GetAsyncKeyState函数的返回类型应为short而不是int并且其参数应键入int而不是long

[DllImport("user32.dll")]
public static extern short GetAsyncKeyState(int vKey);

尽管这个问题已经回答正确,我想指出,使用这样的回答并把它在一个行工作,我的经验。

        if (GetAsyncKeyState(27) == (System.Int16.MinValue + 1)) 

工作。

                int key_my = GetAsyncKeyState(27); 
                if (key_my == (System.Int16.MinValue + 1))

确实有效。

(我不知道为什么。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM