Форум: "WinAPI";
Текущий архив: 2008.05.18;
Скачать: [xml.tar.bz2];
ВнизПотерять фокус Найти похожие ветки
← →
Kns (2007-09-03 15:28) [0]Добрый день, помогите со сменой фокуса.
Нужно отправить приложение на задний план и сделать активным самое верхнее из окон на экране.
Делаю так
Application.MainForm.SendToBack;
h:=GetTopWindow(0);
Windows.SetFocus(h);
Приложение уходит но фокус не отдает. Почему?
← →
Сергей М. © (2007-09-03 15:36) [1]
> Почему?
>
Вероятно потому что h = 0
← →
Kns (2007-09-03 15:42) [2]Нет. H<>0.
вообще опытным путемя выяснил что вместоWindows.SetFocus(h);
нужно использоватьSetForegroundWindow(h);
Тогда фокус уходит но кому отдается не видно.
Я предпологаю что GetTopWindow(0) возвращает хендл невидмого окна.
← →
Сергей М. © (2007-09-03 15:49) [3]
> опытным путемя выяснил что вместо
> Windows.SetFocus
И зачем эспериментировать, если логика работы обеих ф-ций описана в справке ?
> предпологаю что GetTopWindow(0) возвращает хендл невидмого
> окна
Это вряд ли)
← →
Kns (2007-09-03 16:03) [4]Ну насчет SetFocus ошибся не обратил внимания, что в MSDN сказано
The window must be attached to the calling thread"s message queue.
А в остальном вопрос тотже.
h:=GetTopWindow(0);
if h<>0 then
begin
Application.MainForm.SendToBack;
SetForegroundWindow(h);
end;
Не активирует приложение лежащее сверх.
← →
Сергей М. © (2007-09-03 16:14) [5]Возьми на вооружение SpyXX и посмотри что это за окно h
← →
Lacmus © (2007-09-03 16:39) [6]>Kns (03.09.07 15:28)
Application.Minimize ?
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2008.05.18;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 4.722 c