c++单实例运行的两种方法,VC.NET同样可以用

单实例运行的两种方法:

 

一、建立定义一个共享的,有名字的数据段,关键的是,这个数据段中的全局变量可以被多个进程共享。

 

#include <windows.h>
//建立
#pragma data_seg("shared")
HWND hWnd=NULL;
#pragma data_seg()
//结束
#pragma comment(linker,"/section:Shared,RWS")
//字母RWS表示段具有读、写和共享属性

BOOL CMyDlg::OnInitDialog()
{
CDialog::OnInitDialog();
if(hWnd==NULL)
{
hWnd=GetActiveWindow();
}else
{
::SetForegroundWindow(hwnd);
ExitProcess(0);
}
return TRUE;
}

 

二、创建一个互斥体(MUTEX), 一旦不再需要,注意必须用CloseHandle函数将互斥体句柄关闭。

 

#include <windows.h>

BOOL CMyDlg::OnInitDialog()
{
CDialog::OnInitDialog();
HANDLE m_hMutex = CreateMutex(NULL, FALSE, "Mutex_Server_Download");
if (GetLastError() == ERROR_ALREADY_EXISTS) {
CloseHandle(m_hMutex);
m_hMutex = NULL;
return;
}
return TRUE;
}

(文/乱码)

本文来源:http://www.badteen.net/?post=169


如果给你带来帮助,欢迎微信或支付宝扫一扫,赞一下。