Форум: "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.041 c