findwindow createmutex的用法求教
在一个公司看他们的代码:在一个dlg中的InitInstance()中看头有如下代码:
HANDLE hMutex=::CreateMutex( NULL,FALSE,"ImpImg");
if ( ::GetLastError()==ERROR_ALREADY_EXISTS )
{
HWND FindWnd = ::FindWindow(NULL,"ImpImg");
if ( FindWnd )
{ ::SetWindowPos( FindWnd,HWND_TOP,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE );
::ShowWindow( FindWnd,SW_SHOW ); ::SetFocus( FindWnd ); }
return FALSE;
}
它的工程名就是ImpImg,窗口名也是这个
问题一:
但是在第一次运行的时候hMutex创建的时候始终是一个无效句柄,然而,如果我改成:
HANDLE hMutex=::CreateMutex( NULL,FALSE,"Imp");
就可以了,不知道这是为什么?
问题二:
我明明创建了一个进程,但是用FindWnd函数返回的也是一个无效句柄,
之后我做了一个测试程序,就将上面的一段代码拷贝到InitInstance()中,却一点问题都没有
不知道这是什么原因,往大牛指教