小弟我的Delphi 难题

我的Delphi 难题!
function NewNtResumeThread(hThread:Cardinal;PreviousSuspendCount:PULONG):Cardinal;stdcall;
type
  TNewNtResumeThread=function (hThread:Cardinal;PreviousSuspendCount:PULONG):Cardinal;stdcall;
begin
if vspas then
  begin
  vspas:=False;
  htd:=InjectTo(String(curfile), Shared^.localdll+'main.dll');
  curfile:='';
  //WaitForSingleObject(htd,INFINITE );
  end;
  Hook[6].UnHook;
  Result:=TNewNtResumeThread(Hook[6].BaseAddr)(hThread,PreviousSuspendCount);
  Hook[6].Hook;
end;

为了hook住控制台程序,在上面加入了WaitForSingleObject(htd,INFINITE );但加入这句后,不是控制台程序则运行时不能正常运行,运行时,在插入的线程结束后就自己退出了!也没有错误提示!
不加WaitForSingleObject则可以,但hook不住控制台程序或不含GUI的程序!
我想要的是能hook住所有的程序创建,现在就剩下这个问题搞不定!
请大家帮我写下,指下,问题出在哪?


------解决方案--------------------
路过,学习
------解决方案--------------------
楼主加了WaitForSingleObject(htd,INFINITE );后到底有没有实现你想的功能啊,没看明白
------解决方案--------------------
InjectTo 楼主是想注入DLL吧


------解决方案--------------------
NtResumeThread 函数不是创建进程才调用, 你在哪里做的判断?

------解决方案--------------------
你要注入的DLL怎么写的, 有没做避免重复注入的处理
------解决方案--------------------
vspas 这个条件不知道你怎么判断的,感觉不对
你把自己都注入了, 要注入的反倒没注入?