VB 编程高手近 ~ 80 + 50

来源:百度知道 编辑:UC知道 时间:2024/05/10 14:57:21
Dim PID As Long, TID As Long, F As Long
Shell "notepad"
F = FindWindow("Notepad", "无标题 - 记事本")
TID = GetWindowThreadProcessId(F, PID)
hHook = SetWindowsHookEx(WH_MOUSE, AddressOf MouseProc, App.hInstance, TID)

我想用钩子取得鼠标在记事本的消息,但是一运行,记事本就出错了
请高手指点,谢谢
我不怎么会,可以帮帮忙吗?

TID应该是当前线程的ID...
内核会用KeUserModeCallback向TID指定的线程调用回调,如果你指定记事本的进程TID,而回调函数的地址又在自己的进程空间,那当然会出错。
你只能把TID指定为当前线程的TID,然后在过滤函数中判断是不是记事本的窗口,是的话就处理消息,否则CallNextHookEx把消息交给系统处理

这个可以啊