4个回答
展开全部
一般来说的办法就是怎么想让第二次运行知道已经有程序在运行了,或者说怎么能通知第二个程序已经有文件在运行了
例如程序运行后如果程序运行目录没有文件a.txt,就在程序运行目录新建一个文件a.txt,关闭的时候删除,这样第二次运行发现已存在了这个文件,说明程序已经在运行,故第二次运行直接退出
例如第一个运行程序用系统函数在本地监听一个socket端口,第二次运行程序发现这个端口已经被占用或者能连接,就知道已经有程序在运行了(例如smplayer就这样搞的)
例如第一个运行的程序在注册表某个地方写入一个1,退出时写入0,第二次运行的程序发现注册表这个地方是1就退出,如果是0就可以继续运行了,也就是其实是第一次运行
反正无论什么办法,具体要看你觉得怎么样合适才行的呢。还可以去找系统的进程列表,还可以测试某些环境变量啊,反正方法是很多的是死的,人是活的。
例如程序运行后如果程序运行目录没有文件a.txt,就在程序运行目录新建一个文件a.txt,关闭的时候删除,这样第二次运行发现已存在了这个文件,说明程序已经在运行,故第二次运行直接退出
例如第一个运行程序用系统函数在本地监听一个socket端口,第二次运行程序发现这个端口已经被占用或者能连接,就知道已经有程序在运行了(例如smplayer就这样搞的)
例如第一个运行的程序在注册表某个地方写入一个1,退出时写入0,第二次运行的程序发现注册表这个地方是1就退出,如果是0就可以继续运行了,也就是其实是第一次运行
反正无论什么办法,具体要看你觉得怎么样合适才行的呢。还可以去找系统的进程列表,还可以测试某些环境变量啊,反正方法是很多的是死的,人是活的。
展开全部
可以在某个指定路径下写一个文件,每次程序先检查该文件是否存在,存在就认为已经启动一个实例,退出时删除该文件
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
通过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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
什么叫做一个程序实例?
你VC编译同一个工程能启动多个?还是你说的是在工程中启动线程?请说清楚一些
你VC编译同一个工程能启动多个?还是你说的是在工程中启动线程?请说清楚一些
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询