资源简介
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
相关资源
- 根据年龄和姓名排序C#
- C# 分隔WAV文件,将一段汉语语音分割
- 武汉理工大学C#实验4源代码_窗体和控
- C#酒店管理系统课程设计报告
- C#版 spy++
- C#内存修改器
- 用C#做学习型人脸识别程序尝鲜版
- c# wpf全套教程视频教程
- .NET C# 在线招聘系统
- 停车场管理系统,C#实现,VS2017工程
- c#翻牌小游戏
- 远程监控数据采集GPRSC#源码
- Q757416.zip VB.NET WinForms 如何让label中的
- winform自定义滚动条
- Segy文件的读取c#)
- Visual C#从入门到精通 第九版.docx
- C#实现窗体换肤完整源码(经典)
- C#用NPOI固定模版导出数据到excel表格
- RPLIDAR A2 C#.rar
- c# 学生选课系统
- C#计算器含源码
- c#写入多个txt文本
- C# 全局键盘钩子类包括鼠标
- c#试题库——期末考试大全
- C#仿简单的CAD矢量绘图源码
- 隐性马尔科夫HMM
- C#程序编程期末考试题
- c# 温度检测上位机
- C#p2p源码聊天程序百分百可用的源码
- (亲测正确版)ASP.NET-c#-捕捉网页快照
评论
共有 条评论