资源简介
c#实现全局键盘钩子 里面都有说明
代码片段和文件信息
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;
using System.Runtime.InteropServices;
namespace KeyHookTest
{
public partial class Form1 : Form
{
[DllImport(“user32.dll“)]
public static extern int SetWindowsHookEx(int idHook HookProc hProc IntPtr hMod int dwThreadId);
[DllImport(“user32.dll“)]
public static extern int CallNextHookEx(int hHook int nCode IntPtr wParam IntPtr lParam);
[DllImport(“user32.dll“)]
public static extern bool UnhookWindowsHookEx(int hHook);
[DllImport(“kernel32.dll“)]//获取模块句柄
public static extern IntPtr GetModuleHandle(string lpModuleName);
public struct KeyInfoStruct
{
public int vkCode; //按键键码
public int scanCode;
public int flags; //键盘是否按下的标志
public int time;
public int dwExtraInfo;
}
private const int WH_KEYBOARD_LL = 13; //钩子类型 全局钩子
private const int WM_KEYUP = 0x101; //按键抬起
private const int WM_KEYDOWN = 0x100; //按键按下
public delegate int HookProc(int nCode IntPtr wParam IntPtr lParam);
bool bStopMsg = false;
int hHook = 0;
GCHandle gc;
public int MethodHookProc(int nCode IntPtr wParam IntPtr lParam) {
if (nCode >= 0) {
KeyInfoStruct inputInfo = (KeyInfoStruct)Marshal.PtrToStructure(lParam typeof(KeyInfoStruct));
if (wParam == (IntPtr)WM_KEYDOWN) {//如果按键按下
textBox1.Text += “-“ + ((Keys)inputInfo.vkCode).ToString() + “-“;
}
if (bStopMsg)
return 1;
}
return CallNextHookEx(hHook nCode wParam lParam);//继续传递消息
}
public Form1() {
InitializeComponent();
}
private void Form1_Load(object sender EventArgs e) {
button1.Text = “屏蔽按键“;
button1.Enabled = false;
button2.Text = “设置Hook“;
}
private void button1_Click(object sender EventArgs e) {
if (button1.Text == “屏蔽按键“) {
bStopMsg = true;
button1.Text = “解除禁用“;
} else {
bStopMsg = false;
button1.Text = “屏蔽按键“;
}
}
private void button2_Click(object sender EventArgs e) {
if (0 == hHook) {
HookProc KeyCallBack = new HookProc(MethodHookProc);
hHook = SetWindowsHookEx(WH_KEYBOARD_LL KeyCallBack
GetModuleHandle(Process.GetCurrentProcess().MainModule.ModuleName) 0);
if (hHook == 0) {
MessageBox.Show(“设置Hook失败“);
} else {
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2013-02-25 08:08 键盘钩子\
目录 0 2013-02-25 08:08 键盘钩子\KeyHookTest\
文件 3233 2012-06-06 03:05 键盘钩子\KeyHookTest\Form1.Designer.cs
文件 3772 2012-09-08 17:49 键盘钩子\KeyHookTest\Form1.cs
文件 5817 2012-06-06 03:05 键盘钩子\KeyHookTest\Form1.resx
文件 3429 2012-06-06 02:38 键盘钩子\KeyHookTest\KeyHookTest.csproj
文件 474 2012-06-06 02:36 键盘钩子\KeyHookTest\Program.cs
目录 0 2013-02-25 08:08 键盘钩子\KeyHookTest\Properties\
文件 1452 2012-06-06 02:36 键盘钩子\KeyHookTest\Properties\AssemblyInfo.cs
文件 2767 2012-06-06 02:36 键盘钩子\KeyHookTest\Properties\Resources.Designer.cs
文件 5612 2012-06-06 02:36 键盘钩子\KeyHookTest\Properties\Resources.resx
文件 1074 2012-06-06 02:36 键盘钩子\KeyHookTest\Properties\Settings.Designer.cs
文件 249 2012-06-06 02:36 键盘钩子\KeyHookTest\Properties\Settings.settings
目录 0 2013-02-25 08:08 键盘钩子\KeyHookTest\bin\
目录 0 2013-02-25 08:08 键盘钩子\KeyHookTest\bin\Debug\
文件 10752 2012-06-06 03:19 键盘钩子\KeyHookTest\bin\Debug\KeyHookTest.exe
文件 26112 2012-06-06 03:19 键盘钩子\KeyHookTest\bin\Debug\KeyHookTest.pdb
文件 11608 2012-06-06 03:20 键盘钩子\KeyHookTest\bin\Debug\KeyHookTest.vshost.exe
文件 490 2010-03-17 22:39 键盘钩子\KeyHookTest\bin\Debug\KeyHookTest.vshost.exe.manifest
目录 0 2013-02-25 08:08 键盘钩子\KeyHookTest\bin\Release\
文件 10240 2012-09-08 17:49 键盘钩子\KeyHookTest\bin\Release\KeyHookTest.exe
文件 28160 2012-09-08 17:49 键盘钩子\KeyHookTest\bin\Release\KeyHookTest.pdb
文件 11608 2013-02-25 11:06 键盘钩子\KeyHookTest\bin\Release\KeyHookTest.vshost.exe
文件 490 2010-03-17 22:39 键盘钩子\KeyHookTest\bin\Release\KeyHookTest.vshost.exe.manifest
目录 0 2013-02-25 08:08 键盘钩子\KeyHookTest\obj\
目录 0 2013-02-25 08:08 键盘钩子\KeyHookTest\obj\x86\
目录 0 2013-02-25 08:08 键盘钩子\KeyHookTest\obj\x86\Debug\
文件 5428 2012-06-06 03:19 键盘钩子\KeyHookTest\obj\x86\Debug\DesignTimeResolveAssemblyReferencesInput.cache
文件 180 2012-06-06 03:05 键盘钩子\KeyHookTest\obj\x86\Debug\KeyHookTest.Form1.resources
文件 180 2012-06-06 02:38 键盘钩子\KeyHookTest\obj\x86\Debug\KeyHookTest.Properties.Resources.resources
文件 1052 2012-06-06 03:20 键盘钩子\KeyHookTest\obj\x86\Debug\KeyHookTest.csproj.FileListAbsolute.txt
............此处省略17个文件信息
评论
共有 条评论