能力值:
( LV12,RANK:1010 )
|
-
-
2 楼
Mutex互斥即可。 ////////////////////////////////////////////////////////////////////////////////// //-------------------------------------------------------------------------------- // Author: sudami 2007/10/6 // // 函数名: CreateOneAppMutex // // 参数: LPCTSTR lpName // 标识互斥对象 // // 返回值: HANDLE // 互斥对象的句柄 // // 函数功能: 通过互斥对象实现惟一的进程 //-------------------------------------------------------------------------------- HANDLE CreateOneAppMutex (LPCTSTR lpName) { HANDLE hMutex; hMutex = ::CreateMutex (NULL, TRUE, lpName); switch(::GetLastError()) { case ERROR_SUCCESS: // 互斥对象创建成功,没有实例运行 break; case ERROR_ALREADY_EXISTS: // 互斥对象已经存在,程序的一个实例正在运行 // 设置句柄为空 hMutex = NULL; break; default: break; } return hMutex; }
然后在程序初始化的时候调用这个函数即可。
BOOL CMyApp::InitInstance () { /*********************************************************** * * * 判断程序是否已经存在,若存在则退出 * * * ***********************************************************/ if( CreateOneAppMutex (_T("sudami")) == NULL) { ::MessageBox( NULL, _T("There is already one instance running now..."), _T("- -"), MB_OK | MB_ICONHAND ); exit (0); }
|
能力值:
( LV12,RANK:1010 )
|
-
-
3 楼
汗,切换用户的,俺还没接触过。
抱歉~~~
|
能力值:
( LV13,RANK:283 )
|
-
-
4 楼
谢谢,sudami,这种方法在同一用户下可以,切换用户后不能实现互斥。
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
检测类名标题名,但是很容易被修改掉。
特征检测。程序一运行在某处查找是否有XX文件。有的话就退出。没有新建。程序正常退出别忘了del······
很笨。
我没有具体实现过。。等待大大来解答呵呵。。
|
能力值:
( LV10,RANK:170 )
|
-
-
6 楼
运行后建立一个空文件,已独占方式打开着.退出后关闭文件句柄.
另一个进程运行后 如果建立文件失败,那么就是已经运行了,退出即可.
|
能力值:
( LV3,RANK:20 )
|
-
-
7 楼
127.0.0.1的listen可能更简单一些
|
|
|