6个回答
展开全部
使用OpenProcess打开进程,然后用ToolhelpAPI的CreateToolhelp32Snapshot函数创建线程快照,然后用Thread32First和用Thread32Next枚举该进程的线程,对于枚举出来的该进程的每个线程结构中获取线程ID,用OpenThread打开线程,用SuspendThread挂起该线程。当该进程的所有线程被挂起,该进程就被挂起了,也就被暂停了。反之,想恢复该进程,只需用函数ResumeThread恢复该进程的所有线程即可。 以上的做法是因为win32子系统没有导出SuspendProcess函数,只能绕个弯实现,可在Native API,却有该函数,函数名为ZwSuspendProcess(也可能是SuspendProcess,我用手机写这个的,没电脑,没法查,反正有一个是对的,你可以用VS里的工具DEPEND查查看函数名),在ntdll.dll被导出,该函数可以在vb中使用,不过得自己写声明,他的声明和SuspendThread几乎是一样的,就是句柄是进程句柄而不是线程句柄而已,与之对于的是ZwResumeProcess(也可能是ResumeProcess)。
2015-11-09 · 知道合伙人教育行家
关注
展开全部
使用OpenProcess打开进程,然后用ToolhelpAPI的CreateToolhelp32Snapshot函数创建线程快照,然后用Thread32First和用Thread32Next枚举该进程的线程,对于枚举出来的该进程的每个线程结构中获取线程ID,用OpenThread打开线程,用SuspendThread挂起该线程。当该进程的所有线程被挂起,该进程就被挂起了,也就被暂停了。反之,想恢复该进程,只需用函数ResumeThread恢复该进程的所有线程即可。 以上的做法是因为win32子系统没有导出SuspendProcess函数,只能绕个弯实现,可在Native API,却有该函数,函数名为ZwSuspendProcess(也可能是SuspendProcess,我用手机写这个的,没电脑,没法查,反正有一个是对的,你可以用VS里的工具DEPEND查查看函数名),在ntdll.dll被导出,该函数可以在vb中使用,不过得自己写声明,他的声明和SuspendThread几乎是一样的,就是句柄是进程句柄而不是线程句柄而已,与之对于的是ZwResumeProcess(也可能是ResumeProcess)。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-07-20
展开全部
使用OpenProcess打开进程,然后用ToolhelpAPI的CreateToolhelp32Snapshot函数创建线程快照,然后用Thread32First和用Thread32Next枚举该进程的线程,对于枚举出来的该进程的每个线程结构中获取线程ID,用OpenThread打开线程,用SuspendThread挂起该线程。当该进程的所有线程被挂起,该进程就被挂起了,也就被暂停了。反之,想恢复该进程,只需用函数ResumeThread恢复该进程的所有线程即可。 以上的做法是因为win32子系统没有导出SuspendProcess函数,只能绕个弯实现,可在Native API,却有该函数,函数名为ZwSuspendProcess(也可能是SuspendProcess,我用手机写这个的,没电脑,没法查,反正有一个是对的,你可以用VS里的工具DEPEND查查看函数名),在ntdll.dll被导出,该函数可以在vb中使用,不过得自己写声明,他的声明和SuspendThread几乎是一样的,就是句柄是进程句柄而不是线程句柄而已,与之对于的是ZwResumeProcess(也可能是ResumeProcess)。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-07-20
展开全部
暂停是不可能的了,直接关闭结束掉还OK
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-07-20
展开全部
api有条函数功能叫什么诸如代码的,你可以注入特权指令使cpu暂停啊,具体的我不知道,我只是提醒你一下的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询