您当前的位置: 首页 > 

令狐掌门

暂无认证

  • 3浏览

    0关注

    513博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

MFC 程序怎么限制多开

令狐掌门 发布时间:2017-10-23 18:37:48 ,浏览量:3

      限制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()的最前面。

  

关注
打赏
1652240117
查看更多评论
立即登录/注册

微信扫码登录

0.0676s