vc程序只运行一次的判断
来源:互联网 发布:淘宝名称大全卡通 编辑:程序博客网 时间:2024/05/18 02:09
vc程序只运行一次的判断
方法一:
BOOL CAutoUpdateApp::InitInstance()
{
HANDLE hMap=CreateFileMapping((HANDLE)0xFFFFFFFF, NULL,
PAGE_READWRITE, 0, 128, AfxGetAppName());
if(hMap == NULL) // 如果创建失败
{
AfxMessageBox("创建用于互斥运行的内存映射文件对象失败!",
MB_OK|MB_ICONSTOP);
return FALSE;
}
else if(GetLastError() == ERROR_ALREADY_EXISTS)
{
LPVOID lpMem = MapViewOfFile(hMap, FILE_MAP_WRITE, 0,0,0);
CString str = (char)lpMem;
UnmapViewOfFile(lpMem);
CloseHandle(hMap);
str="程序已在运行!";
AfxMessageBox(str, MB_OK|MB_ICONSTOP);
return FALSE;
}
else
{
LPVOID lpMem = MapViewOfFile(hMap, FILE_MAP_WRITE, 0,0,0);
//strcpy((char)lpMem, "程序正在运行!");
UnmapViewOfFile(lpMem);
CString str = (char)lpMem;
str.Format("%s/n程序开始运行!",AfxGetAppName());
AfxMessageBox(str, MB_OK|MB_ICONSTOP);
}
{
HANDLE hMap=CreateFileMapping((HANDLE)0xFFFFFFFF, NULL,
PAGE_READWRITE, 0, 128, AfxGetAppName());
if(hMap == NULL) // 如果创建失败
{
AfxMessageBox("创建用于互斥运行的内存映射文件对象失败!",
MB_OK|MB_ICONSTOP);
return FALSE;
}
else if(GetLastError() == ERROR_ALREADY_EXISTS)
{
LPVOID lpMem = MapViewOfFile(hMap, FILE_MAP_WRITE, 0,0,0);
CString str = (char)lpMem;
UnmapViewOfFile(lpMem);
CloseHandle(hMap);
str="程序已在运行!";
AfxMessageBox(str, MB_OK|MB_ICONSTOP);
return FALSE;
}
else
{
LPVOID lpMem = MapViewOfFile(hMap, FILE_MAP_WRITE, 0,0,0);
//strcpy((char)lpMem, "程序正在运行!");
UnmapViewOfFile(lpMem);
CString str = (char)lpMem;
str.Format("%s/n程序开始运行!",AfxGetAppName());
AfxMessageBox(str, MB_OK|MB_ICONSTOP);
}
AfxEnableControlContainer();
// Standard initialization
// If you are not using these features and wish to reduce the size
// of your final executable, you should remove from the following
// the specific initialization routines you do not need.
// If you are not using these features and wish to reduce the size
// of your final executable, you should remove from the following
// the specific initialization routines you do not need.
#ifdef _AFXDLL
Enable3dControls(); // Call this when using MFC in a shared DLL
#else
Enable3dControlsStatic(); // Call this when linking to MFC statically
#endif
Enable3dControls(); // Call this when using MFC in a shared DLL
#else
Enable3dControlsStatic(); // Call this when linking to MFC statically
#endif
CAutoUpdateDlg dlg;
m_pMainWnd = &dlg;
int nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
// TODO: Place code here to handle when the dialog is
// dismissed with OK
}
else if (nResponse == IDCANCEL)
{
// TODO: Place code here to handle when the dialog is
// dismissed with Cancel
}
CloseHandle(hMap);
// Since the dialog has been closed, return FALSE so that we exit the
// application, rather than start the application's message pump.
return FALSE;
}
m_pMainWnd = &dlg;
int nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
// TODO: Place code here to handle when the dialog is
// dismissed with OK
}
else if (nResponse == IDCANCEL)
{
// TODO: Place code here to handle when the dialog is
// dismissed with Cancel
}
CloseHandle(hMap);
// Since the dialog has been closed, return FALSE so that we exit the
// application, rather than start the application's message pump.
return FALSE;
}
===============================
另一不太好的方法:
BOOL CCamtestApp::InitInstance()
{
if (!FirstInstance())
return FALSE; //已经有实例存在了,退出
AfxEnableControlContainer();
{
if (!FirstInstance())
return FALSE; //已经有实例存在了,退出
AfxEnableControlContainer();
// Standard initialization
// If you are not using these features and wish to reduce the size
// of your final executable, you should remove from the following
// the specific initialization routines you do not need.
// If you are not using these features and wish to reduce the size
// of your final executable, you should remove from the following
// the specific initialization routines you do not need.
#ifdef _AFXDLL
Enable3dControls(); // Call this when using MFC in a shared DLL
#else
Enable3dControlsStatic(); // Call this when linking to MFC statically
#endif
Enable3dControls(); // Call this when using MFC in a shared DLL
#else
Enable3dControlsStatic(); // Call this when linking to MFC statically
#endif
CCamtestDlg dlg;
m_pMainWnd = &dlg;
SetDialogBkColor(RGB(120,150,180),RGB(0,0,0));
int nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
// TODO: Place code here to handle when the dialog is
// dismissed with OK
}
else if (nResponse == IDCANCEL)
{
// TODO: Place code here to handle when the dialog is
// dismissed with Cancel
}
m_pMainWnd = &dlg;
SetDialogBkColor(RGB(120,150,180),RGB(0,0,0));
int nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
// TODO: Place code here to handle when the dialog is
// dismissed with OK
}
else if (nResponse == IDCANCEL)
{
// TODO: Place code here to handle when the dialog is
// dismissed with Cancel
}
// Since the dialog has been closed, return FALSE so that we exit the
// application, rather than start the application's message pump.
return FALSE;
}
BOOL CCamtestApp::FirstInstance()
{
CWnd *pWndPrev, *pWndChild;
//根据主窗口类名和主窗口名判断是否已经有实例存在了
if (pWndPrev = CWnd::FindWindow(_T("#32770"),"测试协议"))
{//如果存在就将其激活,并显示出来
pWndChild = pWndPrev->GetLastActivePopup();
//如果是最小化的就还原窗口
if (pWndPrev->IsIconic())
pWndPrev->ShowWindow(SW_RESTORE);
pWndChild->SetForegroundWindow();
//AfxGetMainWnd()->BringWindowToTop();
return FALSE;
}
else
return TRUE;
}
// application, rather than start the application's message pump.
return FALSE;
}
BOOL CCamtestApp::FirstInstance()
{
CWnd *pWndPrev, *pWndChild;
//根据主窗口类名和主窗口名判断是否已经有实例存在了
if (pWndPrev = CWnd::FindWindow(_T("#32770"),"测试协议"))
{//如果存在就将其激活,并显示出来
pWndChild = pWndPrev->GetLastActivePopup();
//如果是最小化的就还原窗口
if (pWndPrev->IsIconic())
pWndPrev->ShowWindow(SW_RESTORE);
pWndChild->SetForegroundWindow();
//AfxGetMainWnd()->BringWindowToTop();
return FALSE;
}
else
return TRUE;
}
- vc程序只运行一次的判断
- vc程序只运行一次的判断——20100723
- VC程序只运行一次实例
- VC程序只允许运行一次
- VC程序只运行一次实例
- 程序只运行一次
- 自己的程序只运行一次
- 如何编写只运行一次的程序
- 程序只运行一次的方法
- 只允许程序运行一次的代码
- 让程序只运行一次
- 限制程序只运行一次
- 让程序只运行一次
- 让程序只运行一次
- 程序只允许运行一次
- WinForm程序只运行一次
- C++程序只运行一次
- 程序只运行一次并激活原来的程序
- 一个在c#中 调用API的例子
- tomcat简介
- Delphi 二维数组作为参数 注意方法
- 插入排序的二分查找策略
- 免费博客空间服务评测、注册和申请
- vc程序只运行一次的判断
- count 函数
- WRITE
- CSS一些用法
- Hibernate一对多单向关联
- YUV图像格式
- 搜索技术(LCS算法研究)
- Head First C# 中文版 图文皆译 第六章 继承 page210
- JS动态创建HTML总结