限制应用程序只可以被启动一次
以控制台程度为例。
一般情况下在主程度所在的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文件,运行一次此文件,第二次运行时会弹出“程序已经运行”的对话框。