Как поместить 1 экземпляр программы на первый план
Всем привет!
Опять возник вопросик. Мне нужно при запуске 2 экземпляра программы активизировать 1, т.е. если прога запущена и при попытке запусить её 2 раз 1 копия выдвигалась на первый план. Вот код что я накалябал, все проблема в том что я не могу окно поместить на первый план(( Код:
HANDLE hMutex = CreateMutex (NULL, TRUE, "Моя программа"); |
попробуй SetWindowPos(oWnd, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE|SWP_SHOWWINDOW);
|
pva
Непомогло, у меня такое чувство, что oWnd = ::FindWindow(NULL,"Моя программа"); не возвращаяет хендел окна. Можно ли как то активизировать окно через hMutex?? |
Да забыл сказать, что у меня диалоговое окно.
|
Может ShowWindow и SetForegroundWindow местами поменять, вот ето 100% будет работать:
HANDLE checkMutex=CreateMutex(NULL,TRUE,"Mutex unique name"); if(GetLastError()==ERROR_ALREADY_EXISTS){ HWND sypH=FindWindow("TMainWindowClass","MainWindowCaption"); if(sypH!=NULL){ HWND ownWS=GetWindow(sypH,GW_OWNER); ShowWindow(ownWS,SW_RESTORE); SetForegroundWindow(sypH); } }else |
Отладка что показывает?
Код:
std::string errorMsg(const char* msg, int code) |
Спасибо обязательно все попробую
|
Время: 14:44. |
Время: 14:44.
© OSzone.net 2001-