C/C++中 如何只允许运行一个程序实例?多列一些方法。
答案:4 悬赏:0 手机版
解决时间 2021-03-20 10:18
- 提问者网友:沉默的哀伤
- 2021-03-19 11:29
C/C++中 如何只允许运行一个程序实例?多列一些方法。
最佳答案
- 五星知识达人网友:未来江山和你
- 2021-03-19 12:40
通过if(GetLastError() == ERROR_ALREADY_EXISTS)来进行判断,GetLastError()是API函数,该函数返回值为调用的线程的错误代码值(unsigned long),代码183(ERROR_ALREADY_EXISTS)表示文件已存在,无法创建该文件。例如:在你的工程名.cpp文件的InitInstance()函数中,添加如下代码:
if(GetLastError() == ERROR_ALREADY_EXISTS)
{
AfxMessageBox("已经有XX程序在运行!",MB_ICONEXCLAMATION);
return FALSE;
}
if(GetLastError() == ERROR_ALREADY_EXISTS)
{
AfxMessageBox("已经有XX程序在运行!",MB_ICONEXCLAMATION);
return FALSE;
}
全部回答
- 1楼网友:轻雾山林
- 2021-03-19 16:28
什么叫做一个程序实例?
你VC编译同一个工程能启动多个?还是你说的是在工程中启动线程?请说清楚一些
你VC编译同一个工程能启动多个?还是你说的是在工程中启动线程?请说清楚一些
- 2楼网友:旧脸谱
- 2021-03-19 15:24
可以在某个指定路径下写一个文件,每次程序先检查该文件是否存在,存在就认为已经启动一个实例,退出时删除该文件
- 3楼网友:孤独的牧羊人
- 2021-03-19 13:55
一般来说的办法就是怎么想让第二次运行知道已经有程序在运行了,或者说怎么能通知第二个程序已经有文件在运行了
例如程序运行后如果程序运行目录没有文件a.txt,就在程序运行目录新建一个文件a.txt,关闭的时候删除,这样第二次运行发现已存在了这个文件,说明程序已经在运行,故第二次运行直接退出
例如第一个运行程序用系统函数在本地监听一个socket端口,第二次运行程序发现这个端口已经被占用或者能连接,就知道已经有程序在运行了(例如smplayer就这样搞的)
例如第一个运行的程序在注册表某个地方写入一个1,退出时写入0,第二次运行的程序发现注册表这个地方是1就退出,如果是0就可以继续运行了,也就是其实是第一次运行
反正无论什么办法,具体要看你觉得怎么样合适才行的呢。还可以去找系统的进程列表,还可以测试某些环境变量啊,反正方法是很多的是死的,人是活的。
例如程序运行后如果程序运行目录没有文件a.txt,就在程序运行目录新建一个文件a.txt,关闭的时候删除,这样第二次运行发现已存在了这个文件,说明程序已经在运行,故第二次运行直接退出
例如第一个运行程序用系统函数在本地监听一个socket端口,第二次运行程序发现这个端口已经被占用或者能连接,就知道已经有程序在运行了(例如smplayer就这样搞的)
例如第一个运行的程序在注册表某个地方写入一个1,退出时写入0,第二次运行的程序发现注册表这个地方是1就退出,如果是0就可以继续运行了,也就是其实是第一次运行
反正无论什么办法,具体要看你觉得怎么样合适才行的呢。还可以去找系统的进程列表,还可以测试某些环境变量啊,反正方法是很多的是死的,人是活的。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯