C# 需要GetAsyncKeyState解释
我想使用console应用程序制作一个小键盘记录器,我在网上偶然发现了这个源代码,我很难理解它C# 需要GetAsyncKeyState解释,c#,function,keylogger,C#,Function,Keylogger,我想使用console应用程序制作一个小键盘记录器,我在网上偶然发现了这个源代码,我很难理解它 while(true) { Thread.Sleep(10); for (int i = 0; i < 255; i++) { int keyState = GetAsyncKeyState(i); if (keyState == -32767) { Console.WriteLine((Keys
while(true)
{
Thread.Sleep(10);
for (int i = 0; i < 255; i++)
{
int keyState = GetAsyncKeyState(i);
if (keyState == -32767)
{
Console.WriteLine((Keys)i);
}
}
}
while(true)
{
睡眠(10);
对于(int i=0;i<255;i++)
{
int keyState=GetAsyncKeyState(i);
如果(键状态==-32767)
{
控制台写入线((键)i);
}
}
}
据我所知,keystate基本上是一个函数,它告诉我们当前是否按下了某个键。因为我们想检查255个键盘键中是否有任何一个正在被检查,所以我们需要一个for循环。如果我错了,请纠正我
所以如果我们现在按下的键是好的。。。按下,它将返回一些值(想知道这是什么值…可能是键码值?请更正,因为我肯定我错了)
但是如果是我完全失去它的那部分。如果我的理解是正确的,那么只有当我们得到-32767,写行才会发生,谁知道呢?这就是我想知道的。为什么是-32767?为什么即使我们永远得不到-32767,它也能工作,例如LMB是1
如果我的理解是正确的,那么只有当我们得到-32767,写行才会发生,谁知道呢
-32767
(0x8001)的值是一个重要值GetAsyncKeyState
返回一个short
,这意味着它是16位返回值的最低有效位(0)
根据文件:
如果函数成功,返回值指定自上次调用GetAsyncKeyState以来是否按下该键,以及该键当前是向上还是向下如果设置了最高有效位,则按键向下;如果设置了最低有效位,则在上次调用GetAsyncKeyState后按键。
这意味着它正在寻找通话之间的按键
阅读msdn页面的返回码部分-如果设置了高位,则按键为向下键;如果自上次调用后按键,则低位为1-对应于-32767==0x8001@Petesh如果您还提供了指向MSDN页面的链接,那么您的评论足以作为答案。因此,你到底为什么使用你不懂的代码?