首页
社区
课程
招聘
[讨论]钩子DLL中无法调用定时器Settimer
发表于: 2007-4-7 18:00 7218

[讨论]钩子DLL中无法调用定时器Settimer

2007-4-7 18:00
7218
我写了个局部DLL钩子,挂钩系统里另外的进程。

我在DLL里想调用定时器,用的是启动一个新线程,然后调用
            invoke SetTimer,NULL,NULL,8000,addr TimerProc

执行上面的语句都正常;定时器启动也正常,就没看到8秒后向TimerProc里发送信息。


请问是跟我的HOOK有关系吗?我用的是WH_KEYBOARD消息HOOK的。钩子DLL里没有界面。

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 116
活跃值: (220)
能力值: ( LV12,RANK:370 )
在线值:
发帖
回帖
粉丝
2
没有消息循环
2007-4-7 19:20
0
雪    币: 846
活跃值: (221)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
3
Remarks
An application can process WM_TIMER messages by including a WM_TIMER case statement in the window procedure or by specifying a TimerProc callback function when creating the timer. When you specify a TimerProc callback function, the default window procedure calls the callback function when it processes WM_TIMER. Therefore, you need to dispatch messages in the calling thread, even when you use TimerProc instead of processing WM_TIMER.

MSDN中对SETTIMER的描述~~~注意粗体字

楼上的大牛不说,我还真不会看REMARKS呢。看来有条件得把MSDN都看一次
2007-4-7 22:02
0
雪    币: 183
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
谢谢了。

我找到问题的所在了,前一阵好象看过关于HOOK消息循环的,我的代码是没问题的,问题所在是WH_KEYBOARD钩子并不接收DispatchMessage的消息。

所以我的代码不变,只把钩子换成 WH_MSGPROC后就没任何问题了。是钩子类型的问题。
2007-4-8 09:54
0
游客
登录 | 注册 方可回帖
返回
//