请问程序怎样检测自己是否已经在执行着一个实例?
说得清楚吗? 我的意思是如果你已经执行了这个程序, 再打开它它会提示你本程序已经
执行了.
问题是我希望用操作系统提供的功能完成这个, 而不是自己亲自去做.
问题点数:100、回复次数:6Top
1 楼ahphone(阿丰--重出江湖,陌生的容颜)回复于 2002-02-03 13:49:37 得分 0
操作系统不提供这个功能,但实现的方法比较多,这张帖子里面正在讨论:
http://www.csdn.net/Expert/topic/516/516136.shtmTop
2 楼solar(天哪,忘了我是什么时候注册的了!)(int argc, char *argv[])回复于 2002-02-03 14:12:24 得分 0
1. 检查窗口
2. 创建Mutex
Top
3 楼xiaoxiaohan(萧晓寒)回复于 2002-02-03 14:56:25 得分 100
12. 如何利用多进程对共享内核对象的访问来防止一个应用程序启动多次?
举例说明:
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
HANDLE hNew = NULL;
DWORD dwErrCode = 0;
hNew = CreateMutex( NULL, FALSE, "{FA123-DKJKL-43443-643FJD3}" );
if ( hNew == NULL )
{
return 0;
}
dwErrCode = GetLastError( );
if ( dwErrCode == ERROR_ALREADY_EXISTS )
{
CloseHandle( hNew );
return 0;
}
// This is the first instance of this application running.
……
……
……
// Before exiting, close the object.
CloseHandle( hNew );
return 0;
}
Top
4 楼webber84(***闭关修炼中***)回复于 2002-02-03 20:02:52 得分 0
用ToolHelp函数枚举进程。Top
5 楼rovoboy(魂之猎人)回复于 2002-02-03 20:14:23 得分 0
BOOL CXXXApp::InitInstance()
{
//防止多实例
HANDLE hMutex=CreateMutex(NULL,TRUE, m_pszAppName);
if(GetLastError()==ERROR_ALREADY_EXISTS) { return FALSE; }
......
}Top
6 楼pzone(见分眼红)回复于 2002-02-03 20:28:56 得分 0
操作系统提供的功能完成,找XP的XPTop




