本文主要是介绍Windows_通过共享数据段(data_seg())实现应用程序只能被创建一次,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
通过data_seg()编译指令共享数据段实现程序不能多开:
如果不用cin进行阻塞,则程序会退出(达不到效果)
没有用cin阻塞的代码:
#include <iostream>
#include <Windows.h>
#include <tchar.h>
//#include "Share.h"using namespace std;#pragma data_seg("flag_data")
int app_count = 0;
#pragma data_seg()#pragma comment(linker,"/SECTION:flag_data,RWS")int main(){++app_count;if (app_count > 1){MessageBox(NULL, _T("More than one"), _T("Haha"), 0);}//int a;//cin >> a;return 0;
}
没用用cin阻塞的效果:进程名为Share_Information:
可以看出进程已经被杀死:
用cin阻塞的代码:
示例代码:
#include <iostream>
#include <Windows.h>
#include <tchar.h>
//#include "Share.h"using namespace std;#pragma data_seg("flag_data")
int app_count = 0;
#pragma data_seg()#pragma comment(linker,"/SECTION:flag_data,RWS")int main(){++app_count;if (app_count > 1){MessageBox(NULL, _T("More than one"), _T("Haha"), 0);}int a;cin >> a;return 0;
}
这篇关于Windows_通过共享数据段(data_seg())实现应用程序只能被创建一次的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!