public class Win32Hook
{ [DllImport("kernel32")]
public static extern int GetCurrentThreadId(); [DllImport( "user32",
CharSet=CharSet.Auto,CallingConvention=CallingConvention.StdCall)]
public static extern int SetWindowsHookEx(
HookType idHook,
HOOKPROC lpfn,
int hmod,
int dwThreadId); public enum HookType
{
WH_KEYBOARD = 2
}
public delegate int HOOKPROC(int nCode, int wParam, int lParam); public void SetHook()
{
// set the keyboard hook
SetWindowsHookEx(HookType.WH_KEYBOARD,
new HOOKPROC(this.MyKeyboardProc),
0,
GetCurrentThreadId());
} public int MyKeyboardProc(int nCode, int wParam, int lParam)
{
//在这里放置你的处理代码 return 0;
}
}
使用方法
可以在Form的构造函数里放入
Win32Hook hook = new Win32Hook();
hook.SetHook();
{ [DllImport("kernel32")]
public static extern int GetCurrentThreadId(); [DllImport( "user32",
CharSet=CharSet.Auto,CallingConvention=CallingConvention.StdCall)]
public static extern int SetWindowsHookEx(
HookType idHook,
HOOKPROC lpfn,
int hmod,
int dwThreadId); public enum HookType
{
WH_KEYBOARD = 2
}
public delegate int HOOKPROC(int nCode, int wParam, int lParam); public void SetHook()
{
// set the keyboard hook
SetWindowsHookEx(HookType.WH_KEYBOARD,
new HOOKPROC(this.MyKeyboardProc),
0,
GetCurrentThreadId());
} public int MyKeyboardProc(int nCode, int wParam, int lParam)
{
//在这里放置你的处理代码 return 0;
}
}
使用方法
可以在Form的构造函数里放入
Win32Hook hook = new Win32Hook();
hook.SetHook();
解决方案 »
- C#远程访问注册表问题
- 请教有关异步HTTP中EndGetResponse挂起没有响应的问题。。。。
- long字段的读取
- 一個關於子報表如何顯示的問題(好像挺難.100分)
- TreeView 奇怪的问题!!!
- ASPxGridView控件如何像GridView里的rowdatabound事件一样重新绑定
- 这是为什么?
- 怎么将textBox中输入的'a'过滤掉?也就是不让输入‘a'?
- .net frameword 2.0 什么时候能出来?
- 我调用公司现有的WIN32API函数,为什么老说无法调用,请高手来看一看,100分
- #if,#endif,#define等带井号的预处理语句有什么用处,和不加#的语句有区别吗?在程序中有实际效果吗?
- 人气不旺啊。发个编程技巧吧,大家都看看。
错了,您写的不是全局键盘钩子而是localhook!
vb.net的
SetWindowsHookEx、UnhookWindowsHookEx
发言---很有热心---我所说赞扬的高手只举了班兄为例子,其实我对包括尼在内的诸位高手都是满怀敬意的。
所以必须使用登陆http://www.csdn.net/magazine/download.shtm详细解说!