Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
1-86749
CAMOBAP
2003-01-17 14:45
2003.01.27
Как получить дату последнего обновления файла?


9-86611
Mynglam
2002-07-24 17:42
2003.01.27
X


3-86630
Карелин Артем
2003-01-10 13:53
2003.01.27
Уведомление клиента об изменениях в базе. Оптимальная.


9-86613
Delphi 5.01
2002-07-23 21:04
2003.01.27
Problemi s DirectX


6-87014
Nikolay Enby
2002-11-27 21:10
2003.01.27
Вопрос о работе c локальной сетью.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский