已知进程ID,如何知道该进程是否已经退出? 会不会有下面这种这种情况存在,进程A,在10:00中运行 ID 为128, 程序C在此时获得进程A的ID,并保存, 然后在10:15进程A自动退出.进程B,在10:30中运行 ID 为也可能128.进程C在10:30后,依据在10:00中保存的进程ID判断进程A是否退出,结果正确吗?问题:已知进程ID,如何知道该进程是否已经退出? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 问题点:进程A和进程B有没有可能是同一个ID 可以跳过这个问题来考虑。你可以使用NtQueryInformationProcess来获取进程启动的时间,如果10:30后根据这个ID获得的进程启动时间仍然是10:00,那么当然可以认为这个进程就是原来的A进程。附:NtQueryInformationProcess的参考资料http://undocumented.ntinternals.net/UserMode/Undocumented%20Functions/NT%20Objects/Process/NtQueryInformationProcess.html 你先调用OpenProcess函数打开这个进程句柄,如果失败,GetLastError查看,确定是进程已经退出,如果成功打开的话,你用GetModuleFileNameEx(6.0没有这个函数,需要从更高版本拿到头文件Psapi.h和库文件Psapi.lib才可以)来得到这个进程的路径名,来确定是否是A进程(在之前,可以用EnumProcessModuels)。当然你如果是10:00A进程开始,C进程为什么要只保存ID呢?你可以在10:00的时候就用OpenProcess打开这个进程,然后用WaitForSignleObject在一个线程中等待这个进程退出的时候通知C进程。或者,你用OpenProcess打开后保存这个句柄,在10:30的时候,用GetExitCodeProcess来判断进程A是不是已经结束,如果返回GetExitCodeProcess返回失败,或者返回的退出码不等于STILL_ACTIVE,就知道这个进程已经结束。 小白求助帖——右键菜单里面的一个菜单项为POP菜单,要把这个菜单置灰怎么办。。急急急急 MFC 获得在另外窗口内的鼠标点位置 com中带参数的怎么调用,接口如下: DLL多线程+STL::deque的问题,公司没有人能解决. vc6中编译程序的问题! 关于响应tab键问题。 这究竟是怎么回事? 如何做一个浮动窗口添加到VC开发环境中 基本结构提给忘记了,帮办忙~~ MFC关于调用点阵字体的问题 用MFC做界面还有必要吗???
进程A和进程B有没有可能是同一个ID
你可以使用NtQueryInformationProcess来获取进程启动的时间,如果10:30后根据这个ID获得的进程启动时间仍然是10:00,那么当然可以认为这个进程就是原来的A进程。
附:NtQueryInformationProcess的参考资料
http://undocumented.ntinternals.net/UserMode/Undocumented%20Functions/NT%20Objects/Process/NtQueryInformationProcess.html
当然你如果是10:00A进程开始,C进程为什么要只保存ID呢?你可以在10:00的时候就用OpenProcess打开这个进程,然后用WaitForSignleObject在一个线程中等待这个进程退出的时候通知C进程。或者,你用OpenProcess打开后保存这个句柄,在10:30的时候,用GetExitCodeProcess来判断进程A是不是已经结束,如果返回GetExitCodeProcess返回失败,或者返回的退出码不等于STILL_ACTIVE,就知道这个进程已经结束。