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