c#中通过设置钩子监视鼠标移动2008-04-17 09:58:53 来源:blog 作者:贾 涛 点击:
这个问题来自论坛提问,C#的大致代码如下 ![]() 这个问题来自论坛提问,C#的大致代码如下
using
System;
using
System.Windows.Forms;
using
System.Runtime.InteropServices;
namespace
WindowsApplication1
...
{
public
partial
class
Form1 : Form
...
{
public
Form1()
...
{ InitializeComponent(); }
private
void
Form1_Load(
object
sender, EventArgs e)
...
{ Win32Hook hook
=
new
Win32Hook(); hook.onMouseChange
+=
new
EventHandler(hook_onMouseChange); hook.SetHook(); }
![]()
void
hook_onMouseChange(
object
sender, EventArgs e)
...
{
this
.Text
=
Cursor.Position.ToString(); }
}
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_GETMESSAGE
=
3
}
![]()
public
delegate
int
HOOKPROC(
int
nCode,
int
wParam,
int
lParam);![]()
public
event
System.EventHandler onMouseChange;![]()
public
void
SetHook()
...
{ SetWindowsHookEx(HookType.WH_GETMESSAGE,
new
HOOKPROC(
this
.MyKeyboardProc),
0
, GetCurrentThreadId()); }
![]()
public
int
MyKeyboardProc(
int
nCode,
int
wParam,
int
lParam)
...
{
if
(onMouseChange
!=
null
)
...
{ onMouseChange(
null
,
null
); }
return
0
; }
}
}相关文章: |