2009-08-07 127 views
4

我可以通过使用SuspendThread()挂起另一个进程的线程。有什么办法可以同时暂停执行该过程? 如果是,请张贴代码。暂停执行远程进程(C,Windows)

谢谢。

PS: 既然你会问“为什么你要这样做”我会在这里发布。 我正在处理不再维护的遗留软件。我无法访问源代码。现在我需要它暂停,直到文件充满数据,然后恢复执行。

回答

2

唯一的方法是暂停该进程的所有线程。

如果你想看到实际的代码,请检查示例here

+0

会暂停过程本身?我试着暂停所有线程,但主进程仍然处于活动状态。 – wonderer 2009-08-07 13:43:48

+0

一个进程包含一个或多个线程,这些线程实际上执行了进程中的代码(从技术上说,进程不运行,线程也这样做)。 – 2009-08-07 13:48:10

+0

太好了。感谢您的解释 – wonderer 2009-08-07 13:51:43

0

>唯一的方法是暂停该进程的所有线程。

编号
使用未记录的内核apis(自NT 3.1以后导出)暂停Pid。

+0

感谢您的意见,但只是说“使用无证API”不会给我任何答案。如果您知道任何未公开的API,请发布并提供一些示例代码。 – wonderer 2009-08-10 12:48:45

0

如果进程拥有或产生了许多线程,可以快速或异步执行,那么您的主题将与SuspendThread()竞争。

完成同样事情(即过程范围)的一种方法是作为调试器附加到目标进程DebugActiveProcess(),然后简单地调用DebugBreakProcess。当进程处于中断点时,将不会创建新线程,并且所有执行,进程范围内的都将停止。