我用VC++写了个简单对话框程序,我想让它只能运行一个,该怎么实现? 5
我用VC++写了个简单对话框程序,我想让它只能运行一个,不能同时打开多个,该怎么用代码实现呀?请教大家,代码该怎么写呢?...
我用VC++写了个简单对话框程序,我想让它只能运行一个,不能同时打开多个,该怎么用代码实现呀?请教大家,代码该怎么写呢?
展开
6个回答
展开全部
很简单,在你程序初始化的地方调用这个函数,如果返回FALSE就退出程序,
BOOL MutexPass(void)
{
BOOL lbReval;
HANDLE hEvent;
hEvent = CreateEvent(NULL,FALSE,FALSE,_T("Global\\ONE"));
if(Event!=NULL)
{
if(GetLastError() == ERROR_ALREADY_EXISTS)
{
lbReval = FALSE;
CloseHandle(hEvent);
}
else
lbReval = TRUE;
}
else
lbReval = TRUE;
return lbReval;
}
BOOL MutexPass(void)
{
BOOL lbReval;
HANDLE hEvent;
hEvent = CreateEvent(NULL,FALSE,FALSE,_T("Global\\ONE"));
if(Event!=NULL)
{
if(GetLastError() == ERROR_ALREADY_EXISTS)
{
lbReval = FALSE;
CloseHandle(hEvent);
}
else
lbReval = TRUE;
}
else
lbReval = TRUE;
return lbReval;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在要创建的对话框类中声明一个成员变量bool m_bIsFirst; 在构造函数中初始化为true;然后在创建对话框的消息处理函数中加上如下代码 if(m_bIsFirst) { dlg.DoModel();m_bIsFirst=false; }
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
常用的方法是建立一个对话框类的指针,初始化赋值为NULL,对话框建立时把对话框的指针赋给它,销毁时再赋为NULL。以这个指针为判断依据判断是否建立对话框。
if(!指针变量==NULL)
建立对话框
else
return;
if(!指针变量==NULL)
建立对话框
else
return;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你可以建立一个互斥体。这样就可以防止运行多个对话框了。具体代码你可以在网上查一查
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
//互斥量
HANDLE g_handle = NULL;
SECURITY_ATTRIBUTES sa;
SECURITY_DESCRIPTOR sd;
InitializeSecurityDescriptor(&sd,SECURITY_DESCRIPTOR_REVISION);
SetSecurityDescriptorDacl(&sd,TRUE, NULL, FALSE);
sa.nLength = sizeof(sa);
sa.lpSecurityDescriptor = &sd;
sa.bInheritHandle = TRUE;
g_handle = CreateMutex(&sa , true , "Global\\OnlyOne");
if ((g_handle ) && (GetLastError() == ERROR_ALREADY_EXISTS))
{
CloseHandle(g_handle);
return TRUE;
}
HANDLE g_handle = NULL;
SECURITY_ATTRIBUTES sa;
SECURITY_DESCRIPTOR sd;
InitializeSecurityDescriptor(&sd,SECURITY_DESCRIPTOR_REVISION);
SetSecurityDescriptorDacl(&sd,TRUE, NULL, FALSE);
sa.nLength = sizeof(sa);
sa.lpSecurityDescriptor = &sd;
sa.bInheritHandle = TRUE;
g_handle = CreateMutex(&sa , true , "Global\\OnlyOne");
if ((g_handle ) && (GetLastError() == ERROR_ALREADY_EXISTS))
{
CloseHandle(g_handle);
return TRUE;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询