c++检查程序是否运行,防止同一程序运行2个的方法

方法一:创建互斥量方式,判断程序是否正在运行
Application->Initialize();
Application->Title = “XXX系统”;

null

//检测程序是否已经运行,并给出提示。
CreateMutex( NULL, False, Application->Title.c_str() );
if ( GetLastError() == ERROR_ALREADY_EXISTS )
{
MessageBox( NULL, “XXX系统已经在运行!”, Application->Title.c_str(), MB_ICONERROR );
Application->Terminate();
return 0;
}

方法二:遍历系统存在的进程,查找制定进程是否存在
vector<String> JCName;
AnsiString ExeFile;
PROCESSENTRY32 processinfo;
processinfo.dwSize = sizeof(processinfo);
HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if(snapshot != NULL )
{
bool flag = Process32First(snapshot,&processinfo);
while (flag)
{
ExeFile = AnsiString(processinfo.szExeFile);
JCName.push_back(ExeFile);
flag = Process32Next(snapshot,&processinfo);
}
int k=0;
for(unsigned int i=0;i<JCName.size();i++)
{
if(JCName[i]==ExtractFileName(Application->ExeName)||JCName[i]==Application->ExeName)
{
k++;
if(k>1)
{
String tx=”【”+Application->ExeName+”】程序已运行!”;
String cp=”XXX系统”;
Application->MessageBox(tx.c_str(),cp.c_str(),32+16);
Application->Terminate();
}
}
}
}

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容