Re: Вывод окна приложения на передний план.
Здравствуйте, Шистеров.
Tuesday, February 7, 2006, 11:24:59 AM, you wrote:
ШП> Здравствуйте!
ШП> Проблема собственнов следующем:
ШП> Прога1 и Прога2 связаны внешним СОМ-сервером. В какой-то момент
ШП> работы в проге1 нужно безболезненно перейти в прогу2.
ШП> Используется следующий механизм: вызывается метод СОМ-сервере,
ШП> Старт_прога2. Который проверяет наличие такой проги среди загруженных
ШП> и если есть, то окно проги выводит на передний план
ШП> (SetForegroundWindow).
ШП> Один раз срабатывает, а потом уже не хотит. Может быть дело в том,
ШП> что СОМ-сервер используется обоими прогами и при выводе второй на
ШП> передний план система не может его вывести, т.к. используется что-то
ШП> общее?
ШП> Посоветуйте как сделать.
Не совсем понял сценарий. Значит, прога1 вызывает прогу2 через
СОМ-сервер, и эта прога2 становится "передней". То есть, ловится хэндл
главного окна проги2 и он передается в SetForegroundWindow. А что
потом происходит? В следствии чего окно проги2 перестает быть
передним?
Я два варианта вижу: 1) Какое-либо другое окно преобретает стиль
StayOnTop и 2) У вас хэндл окна проги2 вычисляется задолго до вызова
SetForegroundWindow. Ведь возможна такая модель:
Запустили прогу2
Нашли ее хэндл (h2)
Вывели окно проги2
.........................................
. какой-то вычислительный процесс, ..
.. во время которого прога2 вообще ..
.. могла закрыть и открыть вновь ..
.. свое окно ..
.........................................
Point1:
Пытаемся опять по хэндлу h2 вывести окно проги2 вперед.
Ну так в точке Point1 этой модели h2 корректно по значению, но окна с
таким хэндлом (читайте, номером) нет, если оно успело закрыться и
открыться.