初始化程式前关闭同名进程

来源:互联网 发布:mac的jdk路径 编辑:程序博客网 时间:2024/06/06 07:27
bool FindProcess(const char *pchProcessName){HANDLE Snapshot;Snapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);PROCESSENTRY32 processListStr;processListStr.dwSize=sizeof(PROCESSENTRY32);bool bFindProcess = false;BOOL bProcessExist;bProcessExist=Process32First(Snapshot,&processListStr);char psName[255];while(bProcessExist){memset(psName, 0, sizeof(psName));for (int i=0;i<wcslen(processListStr.szExeFile) + 1;i++){psName[i] = processListStr.szExeFile[i];}//OutputDebugString(psName);//OutputDebugString("\n");if(CompareStrNocase(psName,pchProcessName)){bFindProcess = true;break;}else{bProcessExist=Process32Next(Snapshot,&processListStr);}}CloseHandle(Snapshot);return bFindProcess;}bool KillProcess(const char *pchProcessName){HANDLE Snapshot;Snapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);PROCESSENTRY32 processListStr;processListStr.dwSize=sizeof(PROCESSENTRY32);BOOL bProcessExist;bProcessExist=Process32First(Snapshot,&processListStr);char psName[260];//if (!FindProcess(pchProcessName))//return true;while(bProcessExist){memset(psName, 0, sizeof(psName));for (int i=0;i<wcslen(processListStr.szExeFile) + 1;i++){psName[i] = processListStr.szExeFile[i];}if(CompareStrNocase(psName,pchProcessName)){HANDLE pFindHanle = OpenProcess(PROCESS_TERMINATE, false, processListStr.th32ProcessID);if (pFindHanle != NULL)TerminateProcess(pFindHanle, 0);CloseHandle(pFindHanle);break;}else{bProcessExist=Process32Next(Snapshot,&processListStr);}}CloseHandle(Snapshot);return !FindProcess(pchProcessName);}bool CompareStrNocase(const char *A, const char *B){char copy_A[255]={0};char copy_B[255]={0};strcpy(copy_A,A);strcpy(copy_B,B);int len_A=strlen(copy_A);int len_B=strlen(copy_B);if(len_A!=len_B)return false;else{for(int i=0;i<len_A;i++){if(isalpha(copy_A[i]))copy_A[i]=tolower(copy_A[i]);if(isalpha(copy_B[i]))copy_B[i]=tolower(copy_B[i]);}if(0==strcmp(copy_A,copy_B))return true;elsereturn false;}}bool AppIsExist(const char *pchProcessName){HANDLEm_hMutex;m_hMutex = OpenMutex(MUTEX_ALL_ACCESS, false,(LPCWSTR)pchProcessName);if (m_hMutex == NULL)m_hMutex = CreateMutex(NULL, true,(LPCWSTR)pchProcessName);else{return true;}return false;}
0 0