//获取系统进程列表
Process[] PList = Process.GetProcesses();
foreach (Process theProcess in PList)
{
    //比如现在想HOOK到QQ的退出消息
    if (theProcess.ProcessName == "QQ")
    {
         //ghook是C#编写的DLL类.ThreadID为DLL类中的一个属性.
         ghook.ThreadID = (int)theProcess.Id;
         ghook.SetHook();
    }
}//DLL类中的SetHook()
SetHook()
{
    //SetWindowsHookEx()老是返回0,这个HOOK只想监控指定进程的退出消息.所以我传ThreadID过来..但是导致HOOK不成功...如果把SetWindowsHookEx()改为全局HOOK的话,SetWindowsHookEx()就能成功.GetModuleHandle("GlobalHookDLL.dll")这函数运行正确...存在的问题就在这个ThreadID.我传过来的是否不对.应该传什么呢?
    _nextHookPtr = SetWindowsHookEx((int)HookType.CBT, myhookProc, GetModuleHandle("GlobalHookDLL.dll"), ThreadID);最后请教一点,监控指定窗体进程的退出消息是否可用CBT这种类型的钩子..因为我看到CBT可处理HCBT_DESTROYWND事件.
}