Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.01.27;
Скачать: CL | DM;

Вниз

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 вся ветка

Текущий архив: 2003.01.27;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.012 c
3-86708
Pat
2003-01-06 23:52
2003.01.27
Глюк BDE


1-86940
Роман Витов
2003-01-16 22:09
2003.01.27
горячие клавиши


3-86701
FROM_X
2003-01-09 13:16
2003.01.27
Ну я устал сам себе рейтинг повышать чтобы привлечь внимание


1-86963
- Tsatur -
2003-01-17 01:32
2003.01.27
Фракталы


14-87103
vuk
2003-01-06 22:49
2003.01.27
Зашел на www.programme.ru, а там...