Форум: "WinAPI";
Текущий архив: 2003.01.27;
Скачать: [xml.tar.bz2];
ВнизSetForegroundWindow срабатывает только один раз. Найти похожие ветки
← →
Ascan_ (2002-12-10 13:36) [0]Почему так?
Если я в программе использовал уже функциюSetForegroundWindow
, то при втором использовании окно активным не становится, а только его имя внизу помигает(не помню как это "внизу" называется).
Как быть?
Вот пример кода, который не работает:
...
private
ActiveWindow,
MyWindow: hWnd;
...
procedure TForm1.FormCreate(Sender: TObject);
begin
ActiveWindow:= GetForegroundWindow;
end;
procedure TForm1.FormActivate(Sender: TObject);
begin
MyWindow:= GetForegroundWindow;
SetForegroundWindow(ActiveWindow);
SetForegroundWindow(MyWindow); // Вот эта строчка не сработает
end;
...
Да, эта строчка не сработает. Мое окно помигает "внизу" и все.
И так не работает:
SetForegroundWindow(ActiveWindow);
sleep(200);
SetForegroundWindow(MyWindow);
И так:
SetForegroundWindow(ActiveWindow);
Application.ProcessMessage;
SetForegroundWindow(MyWindow);
И далее по коду в любом месте эта функция не срабатывает.
← →
Song (2002-12-10 13:43) [1]У Вас наверно w2k?
← →
Ascan_ (2002-12-10 13:45) [2]Да. Именно он.
А права Админа. (это так, на всякий случай)
И все окна развернуты (неминимизированны).
← →
Song (2002-12-10 13:52) [3]От w2k у SetForeGroundWindow() такое поведение. Это специально сделано.
Вот представьте сидите Вы в ворде. Чего-то пишите, не смотря на экран, смотрите на клаву, вдруг какой-то **** (я не про Вас) выводит на верх своё окно! И что? А то, что все нажатия пошли на то окно, а не на ваш ворд, поэтому такая феня и была сделана. Поэтому надо перед передачей фокуса приатачить процесс того окна к своему и потом использовать SetForeGroundWindow() или использовать SPI_ANIMATED в ф-ии SystemParametersInfo() и SetForeGroundWindow(). В базе данных готовых решений есть готовый SetForeGroundWindow, который работает так как надо.
← →
Ascan_ (2002-12-10 14:18) [4]Не нашел, я уже искал и сейчас еще раз.
Сможешь дать ссылку, где об этом можно почитать?
← →
Игорь Шевченко (2002-12-10 15:11) [5]http://msdn.microsoft.com - SetForegroundwindow, AllowSetForegroundWindow
← →
Ascan_ (2002-12-10 15:37) [6]Игорь Шевченко, ненавижу этот сайт... но придется слазить, спасибо.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2003.01.27;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.012 c