Выдвинуть окно на самый верх

  • Автор темы Автор темы artsb
  • Дата начала Дата начала
A

artsb

Всем привет!
Использую такой код, чтобы выдвинуть окно на самый верх и сделать его активным:
Код:
 ShowWindow(Application->Handle, SW_SHOWNORMAL);
ShowWindow(frm->Handle, SW_SHOW);
SetForegroundWindow(frm->Handle);
В висте (да в ХР, наверное) отлично работает, а вот в вин7 не хочет выдвигать окно вперёд, просто кнопка приложения мигает и всё.
У кого-нибудь есть мысли по этому поводу?
 
Почитать последний msdn по этим ф-м?=)
 
Тоже вариант :) Завтра, действительно, гляну.
 
Отпишитесь здесь о результатах изысканий, пожалуйста. Мне вот тоже интересно)
 
Полазил на сайте MSDN и некоторых зарубежных сайтах и решил проблему!
Вся беда в том, что функция SetForegroundWindow и ей подобные корректно отрабатывают только из активного процесса. А у меня была ситуация, что я отправляю сообщение из активного приложения в неактивное и уже из него пытаюсь "выдвинуть" окно.
В общем, вот:
Код:
SetLastError(0);
if(!CreateMutex(NULL, true, "CarInsurance"))
return 1;
else if(GetLastError() == ERROR_ALREADY_EXISTS) {
void *window;
window = FindWindow("TMainForm", NULL);
if(window && (window = GetWindow(window, GW_OWNER))) {
ShowWindow(window, SW_SHOWNORMAL);
SetForegroundWindow(window);
return 1;
}
}
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab