方法一:创建互斥量方式,判断程序是否正在运行
Application->Initialize();
Application->Title = “XXX系统”;
//检测程序是否已经运行,并给出提示。
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();
}
}
}
}
暂无评论内容