限制應用程序只可以被啓動一次

以控制檯程度爲例。

 

一般情況下在主程度所在的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文件,運行一次此文件,第二次運行時會彈出“程序已經運行”的對話框。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章