我使用远程注入,向远程进程中注入了一个DLL,在远程进程的主线程上安装了一个键盘钩子!截获按键消息,当按下某键时呼出DLL中的窗体!然后在DLL中执行代码的时候,整个目标进程就会卡死!直到我的代码跑完,远程进程才能操作!现在我想着多开一条线程来跑代码,想问一下,该如何处理,何时开线程,如何让我的代码在新开的线程中运行!(注,我所有的功能都在DLL中)!实习生来不及补习就已经要硬上架了,没办法,恳求大家支个招!100分奉上!

解决方案 »

  1.   

    dll中执行代码的时候创建线程,再线程中创建对话框不就行了么
      

  2.   

    CWinThread,创建UI线程,然后创建对话框等..
      

  3.   

    你DLL对话框是如何创建的?模态还是非模态?模态的肯定会把目标进程序阻塞掉,建议用UI线程来处理
      

  4.   

    DLL在第一次加载的时候,系统会停止当前进程的所有线程,只保留一个活动线程,这个线程进入DllMain。因此,从这个意义上讲,当前进程进入真正的“单线程”方式执行。此时在DllMain里面不得使用WaitForsingalObject类似的等待自身进程里面其它线程或者资源的函数,也不可以加载有循环依赖的dll,否则都会引起死锁。所以楼主应该在dllMain的PROCESS_ATTACH时创建一个线程,再立即返回。
      

  5.   


    微软说过,不得在DLLmain里面创建线程....