永发信息网

C/C++中 如何只允许运行一个程序实例?多列一些方法。

答案:4  悬赏:0  手机版
解决时间 2021-03-20 10:18
C/C++中 如何只允许运行一个程序实例?多列一些方法。
最佳答案
通过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;
}
全部回答
什么叫做一个程序实例?
你VC编译同一个工程能启动多个?还是你说的是在工程中启动线程?请说清楚一些
可以在某个指定路径下写一个文件,每次程序先检查该文件是否存在,存在就认为已经启动一个实例,退出时删除该文件
一般来说的办法就是怎么想让第二次运行知道已经有程序在运行了,或者说怎么能通知第二个程序已经有文件在运行了

例如程序运行后如果程序运行目录没有文件a.txt,就在程序运行目录新建一个文件a.txt,关闭的时候删除,这样第二次运行发现已存在了这个文件,说明程序已经在运行,故第二次运行直接退出

例如第一个运行程序用系统函数在本地监听一个socket端口,第二次运行程序发现这个端口已经被占用或者能连接,就知道已经有程序在运行了(例如smplayer就这样搞的)

例如第一个运行的程序在注册表某个地方写入一个1,退出时写入0,第二次运行的程序发现注册表这个地方是1就退出,如果是0就可以继续运行了,也就是其实是第一次运行

反正无论什么办法,具体要看你觉得怎么样合适才行的呢。还可以去找系统的进程列表,还可以测试某些环境变量啊,反正方法是很多的是死的,人是活的。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
侄子问叔叔:“天帝什么时候会来,如果天帝来
邳州驾校科目一多久看一次试
盛鑫商旅是真是假可以返利是不是传销啊?
正典日杂我想知道这个在什么地方
糖吃多了牙疼怎么缓解,不要生姜
广电宽带手机怎么看有没有人蹭网
买年货你对家里节约开支有什么建议
5寸焊管外径是多少
泸州267公交路线走那些地方?
肌肉型肥胖怎么办?
什么时候才有机会从浙江师范大学行知学院转到
《老北京的小胡同》 分段
为什么双鱼座的幸运数字有7和11,到底是多少
汽车上一共有几个传感器?
北管头村在什么地方啊,我要过去处理事情
推荐资讯
蛋这字的拼音是什么
浒头在什么地方啊,我要过去处理事情
海河进高家电行地址有知道的么?有点事想过去
温和和煦温柔温顺是同一类词吗
今天挖桩遇到个这,是什么,听说剧毒
想重新学习,今年30岁,小学毕业,要重哪里开
新的一年我看到很多人发说说说有是新的一年,
金霞名酒超市这个地址在什么地方,我要处理点
三国出名的野史有哪些?
淮南违章单子怎么缴费
果渣可以拿来做什么
66个位上的6表示
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?