給你個sample(放在::InitInstance()中):
::CreateMutex(NULL,FALSE,"Global\\Chief");
if(::GetLastError()==ERROR_ALREADY_EXISTS)
{
MessageBox("程序第二次運行,退出!");
return FALSE;
}
::CreateMutex(NULL,FALSE,"Global\\Chief");
if(::GetLastError()==ERROR_ALREADY_EXISTS)
{
MessageBox("程序第二次運行,退出!");
return FALSE;
}
解决方案 »
- 缓冲区不足而导致iocp多次接收到请求
- #pragma warning(enable:怎么用?
- 服务器架构的一个很郁闷的问题, 居然导致服务器假死!!!!!
- 关于在editbox里使用tab键的问题,请教,急!!!!!!!
- 节点 or 结点 ?
- 高分(1000分)求一服务程序!
- 请问如何设置view的背景颜色?
- 以 *.rar 为扩展名 的文件用什么浏览器可以打开啊?
- 关于Installshield的使用过程中的file group
- 获取另一个view的句柄
- 怎样在程序开始播放一AVI文件,在MYPROGRAMAPP::inIN....(){}用了MCIWND播放,MCIWND与MAINFRAME一同出来我要的是AVI播完才出MAINFRAMERAME
- 有谁知道.eml是哪种文件的扩展名?
{
CreateMutex(NULL,TRUE,AfxGetAppName());
if(GetLastError()==ERROR_ALREADY_EXISTS)
{
AfxMessageBox("程序已经运行"); //或不写
return FALSE;
}
....//原来的代码
}
//我回答过两次了...
Knowledge Base ->
Visual C++ ->
HOWTO: Limit 32-bit Applications to One Instance Using C++
ID: Q243953
::CreateMutex(NULL,FALSE,"AFX_XXX_XXXX_XXXXX");
//其中AFX_XXX_XXXX_XXXXX是.H文件中建立的唯一编码;这种方法最保险!
if(::GetLastError()==ERROR_ALREADY_EXISTS)
{
MessageBox("你想找死呀!");
return FALSE;
}
CreateMutex(NULL,FALSE,"AFX_XXX_XXXX_XXXXX");
//其中AFX_XXX_XXXX_XXXXX是.H文件中建立的唯一编码;这种方法最保险!
if (GetLastError()==ERROR_ALREADY_EXISTS)
{
MessageBox("你想找死呀!");
return FALSE;
}
SetRegistryKey(_T("我的应用名"));
HANDLE hMutex;
hMutex=CreateMutex(NULL,FALSE,"我的应用名");
if(hMutex==NULL||ERROR_ALREADY_EXISTS==::GetLastError())
{
return FALSE;
}
可以用FindWindow来查找某一特定的窗口类或能唯一标识该应用的窗口标题,若FindWindow返回是NULL,她就是现在唯一的