Главная страница
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.016 c
1-86904
Danik
2003-01-16 13:17
2003.01.27
Про Radiogroup


14-87129
race1
2003-01-10 05:31
2003.01.27
borland


14-87067
MAN-IN-RED
2003-01-07 00:23
2003.01.27
Screen Mater


1-86910
Андрусь
2003-01-16 12:49
2003.01.27
Как уникально иденцифицировать систему на машине.


14-87087
алексей008
2003-01-08 13:18
2003.01.27
Какой монитор лучше?