如何判断某一程序是否正在运行中.

benjiamen 2007-08-16 09:29:12
我需要做个监控某一个(组)的程序当前是否正在运行中的功能,如果当前有不在运行的程序,则打开这个程序运行它.最初这一个(组)的启动是由本程序完成的,所以,当前程序中保存了这些程序的一些信息.
这些信息主要如下,
1. 程序的绝对路径.
2. 打开进程时的进程ID((CreateProcess API,PROCESS_INFORMATION.hProcess).
3. 如果进程有主窗口的话,那么会有此窗口的 HWND
4. 窗口的标题.

根据上面的条件,我要隔段时间(如 1 秒 )扫描这些程序是否正在运行中. 有哪些方法可以做? 怎样做效率高? 谢谢了
...全文
523 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
benjiamen 2007-08-16
  • 打赏
  • 举报
回复
if(CreateProcess(g_tlist[m_TaskCount].ProcessName,NULL,NULL,NULL,NULL,CREATE_NEW_CONSOLE,NULL,NULL,NULL,&processInfo))
{
g_tlist[m_TaskCount].dwProcessId = processInfo.dwProcessId;
g_tlist[m_TaskCount].dwState = 1;
CloseHandle(processInfo.hThread);
CloseHandle(processInfo.hProcess); //进程句柄被关闭了,
}
//?? 如果不关闭句柄的话可以用wltg2001(红猪)的思路来试试.但是,如果很多进程的话如果不关闭的话是不是有影响.

emptyness 2007-08-16
  • 打赏
  • 举报
回复
wltg2001(红猪) 的就可以的咯...
superarhow 2007-08-16
  • 打赏
  • 举报
回复
或者用GetThreadExitCode
bobob 2007-08-16
  • 打赏
  • 举报
回复
改名字再改回来。。。。。。这个最省资源了吧?
wltg2001 2007-08-16
  • 打赏
  • 举报
回复
用WaitForSingleObject不就行了,进程的句柄在进程结束之后就会变成有信号状态,WaitForSingleObject就会返回,你不就知道了。
benjiamen 2007-08-16
  • 打赏
  • 举报
回复
因为是要不停的去扫描这些程序,用CreateToolhelp32Snapshot。对程序否会影响到程序的性能.有没有其他的方法,可不可以以上面4个条件来做?
Uindex 2007-08-16
  • 打赏
  • 举报
回复
有个现成办法,做一次CreateToolhelp32Snapshot。

代码见:http://topic.csdn.net/t/20030115/20/1362395.html
tianhuo_soft 2007-08-16
  • 打赏
  • 举报
回复
监视进程 有一个例子是坐任务管理器
你可以用一个 数组来存储进程名
然后在和你的进程相比较
速度吗 可以用 字母单匹配
xiaoQ008 2007-08-16
  • 打赏
  • 举报
回复
任务管理器查看下嘛
emptyness 2007-08-16
  • 打赏
  • 举报
回复
删除程序文件 ^_^
能删除就没在运行...

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧