关于结束其他程序线程的问题,请达人指点小弟一下!(69分)

  • 主题发起人 主题发起人 精灵猪
  • 开始时间 开始时间

精灵猪

Unregistered / Unconfirmed
GUEST, unregistred user!
如何能挂起其他程序内的一个线程 我搜索了大富翁好象都是介绍自身线程的挂起和唤醒,如果要是挂起其他进程内的一个线程序应该如何做  我分不多了 只有69分全出了 希望看过的给指点一下
 
另外目标程序的进程中有4个线程 ,我只要挂起其中的一个线程,我程序结束后再恢复那个线程 在线等
 
你设置一个全局TStringList变量,每次你要想挂起哪一个,TStringList.Add,在主程序中随时监控,发现了就停止(退出Execute的变量=True)或者线程暂停(Suspend),什么时候想重新开始了,就重新创建线程或者线程继续(Resume)
 
枚举指定进程的线程ID,根据ID,用openthread打开指定线程,然后调用SuspendThread挂起指定线程。这两个函数都是windows API,具体使用请参考MSDN
 
哦 可否给个代码 或者告诉我那2个API?
 
dey-999说的只能针对自身的线程 我指的是要挂起别的程序里的线程,tianliangle2003的方法看似比较可行 只是如何枚举指定进程的线程ID ?在线等
 
用CreateToolhelp32Snapshot,枚举线程<br>HANDLE OpenThread(<br> &nbsp;DWORD dwDesiredAccess,<br> &nbsp;BOOL bInheritHandle,<br> &nbsp;DWORD dwThreadId<br>);<br><br>DWORD SuspendThread(<br> &nbsp;HANDLE hThread<br>);
 
能不能给个例子 我刚试了没成功
 
我用<br> &nbsp;handle:=findwindow('Tform1',nil); &nbsp;//类名<br> &nbsp;if handle&gt;0 then<br> &nbsp;begin<br> &nbsp;tid:=GetWindowThreadProcessId(handle,nil);<br>成功得到了目标线程,只是是目标窗体的线程,目标另外还有几个线程,我要挂起的正好是目标另外线程中的一个 如何解决?
 
我不是说了吗用CreateToolhelp32Snapshot枚举指定进程的线程
 
我用了CreateToolhelp32Snapshot 枚举不到啊 有其他的吗 或者给个代码参考?
 
多人接受答案了。
 
后退
顶部