c#+全局钩子之键盘+(实例)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

c# È«¾Ö¹³×ÓÖ®¼üÅÌ (ʵÀý)

н¨ÏîÄ¿WinAPIMessage

н¨Ò»¸öform1´°Ìå.Ôö¼Ó2¸öbutton£¬Ôö¼Óʼþ¡£¡£È»ºó¸´ÖÆÈçÏÂÃæ´úÂëÌæ»»form1µÄ´úÂë(×¢Òâ²»ÒªÍü¼ÇÔö¼Óbuttonʼþ.

using System;

using System.Collections.Generic;

using ponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

using System.Runtime.InteropServices;

using System.Reflection;

using System.Diagnostics;

namespace WinAPIMessage

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

//ίÍÐ

public delegate int HookProc(int nCode, int wParam, IntPtr lParam); static int hHook = 0;

public const int WH_KEYBOARD_LL = 13;

//LowLevel¼üÅ̽ػñ£¬Èç¹ûÊÇWH_KEYBOARD£½2£¬²¢²»ÄܶÔϵͳ¼üÅ̽ØÈ¡£¬Ac robat Reader»áÔÚÄã½Øȡ֮ǰ»ñµÃ¼üÅÌ¡£

HookProc KeyBoardHookProcedure;

//¼üÅÌHook½á¹¹º¯Êý

[StructLayout(LayoutKind.Sequential)]

public class KeyBoardHookStruct

{

public int vkCode;

public int scanCode;

public int flags;

public int time;

public int dwExtraInfo;

}

#region DllImport

//ÉèÖù³×Ó

[DllImport("user32.dll")]

public static extern int SetWindowsHookEx(int idHook, HookProc lpfn, IntPtr hInstance, int threadId);

[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]

//³éµô¹³×Ó

public static extern bool UnhookWindowsHookEx(int idHook); [DllImport("user32.dll")]

//µ÷ÓÃÏÂÒ»¸ö¹³×Ó

public static extern int CallNextHookEx(int idHook, int nCode, int wParam, IntPtr lParam);

[DllImport("kernel32.dll")]

public static extern int GetCurrentThreadId();

[DllImport("kernel32.dll")]

public static extern IntPtr GetModuleHandle(string name);

#endregion

#region ×Ô¶¨Òåʼþ

public void Hook_Start()

{

// °²×°¼üÅ̹³×Ó

if (hHook == 0)

{

KeyBoardHookProcedure = new HookProc(KeyBoardHookProc);

//hHook = SetWindowsHookEx(2,

// KeyBoardHookProcedure,

//

GetModuleHandle(Process.GetCurrentProcess().MainModule.ModuleName), GetCurrentThreadId());

hHook = SetWindowsHookEx(WH_KEYBOARD_LL,

KeyBoardHookProcedure,

GetModuleHandle(Process.GetCurrentProcess().MainModule.ModuleName), 0);

//Èç¹ûÉèÖù³×Óʧ°Ü.

if (hHook == 0)

{

Hook_Clear();

//throw new Exception("ÉèÖÃHookʧ°Ü!");

}

}

}

//È¡Ïû¹³×Óʼþ

public void Hook_C

相关文档
最新文档