Главная страница
    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.045 c
3-1099722814
Dell3r
2004-11-06 09:33
2004.12.05
Не могу получить отзыв от сервера


1-1100980074
noob
2004-11-20 22:47
2004.12.05
Массив


14-1100766738
Dmitriy O.
2004-11-18 11:32
2004.12.05
Удаленное администрирование своих программ.


1-1100417665
Андрей Томск
2004-11-14 10:34
2004.12.05
Перехват события компоненты COM-порта


1-1100784772
aglar
2004-11-18 16:32
2004.12.05
Как запустить exe файл?





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