怎么检测进程中某一程序是否运行?

天河落落 2012-04-06 01:17:52
怎么检测进程中某一程序是否运行?比如打开某一exe程序的时候,检查已经运行的话就不再打开了。
...全文
602 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
aranjuze 2012-05-10
  • 打赏
  • 举报
回复
在你的 项目.cpp文件中加入如下代码

//====利用互斥,防止多个程序运行====
HANDLE hMutex=CreateMutex(NULL,TRUE,"WeightManager"); //进程中的名称
if(hMutex==NULL||GetLastError() == ERROR_ALREADY_EXISTS)
{
ShowMessage("稽核票管理软件已经运行.");
CloseHandle(hMutex);
return false;
}
cczlp 2012-05-08
  • 打赏
  • 举报
回复
如果列举的是其他进程, 没有绝对准确的方法, 进程运行后是可以改程序的名字的, 还可以直接从内存运行, 还可以套用其他进程外壳.
CandPointer 2012-05-07
  • 打赏
  • 举报
回复
命令。
tasklist /fi Imagename eq "some.exe"

进程单例?

创建 mutex 对象。

windows 核心编程,第三章?
我不懂电脑 2012-05-07
  • 打赏
  • 举报
回复
可以列举当前系统所有进程,BCB6自带了一个例子,手头没有BCB不记得名字了,自己找一下吧。
CCED136 2012-05-07
  • 打赏
  • 举报
回复
楼主到底是检测程序自身是否第一次运行, 还是检测其他程序是否在运行?

如果是检测程序自身是否运行, 就用具有名字的互斥或者事件都行, Mutex or Event , 这两个东西都简单, 看看 MSDN 就能搞定。

如果是检测其他程序是否运行, 那就只有列举当前系统所有进程的方式了, 列举的方法有快照(CreateToolhelp32Snapshot),PSAPI 等, 这个方法也很多。
ccrun.com 2012-05-07
  • 打赏
  • 举报
回复
光检测文件名是不严谨的,应该比对完全路径,因为同名的EXE很多。
欧阳帆54 2012-04-08
  • 打赏
  • 举报
回复
查看任务管理器有没有运行这个程序啊
对牛乱弹琴 2012-04-08
  • 打赏
  • 举报
回复
互斥吧,我见过这个用法,不过忘了怎么用了,很简单
mgsg 2012-04-06
  • 打赏
  • 举报
回复
String strFileName;
char szBuf[256];

bool bFound(false);

::PROCESSENTRY32 pe32 = {sizeof(pe32)};
HANDLE hSnapShot = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (hSnapShot == NULL)
return bFound;

try
{
bool bFlag = ::Process32First(hSnapShot, &pe32);
while (bFlag)
{
strFileName = String(pe32.szExeFile);
if (strFileName.Pos("\\") != 0)
strFileName = ExtractFileName(strFileName);
if (SameText(strFileName, strExeFile))
{
bFound = true;
break;
}
bFlag = ::Process32Next(hSnapShot, &pe32);
}
}
__finally
{
::CloseHandle(hSnapShot);
}

return bFound;
Re: 《Linux 进程管理命令》   ---------------------------------------内容提要: 01/15)命令 ps         :查看进程(快照)02/15)命令 pstree   :显示进程状态树03/15)命令 pgrep   :查找匹配条件的进程04/15)命令 kill        :终止进程号(1277)05/15)命令 killall    :通过进程名(nginx)终止进程(父/子进程)06/15)命令 pkill      :通过进程名终止进程(通杀)/终止客户端(pst/tty)07/15)命令 top       :实时显示系统各个进程的资源占用状况(录像)08/15)命令 nice      :调整程序运行时的优先级09/15)命令 renice   :调整运行进程的优先级10/15)命令 nohup  :用户退出系统,进程继续工作11/15)命令 strace   :跟踪进程的系统调用12/15)命令 ltrace    :跟踪进程调用库函数13/15)命令 runlevel:输出当前运行级别14/15)命令 init        :初始化 Linux 进程15/15)命令 service  :管理系统服务  本人在教学和实战过程发现,即便是有一定运维经验的人,可能已经能够搭建一定复杂度的Linux架构,但是在来来回回的具体操作,还是体现出CLI(命令界面)功底不够扎实,甚至操作的非常‘拙’、处处露‘怯’。 对一个士兵来说,枪就是他的武器,对于一个程序员来说,各种library(工具库)就是他的武器;而对于Linux运维人员来说,无疑命令行工具CLI(命令界面)就是他们的武器;高手和小白之间的差距往往就体现在对于这些“武器”的掌握和熟练程度上。有时候一个参数就能够解决的事情,小白们可能要写一个复杂的Shell脚本才能搞定,这就是对CLI(命令界面)没有理解参悟透彻导致。 研磨每一个命令就是擦拭手的作战武器,平时不保养不理解,等到作战的时候,一定不能够将手的武器发挥到最好,所以我们要平心、静气和专注,甘坐冷板凳一段时间,才能练就一身非凡的内功! 本教程从实战出发,结合当下流行或最新的Linux(v6/7/8 版本)同时演示,将命令行结合到解决企业实战问题来,体现出教学注重实战的务实精神,希望从事或未来从事运维的同学,能够认真仔细的学完Linux核心命令的整套课程。 本课程系列将逐步推出,看看我教学的进度和您学习的步伐,孰占鳌头! 注:关于教学环境搭建,可以参考本人其它课程系列,本教学就不再赘述! 《参透 VMware 桌面级虚拟化》 《在虚拟机安装模版机(包括应用软件等)》 《SecureCRT 连接 GNS3/Linux 的安全精密工具》

1,221

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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