多实例共享数据段的例子

来源:互联网 发布:java求最小素数 编辑:程序博客网 时间:2024/06/05 19:27

  为了阻止一个程序的多个实例同时运行,除了用CreateMutex的方法外还可以用

 

共享数据段的方法。

 

#pragma data_seg("SINGLEINSTANCE")  //预处理指令用于设置共享数据段,名称为SINGLEINSTANCE


BOOL exist = FALSE;                                 //对变量进行定义,并初始化,否则微软编译器会把没有初始化的数据放到.BSS段中,

                                                                 //导致多个进程无法共享

                                                             

#pragma data_seg()                                //表示段的结束

 

#pragma comment(linker,"/SECTION:SINGLEINSTANCE,RWS") //连结器必须知道有一个SINGLEINSTANCE
                                                                                                 //共享数据段,字母RWS表示段具有读、写和共享属性

 

在程序的InitInstance()函数中增加判断

 

 if( TRUE == exist )
 {
        AfxMessageBox("程序正在运行");
        return FALSE;
 }

 

//而后在你的程序后,将exist 设为真

 

CRelayServerDlg dlg;
 m_pMainWnd = &dlg;
exist = TRUE;

原创粉丝点击