求C#高手帮忙!关于线程和钩子,代码就两三句

调用了user32的FindWindow()、SetWindowsHookEX()和GetThreadProcessId()三个函数,请看代码:代码一:staticint... 调用了user32的FindWindow()、SetWindowsHookEX()和GetThreadProcessId()三个函数,请看代码:
代码一:
static int hHook=0;
HookProc hp = new HookProc(KbHookProc)
IntPtr hWnd = FindWindow(null, "QQ2013");
hHook=SetWindowsHookEX(2,hp,IntPtr.Zero,GetCurrentProcessId());

这时候hHook输出结果不为0,就是说设置钩子成功,但是钩子放在了本程序上;
代码二:
static int hHook=0;
HookProc hp = new HookProc(KbHookProc)
IntPtr hWnd = FindWindow(null, "QQ2013");
int a;
hHook=SetWindowsHookEX(2,hp,IntPtr.Zero,GetWindowsThreadProcessId(hWnd,out a));
这时候hHook输出结果居然是0,设置钩子失败,我就是不明白啊!我想设置局部的钩子,这是最后一步啊,代码一成功说明SetWindowsHookEX前面三个参数是正确的,说明只有最后一个参数有问题,但是大家都是输出一个整数,应该会无论如何hHook都不会为0,就是说设置钩子都会成功但是设置的对象不一定正确而已,但是实际并非如此,很诡异啊!希望各位可以帮帮忙解决,谢谢了!
然后我尝试将代码一这样改:
static int hHook=0;
HookProc hp = new HookProc(KbHookProc)
IntPtr hWnd = FindWindow(null, "QQ2013");
hHook=SetWindowsHookEX(2,hp,IntPtr.Zero,GetCurrentProcessId()+1);

结果输出hHook的值为0,求救啊!!
展开
 我来答
失忆YZL
2013-08-01
知道答主
回答量:19
采纳率:0%
帮助的人:17.4万
展开全部
FindWindows函数应该有问题,单凭窗口标题来获取句柄不太可靠,可以尝试一下用SPY。另外看你的代码好像你不是要做线程钩子吧,代码一是线程钩子,没什么问题,代码二是全局钩子,得放到DLL里面去,多看看资料吧,《Windows核心编程》里好像有关于HOOK的资料,网上也很多,多看多写,理解了原理写起来就简单了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友f688b7b
2013-09-03
知道答主
回答量:2
采纳率:0%
帮助的人:4.5万
展开全部
MSDN原文:

If an application requires the use of hooks in other processes, it is required that a 32-bit application call SetWindowsHookEx to inject a 32-bit DLL into 32-bit processes, and a 64-bit application call SetWindowsHookEx to inject a 64-bit DLL into 64-bit processes.

大概意思是如果想钩住别的进程,需要以dll的形式
如果以exe的形式,也就是LZ这样的做法,只能钩住本线程,或者全局钩子
楼主代码一的GetCurrentProcessId()获取的就是本进程的线程ID,所以勾住的是自己.

代码二LZ想勾的QQ2013属于"othre processes",所以会失败
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
qq289172257
2013-07-30 · 超过25用户采纳过TA的回答
知道答主
回答量:123
采纳率:100%
帮助的人:70.6万
展开全部
你这钩子程序写 到处是问题 把你全部程序贴出来
追问
我写得很不规范,源码很长,我怕你们看着烦了,能不能你写一个 笔记本的HOOK,,我想参考一下!谢谢了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
大饭米
2013-08-02 · TA获得超过138个赞
知道小有建树答主
回答量:327
采纳率:0%
帮助的人:251万
展开全部
我想说 你是管理员权限么
或者你用的Windows 8就会这样...
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式