Главная страница
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.038 c
1-1100774111
Vika_cc
2004-11-18 13:35
2004.12.05
frxClass.dcu


9-1091708027
vixen
2004-08-05 16:13
2004.12.05
Пересечение отрезков. Реализация физики тел


3-1099493944
denis24
2004-11-03 17:59
2004.12.05
динамический report


1-1100693186
Tria
2004-11-17 15:06
2004.12.05
Как сохранить форму в текстовом формате?


1-1101141697
Dmitry_04
2004-11-22 19:41
2004.12.05
API сообщения при сочетании клавишь, например Ctrl+F