Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.12.05;
Скачать: [xml.tar.bz2];

Вниз

Переключение между приложениями   Найти похожие ветки 

 
sapsi   (2004-10-19 16:13) [0]

Добрый день.
Программно переключаю окна чужих приложений.
Все ок, только после некоторого времени работы возникает следующее: окна приложений становятся активными, но не разворачиваются с панели задач, просто мигают.
Как можно это обойти.


 
Игорь Шевченко ©   (2004-10-19 16:36) [1]


> окна приложений становятся активными, но не разворачиваются
> с панели задач, просто мигают.
> Как можно это обойти.


SystemParametersInfo (SPI_SETFOREGROUNDLOCKTIMEOUT, ...) ?


 
sapsi   (2004-10-20 09:11) [2]

SystemParametersInfo (SPI_SETFOREGROUNDLOCKTIMEOUT, ...)

Спасибо, почитал про нее.
Но если в двух словах, почему возможно ли возникновение такой ошибки после определенного времени работы? Как можно быстро ее устранить?
На окна я переключаюсь такой последовательностью:
bringwindowtotop(Hwnd);
setforegroundwindow(wnd);
activatewindow(hwnd);
SwitchToThisWindow(Hwnd,true);
чтобы дочерние активные окна были наверху

С уважением.


 
sapsi   (2004-10-20 13:13) [3]

Вот ситуация более подробно:
Есть приложение, которое переключает окна двух других (чужих) приложений, назовем их "приложение 1" и "приложение 2" по нажатию соответствующей кнопки таким образом, что если в "приложении 1" были открыты дочерние окна, то после переключения на "приложение 2" и возврата в "приложение 1" на верх попадала та дочерняя форма, которая была открыта.
Это достигается функцими setforegroundwindow(wnd) и SwitchToThisWindow(Hwnd,true), которые работают, видимо, идентично.
Проблема возникает тогда, когда я пытаюсь переключать приложения 1 и 2 не по щелчку кнопки главного приложения, а по другому событию, например, сетевого сообщения. В это время главное приложение может быть неактивно.
В случае попытки такого переключения (не по кнопке), оно не всегда отрабатывает.
Как это можно преодолеть?
Спасибо.


 
Игорь Шевченко ©   (2004-10-20 13:42) [4]

sapsi   (20.10.04 13:13) [3]

Такой вопрос - эти приложения переключаемые твои или чужие ?


 
sapsi   (2004-10-20 13:50) [5]

чужие


 
Игорь Шевченко ©   (2004-10-20 13:59) [6]

Я бы рекомендовал выполнить функцию SystemParametersInfo, если она не поможет, то думать дальше.

А разве одной функции SetForegroundWindow недостаточно, чтобы активировать окно некоего приложения ?


 
sapsi   (2004-10-20 14:17) [7]

Думаю, что должно быть достаточно, но иногда перключение не происходит, закономерность выявить пока не удается.
Иногда проявляется в активизации приложения на панели задач без рестора окна.


 
sapsi   (2004-10-20 14:48) [8]

И еще, если я делаю следующее:
SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, 0, 0), как вернуть TIMEOUT в стандартное значение?


 
GLFox   (2004-10-20 14:55) [9]

Попробуй так
ShowWindow(WindowHandle,SW_RESTORE);
SetForegroundWindow(WindowHandle);


 
Игорь Шевченко ©   (2004-10-20 15:50) [10]


> SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, 0,
> 0), как вернуть TIMEOUT в стандартное значение?


Сначала SystemParametersInfo(SPI_GETFOREGROUNDLOCKTIMEOUT



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.12.05;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.032 c
14-1100759845
syte_ser78
2004-11-18 09:37
2004.12.05
проверка скорости ввода пароля


6-1096355003
Григорьев Антон
2004-09-28 11:03
2004.12.05
Не могу разобраться с функцией GetAcceptExSockAddrs


6-1092728017
Andrey
2004-08-17 11:33
2004.12.05
outlook express


1-1100793569
kaktus
2004-11-18 18:59
2004.12.05
Кто рабол со словарями Word?


6-1095353804
parrr
2004-09-16 20:56
2004.12.05
WHO IS





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский