如何保证同一程序只执行一次,只有一个窗口。。。 能提供最有效和最方便的方法吗? 能不能给个链接··· 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 BOOL CxxxxApp::InitInstance(){ HANDLE hMap=CreateFileMapping((HANDLE)0XFFFFFFFF,NULL,PAGE_READWRITE,0,128,WinText); if(hMap==NULL) { AfxMessageBox("失败",MB_OK|MB_ICONSTOP); return FALSE; } else if(GetLastError()==ERROR_ALREADY_EXISTS) { CloseHandle(hMap); CWnd* pWnd=CWnd::FindWindow(NULL,WinText); if(pWnd!=NULL) { CWnd* pWndPopup=pWnd->GetLastActivePopup(); pWnd->SetForegroundWindow(); if(pWnd->IsIconic()) pWnd->ShowWindow(SW_SHOWNORMAL); if(pWnd!=pWndPopup) pWndPopup->SetForegroundWindow(); } return FALSE; } } BOOL CDialogDemoDlg::OnInitDialog(){ CDialog::OnInitDialog(); CreateMutex(NULL, FALSE, "DialogDemoDlg"); if(GetLastError()==ERROR_ALREADY_EXISTS) OnOK();........} 同一时刻保证程序只有一个实例,使这个意思吗?如果是的话,可以通过互斥对象解决。如下BOOL C***App::InitInstance(){ hMutexRun = CreateMutex(NULL, TRUE, "TEST_Mutex"); if (hMutexRun !=NULL) if (GetLastError() == ERROR_ALREADY_EXISTS) { return FALSE; }...}int C***App::ExitInstance() { ReleaseMutex(hMutexRun); return CWinApp::ExitInstance();} 用FindWindow例如:HWND hWnd = ::FindWindow(YOUR_WINDOW_CLASS_NAME, NULL) //如果找不到,则返回NULLif (hWnd =! NULL) //... 你的程序已经运行了 回调函数问题 ComboBox 如何禁止修改内容,但是可以选择 对话框比较大 滚动滚动条时 闪烁 如何解决 如何在不影响现在系统的情况下给c盘增加空间? WINDOWS资源管理器(explorer.exe)转到按钮打开文件夹调用的API是哪个? 哪里有自绘方面的例子 directShow连接指定摄像头 $$$$$$$$$$$$$$$$如何使SCrollView视图的实现自动滚动 调试时候的配制问题 关于Dll嵌套?? 关于状态栏,工具栏的一个简单问题 如何使用odbc api 从结果集中取得任意一条记录(在相等,搞定立马结分)
{
HANDLE hMap=CreateFileMapping((HANDLE)0XFFFFFFFF,NULL,PAGE_READWRITE,0,128,WinText);
if(hMap==NULL)
{
AfxMessageBox("失败",MB_OK|MB_ICONSTOP);
return FALSE;
}
else if(GetLastError()==ERROR_ALREADY_EXISTS)
{
CloseHandle(hMap);
CWnd* pWnd=CWnd::FindWindow(NULL,WinText);
if(pWnd!=NULL)
{
CWnd* pWndPopup=pWnd->GetLastActivePopup();
pWnd->SetForegroundWindow();
if(pWnd->IsIconic())
pWnd->ShowWindow(SW_SHOWNORMAL);
if(pWnd!=pWndPopup)
pWndPopup->SetForegroundWindow();
}
return FALSE;
}
}
{
CDialog::OnInitDialog();
CreateMutex(NULL, FALSE, "DialogDemoDlg");
if(GetLastError()==ERROR_ALREADY_EXISTS)
OnOK();
........
}
BOOL C***App::InitInstance()
{
hMutexRun = CreateMutex(NULL, TRUE, "TEST_Mutex");
if (hMutexRun !=NULL)
if (GetLastError() == ERROR_ALREADY_EXISTS)
{
return FALSE;
}
...
}
int C***App::ExitInstance()
{
ReleaseMutex(hMutexRun);
return CWinApp::ExitInstance();
}
HWND hWnd = ::FindWindow(YOUR_WINDOW_CLASS_NAME, NULL) //如果找不到,则返回NULL
if (hWnd =! NULL)
//... 你的程序已经运行了