常常发现一个程序启动后,再想启动同样的这个程序,它会提示程序已经启动,其中一个典型的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);
}
同样效果