c++ 窗口激活

来源:百度知道 编辑:UC知道 时间:2024/06/14 20:21:15
实现如下功能:像 金山词霸一样,当金山词霸已经打开后,再双击 金山词霸的可执行程序,结果并不是再打开一个金山词霸的实例,而是将原先打开的金山词霸再次激活并显示在窗口最前端
注意:只能打开一个金山词霸实例,再次打开时只是将原来的实例激活到窗口最前端而已
——————————
我采用如下方法:
HANDLE hMutex;
hMutex=CreateMutex(NULL,TRUE,"tickets");
if(hMutex)
{
if(ERROR_ALREADY_EXISTS==GetLastError())
{
//这里应该如何实现
}
}

//////////////////////////防止多个实例运行////////////////////////////////
const TCHAR *strMutexName = _T("tickets");
HANDLE hMutex = CreateMutex(NULL, true, strMutexName);
if(ERROR_ALREADY_EXISTS == GetLastError())
{ //当已存在一个实例后,将第一个实例在前端显示
HWND hWnd = FindWindow(NULL, strMutexName);
if (hWnd)//当hWnd非空时
{
::SetForegroundWindow(hw);
}
return FALSE;
}
以上是本人程序里面的一小段,已经根据你的需要改写过了,希望对你有所帮助!

用FindWindows()找到你的程序,将它激活

HWND hw;
hw=::FindWindow(NULL,"金山词霸");
if(hw!=NULL)
{
::SetForegroundWindow(hw);
exit(1);
}