mfc怎样使对话框只运行一个实例

来源:百度知道 编辑:UC知道 时间:2024/06/08 17:45:19
如果已经运行一个实例,则把原来的那个显示出来?
推荐一个好的C/C++/VC的学习网站
最好有源码

程序启动时用CreateMutex创建一个Mutex,返回ERROR_ALREADY_EXISTS表示这个Mutex已经创建了,退出程序

最简单的就是设置一内存共享变量.<进程间共享的>

每个实例运行的时候,去查找一个那个变量,如果没有这个变量,就说明没有实例运行就创建它

在窗口有了句柄以后,把句柄值放到这个共享变量里面去.如果查找的时候

有这个变量,就是说明有个实例正在运行,那么我们就读取这个变量的值,

再发送一个自定义消息给那个句柄的窗口<就是运行的实例>然后自己退出

运行的实例收到消息后,看窗口现在是否显示,如果没有,就显示它

2.我自己刚写的办法:

每次运行的时候枚枚举一个进程,如果进程中有实例的映像名存在<就是.exe>

就通过映像名找到进程ID,在通过进程ID找那个主窗口,再和上面的发送消息一样

这种方法有个很大的漏洞,exe文件名改了后就失效.并这种方法效率很低,

但是涉及的知识很广,利于学习用.

如果想用第一中方法,我给你个读写内存共享变量的一个例子你.自己去实现

这个十分简单.

要的留邮箱.

用 SetProp,GetProp 函数..

授之与鱼,不如授之与渔。

建议你看看《Windows核心编程》

创建互斥或者事件对象.具体方法网上找吧