程序怎么限制多开"/>
MFC 程序怎么限制多开
限制MFC程序多开的方法很多,例如,信号量,事件,互斥等。下面使用的是互斥体Mutex。
1、原理
创建一个互斥体,并检查它是否已经有拥有者,如果有,表明互斥体已经建立(程序已经启动),否则表明程序未启动。
2、实现
(1)首先创建一个互斥体,CreateMutex函数,第一个参数可以设置为NULL,第二个参数必须设置为false,第三个参数表示互斥体的名称,这个名称最好有一些特殊标识以防止与其他应用程序冲突,比如程序名+时间。
(2)使用GetLastError()函数判断错误信息是否为ERROR_ALREADY_EXISTS,如果是,则表示程序已经启动。
具体代码如下:
BOOL COneexeApp::InitInstance()
{HANDLE hObject = ::CreateMutex(NULL,FALSE, _T("fuckmfc6666")); if(GetLastError() == ERROR_ALREADY_EXISTS) { return FALSE; } // 如果一个运行在 Windows XP 上的应用程序清单指定要// 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式,//则需要 InitCommonControlsEx()。否则,将无法创建窗口。INITCOMMONCONTROLSEX InitCtrls;InitCtrls.dwSize = sizeof(InitCtrls);// 将它设置为包括所有要在应用程序中使用的// 公共控件类。InitCtrls.dwICC = ICC_WIN95_CLASSES;InitCommonControlsEx(&InitCtrls);CWinApp::InitInstance();................
}
注意:限制多开的代码必须写在InitInstance()的最前面。
更多推荐
MFC 程序怎么限制多开
发布评论