1.如果是一个线程构子,WH_CALLWNDPROC和WH_KEYBOARD有什么不同之处.WH_CALLWNDPROC类型的构子不是就可以截取所有发向线程的消息了吗? 为什么我看有些例子,还要再加一个WH_KEYBOARD的钩子.2.线程钩子是监视的某一个线程吗? 这里的线程是进程的意思还是线程.如果某一应用程序有N个线程.是不是要给他的每一个线程都加上钩子.

解决方案 »

  1.   

    钩子的本质是一段用以处理系统消息的程序,通过系统调用,将其挂入到系统。钩子的种类有很多,每一种钩子负责截获并处理相应的消息。钩子机制允许应用程序截获并处理发往指定窗口的消息或特定事件,其监视的窗口即可以是本进程内的也可以是由其他进程所创建的。在特定的消息发出,并在到达目的窗口之前,钩子程序先行截获此消息并得到对其的控制权。此时在钩子函数中就可以对截获的消息进行各种修改处理,甚至强行终止该消息的继续传递。 
    1、
    WH_CALLWNDPROC 系统将消息发送到指定窗口之前的"钩子" 
    WH_KEYBOARD 键盘消息"钩子"
    2、线程就是线程
    HHOOK SetWindowsHookEx(int idHook;
    HOOKPROC lpfn;
    HINSTANCE hMod;
    DWORD dwThreadId);
    第四个参数dwThreadId 指定被监视的线程,如果明确指定了某个线程的ID就只监视该线程,此时的钩子即为线程钩子;如果该参数被设置为0,则表示此钩子为监视系统所有线程的全局钩子。
      

  2.   

    WH_CALLWNDPROC 能监视键盘消息吗?如果一个进程是多线程的,怎么取得这些这些线程ID.你好像只是做名词解释,没有回答问题的根本啊.
      

  3.   

    WH_CALLWNDPROC监视发送到窗口过程的消息.WH_KEYBOARD监控键盘输入.你觉得能不能呢
      

  4.   

    GetCurrentThreadId只要线程已经启动就能取得线程id,当然要加
      

  5.   

    即然WH_CALLWNDPROC监视发送到窗口过程的消息,为什么好多程序在上面还再加一个键盘构子.这不是多此一举嘛.