限制应用程序只可以被启动一次

来源:互联网 发布:斯蒂芬库里数据 编辑:程序博客网 时间:2024/04/28 09:51

以控制台程度为例。

 

一般情况下在主程度所在的cpp文件的头部添加如下代码:

#pragma data_seg("Shared")int volatile g_lAppInstance = 0;#pragma data_seg()#pragma comment(linker,"/section:Shared,RWS")


注意:若此cpp文件中,有#include "stdafx.h",应该在这条语句之后添加,不然会报找不到g_lAppInstance的错误。

 

然后在main函数的开头添加如下代码:

if ( ++g_lAppInstance > 1 ){MessageBox(NULL,(LPCSTR)"程序已经运行",(LPCSTR)"",MB_OK);return -1;}


下面为一个简单的实例,代码如下:

#pragma data_seg("Shared")int volatile g_lAppInstance = 0;#pragma data_seg()#pragma comment(linker,"/section:Shared,RWS")#include <iostream>#include "windows.h"using namespace std;int main(){if ( ++g_lAppInstance > 1 ){MessageBox(NULL,"程序已经运行","",MB_OK);return 0;}cout << "---------------hello world--------------" << endl;while(1);return 0;}

 

编译生成.exe文件,运行一次此文件,第二次运行时会弹出“程序已经运行”的对话框。