mfc运行启动的问题
如何使程序只运行一次,也就是像一些播放软件那样,每次双击与程序相关联的文件,不再创建一个新窗口。 mfc? mfc
[解决办法]
'''singleton模式
[解决办法]
方法一:使用Mutex来进行
1. 首先要添加如下的namespace:
using System.Threading;
2. 修改系统Main函数,大致如下:
bool bCreatedNew;
//Create a new mutex using specific mutex name
Mutex m =new Mutex( false, "myUniqueName", out bCreatedNew );
if( bCreatedNew )
Application.Run(new yourFormName());
如上面编码就可以了,要注意的一点是,在给Mutex起名字的时候,不要太简单,以防止和其他程序的Mutex重复,从而达不到所预想的效果。
[解决办法]
BOOL CInstantMessagingApp::InitInstance()
{
/// 保证只有唯一实例在运行
HANDLE hEvent = ::CreateEvent( NULL, FALSE, FALSE, "InstantMessaging" );
if( hEvent )
{
if( ERROR_ALREADY_EXISTS == GetLastError() )
{
return FALSE;
}
}
...
return FALSE;
}