ImageVerifierCode 换一换
格式:DOCX , 页数:41 ,大小:119.38KB ,
资源ID:7190503      下载积分:1 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-7190503.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C# Hook键盘鼠标连按连点器Word格式.docx)为本站会员(b****4)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

C# Hook键盘鼠标连按连点器Word格式.docx

1、 public event MouseEventHandler OnMouseActivity; public event KeyEventHandler KeyDown; public event KeyPressEventHandler KeyPress; public event KeyEventHandler KeyUp; public delegate int HookProc(int nCode, Int32 wParam, IntPtr lParam); static int hMouseHook = 0; static int hKeyboardHook = 0; public

2、 const int WH_MOUSE_LL = 14; public const int WH_KEYBOARD_LL = 13; HookProc MouseHookProcedure; HookProc KeyboardHookProcedure; StructLayout(LayoutKind.Sequential) public class POINT public int x; public int y; public class MouseHookStruct public POINT pt; public int hwnd; public int wHitTestCode; p

3、ublic int dwExtraInfo; public class KeyboardHookStruct public int vkCode; public int scanCode; public int flags; public int time; DllImport(user32.dll,CharSet=CharSet.Auto, CallingConvention=CallingConvention.StdCall) public static extern int SetWindowsHookEx(int idHook, HookProc lpfn, IntPtr hInsta

4、nce, int threadId); public static extern bool UnhookWindowsHookEx(int idHook); public static extern int CallNextHookEx(int idHook, int nCode, Int32 wParam, IntPtr lParam); public void Start() if(hMouseHook = 0) MouseHookProcedure = new HookProc(MouseHookProc); hMouseHook = SetWindowsHookEx( WH_MOUSE

5、_LL, MouseHookProcedure, Marshal.GetHINSTANCE( Assembly.GetExecutingAssembly().GetModules()0), 0); if(hMouseHook = 0 ) Stop(); throw new Exception(SetWindowsHookEx failed.); if(hKeyboardHook = 0) KeyboardHookProcedure = new HookProc(KeyboardHookProc); hKeyboardHook = SetWindowsHookEx( WH_KEYBOARD_LL

6、, KeyboardHookProcedure, Assembly.GetExecutingAssembly().GetModules()0), if(hKeyboardHook = 0 ) SetWindowsHookEx ist failed. public void Stop() bool retMouse =true; bool retKeyboard = true; if(hMouseHook != 0) retMouse = UnhookWindowsHookEx(hMouseHook); hMouseHook = 0; if(hKeyboardHook ! retKeyboard

7、 = UnhookWindowsHookEx(hKeyboardHook); hKeyboardHook = 0; if (!(retMouse & retKeyboard) throw new Exception(UnhookWindowsHookEx failed. private const int WM_MOUSEMOVE = 0x200; private const int WM_LBUTTONDOWN = 0x201; private const int WM_RBUTTONDOWN = 0x204; private const int WM_MBUTTONDOWN = 0x207

8、; private const int WM_LBUTTONUP = 0x202; private const int WM_RBUTTONUP = 0x205; private const int WM_MBUTTONUP = 0x208; private const int WM_LBUTTONDBLCLK = 0x203; private const int WM_RBUTTONDBLCLK = 0x206; private const int WM_MBUTTONDBLCLK = 0x209; private int MouseHookProc(int nCode, Int32 wPa

9、ram, IntPtr lParam) if (nCode = 0) & (OnMouseActivity!=null) MouseButtons button=MouseButtons.None; switch (wParam) case WM_LBUTTONDOWN: button=MouseButtons.Left; break; case WM_RBUTTONDOWN: button=MouseButtons.Right; int clickCount=0; if (button!=MouseButtons.None) if (wParam=WM_LBUTTONDBLCLK | wPa

10、ram=WM_RBUTTONDBLCLK) clickCount=2; else clickCount=1; MouseHookStruct MyMouseHookStruct = (MouseHookStruct) Marshal.PtrToStructure(lParam, typeof(MouseHookStruct); MouseEventArgs e=new MouseEventArgs( button, clickCount, MyMouseHookStruct.pt.x, MyMouseHookStruct.pt.y, 0 ); OnMouseActivity(this, e);

11、 return CallNextHookEx(hMouseHook, nCode, wParam, lParam);user32) public static extern int ToAscii(int uVirtKey, int uScanCode, byte lpbKeyState, byte lpwTransKey, int fuState); public static extern int GetKeyboardState(byte pbKeyState); private const int WM_KEYDOWN = 0x100; private const int WM_KEY

12、UP = 0x101; private const int WM_SYSKEYDOWN = 0x104; private const int WM_SYSKEYUP = 0x105; private int KeyboardHookProc(int nCode, Int32 wParam, IntPtr lParam) (KeyDown!=null | KeyUp!=null | KeyPress!=null) KeyboardHookStruct MyKeyboardHookStruct = (KeyboardHookStruct) Marshal.PtrToStructure(lParam

13、, typeof(KeyboardHookStruct); if ( KeyDown!=null & ( wParam =WM_KEYDOWN | wParam=WM_SYSKEYDOWN ) Keys keyData=(Keys)MyKeyboardHookStruct.vkCode; KeyEventArgs e = new KeyEventArgs(keyData); KeyDown(this, e); if ( KeyPress! wParam =WM_KEYDOWN ) byte keyState = new byte256; GetKeyboardState(keyState);

14、byte inBuffer= new byte2; if (ToAscii(MyKeyboardHookStruct.vkCode, MyKeyboardHookStruct.scanCode, keyState, inBuffer, MyKeyboardHookStruct.flags)=1) KeyPressEventArgs e = new KeyPressEventArgs(char)inBuffer0); KeyPress(this, e); if ( KeyUp! ( wParam =WM_KEYUP | wParam=WM_SYSKEYUP ) KeyUp(this, e); r

15、eturn CallNextHookEx(hKeyboardHook, nCode, wParam, lParam);Form1代码using System.Drawing;using System.Drawing.Drawing2D;namespace Patcher_采集 public partial class Form1 : Form System.Runtime.InteropServices.DllImport() private static extern int mouse_event(int dwFlags, int dx, int dy, int cButtons, int

16、 dwExtraInfo); const int MOUSEEVENTF_LEFTDOWN = 0x0002; const int MOUSEEVENTF_LEFTUP = 0x0004; / / 安装钩子/summaryparam name=idHookhProchModdwThreadIdreturns/returns DllImport( public static extern int SetWindowsHookEx(int idHook, HookProc hProc, IntPtr hMod, int dwThreadId); / 将hook信息传递到链表中下一个hook处理过程

17、hHooknCodewParamlParam public static extern int CallNextHookEx(int hHook, int nCode, IntPtr wParam, IntPtr lParam); / 卸载钩子 public static extern bool UnhookWindowsHookEx(int hHook); / 获取模块句柄 lpModuleNamekernel32.dll public static extern IntPtr GetModuleHandle(string lpModuleName); public struct KeyIn

18、foStruct public int vkCode; /按键键码 public int scanCode; public int flags; /键盘是否按下的标志 public int time; public int dwExtraInfo;User32.dll public static extern void keybd_event(Byte bVk, Byte bScan, Int32 dwFlags, Int32 dwExtraInfo); private const int WH_KEYBOARD_LL = 13; /钩子类型 全局钩子 private const int WM

19、_KEYUP = 0x101; /按键抬起 private const int WM_KEYDOWN = 0x100; /按键按下 private const int KEYEVENTF_KEYUP = 2; byte VK_Q = 0; / 坐标 private Point points; / 坐标个数索引 int pointIndex = 1; int nowPointIndex = 0; / 按键索引 int KeyIndex = 0; Label lb; / 输入框 TextBox txt; / LinkLabel /LinkLabel link; / 执行的动作顺序,保存的控件名称

20、string dongzuo = txtP1; int dongzuoIndex = 0; public delegate int HookProc(int nCode, IntPtr wParam, IntPtr lParam); bool bStopMsg = false; int hHook = 0; GCHandle gc; string b = F2 int index = 0; private UserActivityHook hook; Icon icon1 = new Icon(Application.StartupPath+.emoticon-1.ico Icon icon2

21、 = new Icon(Application.StartupPath+.emoticon-2.ico public int MethodHookProc(int nCode, IntPtr wParam, IntPtr lParam) if (nCode KeyInfoStruct inputInfo = (KeyInfoStruct)Marshal.PtrToStructure(lParam, typeof(KeyInfoStruct); if (wParam = (IntPtr)WM_KEYDOWN) /如果按键按下 if (Keys)inputInfo.vkCode).ToString

22、() = b) if (timer1.Enabled = true) notifyIcon1.Icon = icon1; timer1.Enabled = false; else notifyIcon1.Icon = icon2; timer1.Enabled = true; if (bStopMsg) return 1; return CallNextHookEx(hHook, nCode, wParam, lParam);/继续传递消息 public Form1() InitializeComponent(); boBox1.SelectedIndex = 1;/默认索引值 boBox1.DropDownStyle = ComboBoxStyle.DropDownList;/仅在列表中选择 private void Form1_Load(object sender, EventArgs e) if (0 = hHook) HookProc KeyCallBack = new HookProc(MethodHookProc); hHook =

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2