常常发现一个程序启动后,再想启动同样的这个程序,它会提示程序已经启动,其中一个典型的PPS播放器,它可以设置可以打开多个PPS播放器,也可以设置只能够启动一个PPS播放器.

只能够启动一个实现如下

#include<windows.h>
#include<iostream.h>

DWORD WINAPI FuncOne(LPVOID lpParameter);
DWORD WINAPI FuncTwo(LPVOID lpParameter);

void main(){
 HANDLE hThreadone;
 HANDLE hThreadtwo;
 HANDLE hMutex;

 hMutex=CreateMutex(NULL,TRUE,"dhset");
 if(hMutex){
  if(ERROR_ALREADY_EXISTS==GetLastError()){
   cout<<"Only one instance can run !"<<endl;
   return ;
  }
 }

 hThreadone=CreateThread(NULL,0,FuncOne,NULL,0,NULL);
 hThreadtwo=CreateThread(NULL,0,FuncTwo,NULL,0,NULL);
 
 CloseHandle(hThreadone);
 CloseHandle(hThreadtwo);
 WaitForSingleObject(hMutex,INFINITE);
 ReleaseMutex(hMutex);
 ReleaseMutex(hMutex);
 Sleep(10000);
}

DWORD WINAPI FuncOne(LPVOID lpParameter){
 return 0;
}

DWORD WINAPI FuncTwo(LPVOID lpParameter){
 return 0;
}

 

运行即可.

另一种方法:利用事件方式

#include<windows.h>
#include<iostream.h>

void main(){
 HANDLE hEvent;
 hEvent=CreateEvent(NULL,FALSE,FALSE,"tui");

 if(hEvent){
  if(ERROR_ALREADY_EXISTS==GetLastError()){
   cout<<"Only one instance can run !"<<endl;
   return ;
  }
 }
 Sleep(10000);
}

 

同样效果