• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

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

artsb

Всем привет!
Использую такой код, чтобы выдвинуть окно на самый верх и сделать его активным:
Код:
 ShowWindow(Application->Handle, SW_SHOWNORMAL);
ShowWindow(frm->Handle, SW_SHOW);
SetForegroundWindow(frm->Handle);
В висте (да в ХР, наверное) отлично работает, а вот в вин7 не хочет выдвигать окно вперёд, просто кнопка приложения мигает и всё.
У кого-нибудь есть мысли по этому поводу?
 
V

vital

Почитать последний msdn по этим ф-м?=)
 
A

artsb

Тоже вариант :) Завтра, действительно, гляну.
 
V

vital

Отпишитесь здесь о результатах изысканий, пожалуйста. Мне вот тоже интересно)
 
A

artsb

Полазил на сайте 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;
}
}
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!