低级鼠标勾子的问题

listhome 2010-07-19 11:39:50
大家好,我用C#写了一个全局勾子,用于得到鼠标事件,鼠标事件可以拿到,但是每次点设置勾子的那个窗体的“最大化”,“最小化”,“关闭”按钮,应程都要是死一下。请问大家遇到过这种情况吗
设置鼠标勾子的代码

// Make sure we keep a reference to this delegate!
// If not, GC randomly collects it, and a NullReference exception is thrown
_hookCallback = new WinAPI.HookProc(HookCallbackProcedure);

Process curProcess = Process.GetCurrentProcess();
ProcessModule curModule = curProcess.MainModule;




_handleToHook = WinAPI.SetWindowsHookEx(
WH_MouseHook_LL,
_hookCallback,
curModule.BaseAddress,
0);



// Were we able to sucessfully start hook?
if (_handleToHook == 0)
{
throw new InvalidOperationException("设置全局钩子失败" + Marshal.GetLastWin32Error());
}



调用的代码


public partial class Form1 : Form
{
GlobalHook hook = new MouseHook();

public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
hook.Start();

}

private void button2_Click(object sender, EventArgs e)
{
hook.Stop();

}

private void Form1_Load(object sender, EventArgs e)
{

}
}
...全文
132 点赞 收藏 11
写回复
11 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
海子0011 2010-07-25
market
回复
listhome 2010-07-22
这他妈的就是程序员大本营啊
回复
listhome 2010-07-19
一样吧,就是用C#设个勾子而已,都是调用的API
回复
InitialJ 2010-07-19
SendMessage or PostMessage?
回复
Eleven 2010-07-19
C#???这里是VC/MFC,发错地方了吧。。。
回复
listhome 2010-07-19
另外再问一个问题,用GetMessage勾子能得到按钮被按下的消息吗
回复
listhome 2010-07-19
打错了几个字,是每次点最大化,最小化或关闭时,程序都要死一下,好像是勾子勾住了,但是没有做任何处理。
回复
listhome 2010-07-19
谁给解释一下下阿
回复
listhome 2010-07-19
发现关掉XP的主题,改为Windows经典就不卡了。寒
回复
magic7004 2010-07-19
没遇到过,哥做的钩子都贼好用
回复
listhome 2010-07-19
有人回答吗
回复
发帖
进程/线程/DLL
创建于2007-09-28

1.5w+

社区成员

VC/MFC 进程/线程/DLL
申请成为版主
帖子事件
创建了帖子
2010-07-19 11:39
社区公告
暂无公告