我给了他一段代码,他就欢天喜地的回去了。
现在把那段代码拿出来,大家分享
// 使用建立互斥量的方法来检测多个实例
HANDLE hMyMutex = CreateMutex( NULL, false, "MyMutex"); // "MyMutex" 是你程序的标识, 可以改的
DWORD ErrCode = GetLastError();
if ( ErrCode == ERROR_ALREADY_EXISTS )
{
MessageBox(NULL, "检测到旧实例,abort", " - Notice ! ", MB_OK|MB_TOPMOST );
ExitProcess( NULL);
}
// End of 互斥量检测
把它加到我昨天做的框架, WinMain 函数体开头就可以了。
见《No MFC 编程01 - 最精简的 win32 程序》
http://www.youkuaiyun.com/develop/Read_Article.asp?Id=15167
浅析原理:( 本来想收工,但看到文章太短就不自在 )
CreateMutex 函数创建了 叫 "MyMutex" 的互斥量 ( 不要问我有什么用 )
GetLastError 函数取得创建过程的突发状况
第一种情况:之前没有实例在运行,新建 "MyMutex" 的互斥量成功。( "MyMutex" 的生存期到本程序实例结束为止 )
第二种情况:之前有一个实例在运行,发现已经有叫 "MyMutex" 的互斥量了,拿来就用。不过 GetLastError 还是知道了。
第二种情况引起的处理:当然是退出程序的第二个实例了,见过同时运行两个同一版本 Winamp 吗?
问:有第三种情况吗?(不告诉你)
( 有句广告词:" 我不认为我与众不同,因为我是独一无二的 " )
不说废话了! 2002年9月28日 am 9:43