您的位置:首页 > 其它

使程序只能运行一个唯一的实例

2006-10-01 22:59 531 查看
使程序运行唯一的一个实例常用的有两种方法:

第一种,使用MUTEX,源码如下:

HANDLE g_hMutexOnly = NULL;
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR     lpCmdLine,
int       nCmdShow)
{
g_hMutexOnly = CreateMutex( NULL, TRUE, _T("OnceOnlyMutex") );
if( g_hMutexOnly != NULL ) {
DWORD err = GetLastError();
if( err == ERROR_ALREADY_EXISTS ) {
//the program is already running
CloseHandle(g_hMutexOnly);
return -1;
}
}
else {
return 0;
}
MSG msg;
while( GetMessage( &msg, NULL, NULL, NULL ) )
{
TranslateMessage( &msg );
DispatchMessage( &msg );
}
CloseHandle(g_hMutexOnly);
return 0;
}


第二种方法,唯一窗口法,源代码如下:

const TCHAR g_mainWndClassName[]=_T("MyWindowClass");
const TCHAR g_mainTitleName[]=_T("MyWindowTitle");
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR     lpCmdLine,
int       nCmdShow)
{
HWND hwnd = FindWindowEx( NULL, NULL, g_mainWndClassName, g_mainTitleName );
if( hwnd )
return -1;
//register window class
//create window
CreateWindow( g_mainWndClassName, g_mainTitleName ... );
...
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  null class