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

Вниз

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

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

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

Наверх




Память: 0.49 MB
Время: 0.061 c
1-1101141368
Chery
2004-11-22 19:36
2004.12.05
Как отключить всех пользователей кроме себя от сервера прилож.?


6-1095851631
MSergey
2004-09-22 15:13
2004.12.05
Получение данных из Интернета


1-1100678158
Ega23
2004-11-17 10:55
2004.12.05
TTreeNodes.Delete


4-1098600632
Глеб
2004-10-24 10:50
2004.12.05
Завершение программы, которая ранее была запущена


14-1100757653
sniknik
2004-11-18 09:00
2004.12.05
Разминка к пятнице, легкая задачка на четверг...