资源简介
c# SetWindowsHookEx 钩子 demo

代码片段和文件信息
using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Threading;
using System.Windows.Forms;
namespace demo
{
public partial class Index : Form
{
public Index()
{
InitializeComponent();
}
#region API
[DllImport(“kernel32.dll“)]
private static extern IntPtr GetModuleHandle(string name);
//建立键盘钩子
[DllImport(“user32.dll“ CharSet = CharSet.Auto CallingConvention = CallingConvention.StdCall)]
private static extern int SetWindowsHookEx(int idHook HookProc lpfn IntPtr hInstance int threadId);
//移除键盘钩子
[DllImport(“user32.dll“ CharSet = CharSet.Auto CallingConvention = CallingConvention.StdCall)]
private static extern bool UnhookWindowsHookEx(int idHook);
//把击键信息传递到下一个监听键盘事件的应用程序
[DllImport(“user32.dll“ CharSet = CharSet.Auto CallingConvention = CallingConvention.StdCall)]
private static extern int CallNextHookEx(int idHook int nCode IntPtr wParam IntPtr lParam);
#endregion
#region 变量
//标示
int i = 0;
//回调委托
private delegate int HookProc(int nCode IntPtr wParam IntPtr lParam);
//钩子
int idHook = 0;
//是否安装了钩子
bool isHook = false;
//锁
private static readonly object obj = new object();
GCHandle gc;
private const int WH_KEYBOARD_LL = 13; //钩子类型 全局钩子
private const int WM_KEYUP = 0x101; //按键抬起
private const int WM_KEYDOWN = 0x100; //按键按下
#endregion
#region 安装钩子
private void Index_Load(object sender EventArgs e)
{
Msg(“开始运行“);
//安装钩子
{
//钩子委托
HookProc lpfn = new HookProc(Hook);
//关联进程的主模块
IntPtr hInstance = GetModuleHandle(Process.GetCurrentProcess().MainModule.ModuleName);
//hInstance = Marshal.GetHINSTANCE(Assembly.GetExecutingAssembly().GetModules()[0]);
idHook = SetWindowsHookEx(WH_KEYBOARD_LL lpfn hInstance 0);
if (idHook > 0)
{
Msg(“钩子[“ + idHook + “]安装成功“);
isHook = true;
//保持活动 避免 回调过程 被垃圾回收
gc = GCHandle.Alloc(lpfn);
}
else
{
Msg(“钩子安装失败“);
isHook = false;
UnhookWindowsHookEx(idHook);
}
}
}
#endregion
#region 卸载钩子
private void Index_FormClosing(object sender FormClosingEventArgs e)
{
//卸载钩子
if (isHook)
{
UnhookWindowsHookEx(idHook);
}
}
#endregion
#region 钩子回调
private int Hook(int nCode
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2014-06-19 13:22 demo\
目录 0 2014-06-19 13:59 demo\demo\
文件 902 2014-06-19 13:22 demo\demo.sln
文件 34304 2014-06-19 16:18 demo\demo.v11.suo
目录 0 2014-06-19 13:35 demo\demo\bin\
目录 0 2014-06-19 13:36 demo\demo\bin\Debug\
文件 11776 2014-06-19 16:11 demo\demo\bin\Debug\demo.exe
文件 26112 2014-06-19 16:11 demo\demo\bin\Debug\demo.pdb
文件 22472 2014-06-19 16:15 demo\demo\bin\Debug\demo.vshost.exe
目录 0 2014-06-19 13:35 demo\demo\bin\Release\
文件 3721 2014-06-19 14:35 demo\demo\demo.csproj
文件 4880 2014-06-19 16:15 demo\demo\Index.cs
文件 3413 2014-06-19 15:54 demo\demo\Index.Designer.cs
文件 5817 2014-06-19 15:54 demo\demo\Index.resx
目录 0 2014-06-19 13:22 demo\demo\obj\
目录 0 2014-06-19 16:11 demo\demo\obj\Debug\
文件 522 2014-06-19 16:15 demo\demo\obj\Debug\demo.csproj.FileListAbsolute.txt
文件 1033 2014-06-19 15:54 demo\demo\obj\Debug\demo.csproj.GenerateResource.Cache
文件 2209 2014-06-19 13:25 demo\demo\obj\Debug\demo.csprojResolveAssemblyReference.cache
文件 11776 2014-06-19 16:11 demo\demo\obj\Debug\demo.exe
文件 180 2014-06-19 15:54 demo\demo\obj\Debug\demo.Index.resources
文件 26112 2014-06-19 16:11 demo\demo\obj\Debug\demo.pdb
文件 180 2014-06-19 14:35 demo\demo\obj\Debug\demo.Properties.Resources.resources
文件 863 2014-06-19 13:22 demo\demo\obj\Debug\DesignTimeResolveAssemblyReferences.cache
文件 6785 2014-06-19 13:59 demo\demo\obj\Debug\DesignTimeResolveAssemblyReferencesInput.cache
目录 0 2014-06-19 13:22 demo\demo\obj\Debug\TempPE\
文件 485 2014-06-19 15:29 demo\demo\Program.cs
目录 0 2014-06-19 13:22 demo\demo\Properties\
文件 1346 2014-06-19 13:22 demo\demo\Properties\AssemblyInfo.cs
文件 2860 2014-06-19 13:22 demo\demo\Properties\Resources.Designer.cs
文件 5612 2014-06-19 13:22 demo\demo\Properties\Resources.resx
............此处省略2个文件信息
- 上一篇:根据年龄和姓名排序C#
- 下一篇:Doc.ORM的演示Demo
相关资源
- asp.net C#购物车源代码
- C#实时网络流量监听源码
- C#百度地图源码
- Visual C#.2010从入门到精通配套源程序
- C# 软件版本更新
- C#屏幕软键盘源码,可以自己定制界面
- 智慧城市 智能家居 C# 源代码
- c#获取mobile手机的IMEI和IMSI
- C#实现简单QQ聊天程序
- 操作系统 模拟的 欢迎下载 C#版
- C#写的计算机性能监控程序
- 用C#实现邮件发送,有点类似于outlo
- MVC model层代码生成器 C#
- c#小型图书销售系统
- C# Socket Server Client 通讯应用 完整的服
- c# winform 自动登录 百度账户 源代码
- C#编写的16进制计算器
- C#TCP通信协议
- C# 数据表(Dataset)操作 合并 查询一
- C#语音识别系统speechsdk51,SpeechSDK51L
- 数据库备份还原工具1.0 C# 源码
-
[免费]xm
lDocument 节点遍历C# - EQ2008LEDc#开发实例
- DirectX.Capturec# winform 操作摄像头录像附
- c# 实现的最大最小距离方法对鸢尾花
- C#版保龄球记分代码
- C#自定义控件
- 基于c#的实验室设备管理系统621530
- C# 使用ListView控件实现图片浏览器(源
- C#简单窗体聊天程序
评论
共有 条评论