Автоматически закрывать черное полноэкранное окно "DDE Server Window"

tormozit Закрыто Средний

При работе ИР адаптера с окном приложения ИР иногда возникает черное полноэкранное окно. Прошу сделать его автоматическое обнаружение и закрытие. Для начала это можно попробовать сделать внутри ЗавершитьВызовВнешнегоОкнаАсинх().

Это окно относится к процессу приложения ИР, т.е. тому PID, который передается в НачатьВызовВнешнегоОкнаАсинх()

How found: Selected from tree...
Name: "DDE Server Window"
ControlType: UIA_PaneControlTypeId (0xC371)
LocalizedControlType: "панель"
BoundingRectangle:
IsEnabled: true
IsOffscreen: false
IsKeyboardFocusable: true
HasKeyboardFocus: false
AccessKey: ""
ProcessId: 18040
RuntimeId: [2A.13531FC8]
FrameworkId: "Win32"
ClassName: "OleDdeWndClass"
NativeWindowHandle: 0x13531FC8
ProviderDescription: "[pid:31400,providerId:0x13531FC8 Main:Nested [pid:18040,providerId:0x13531FC8 Annotation(parent link):Microsoft: Annotation Proxy (unmanaged:UIAutomationCore.dll); Main:Microsoft: MSAA Proxy (unmanaged:UIAutomationCore.dll)]; Hwnd(parent link):Microsoft: HWND Proxy (unmanaged:uiautomationcore.dll)]"
IsPassword: false
HelpText: ""
LegacyIAccessible.ChildId: 0
LegacyIAccessible.DefaultAction: ""
LegacyIAccessible.Description: ""
LegacyIAccessible.Help: ""
LegacyIAccessible.KeyboardShortcut: ""
LegacyIAccessible.Name: "DDE Server Window"
LegacyIAccessible.Role: клиент (0xA)
LegacyIAccessible.State: фокусируемое (0x100000)
LegacyIAccessible.Value: ""
IsAnnotationPatternAvailable: false
IsDragPatternAvailable: false
IsDockPatternAvailable: false
IsDropTargetPatternAvailable: false
IsExpandCollapsePatternAvailable: false
IsGridItemPatternAvailable: false
IsGridPatternAvailable: false
IsInvokePatternAvailable: false
IsItemContainerPatternAvailable: false
IsLegacyIAccessiblePatternAvailable: true
IsMultipleViewPatternAvailable: false
IsObjectModelPatternAvailable: false
IsRangeValuePatternAvailable: false
IsScrollItemPatternAvailable: false
IsScrollPatternAvailable: false
IsSelectionItemPatternAvailable: false
IsSelectionPatternAvailable: false
IsSpreadsheetItemPatternAvailable: false
IsSpreadsheetPatternAvailable: false
IsStylesPatternAvailable: false
IsSynchronizedInputPatternAvailable: false
IsTableItemPatternAvailable: false
IsTablePatternAvailable: false
IsTextChildPatternAvailable: false
IsTextEditPatternAvailable: false
IsTextPatternAvailable: false
IsTextPattern2Available: false
IsTogglePatternAvailable: false
IsTransformPatternAvailable: false
IsTransform2PatternAvailable: false
IsValuePatternAvailable: false
IsVirtualizedItemPatternAvailable: false
IsWindowPatternAvailable: false
FirstChild: [null]
LastChild: [null]
Other Props: Object has no additional properties
Children: Container has no children
Ancestors: "Рабочий стол 1" панель

[ No Parent ]

Комментарии

tormozit
#1, 22 февраля 2024 08:00

Это окно иногда появляется вместе с открытием COM окна. Поэтому желательно сделать 2 попытки его обнаружить:

  1. в НачатьВызовВнешнегоОкнаАсинх
  2. в ЗавершитьВызовВнешнегоОкнаАсинх


bolsun
#2, 23 февраля 2024 13:45

  1. В НачатьВызовВнешнегоОкнаАсинх - могу добавить.
  2. В ЗавершитьВызовВнешнегоОкнаАсинх у меня нет PID, значит нужно добавлять параметр в метод.


tormozit
#3, 23 февраля 2024 13:49

(2) bolsun, по п.2 я готов передавать этот параметр.


bolsun
#4, 23 февраля 2024 13:53

(3) tormozit, сделаю через отправку сообщения WM_CLOSE, надеюсь окно понимает его.


tormozit
#5, 23 февраля 2024 13:57

Оно ALT+F4 принимает. Так что должно.


bolsun
#6, 23 февраля 2024 14:03

(5) tormozit, https://disk.yandex.ru/d/XKCz9ijzgtoO1w

Добавил поиск и закрытие окна DDE по ПИД, классу и тексту

в НачатьВызовВнешнегоОкнаАсинх
в ЗавершитьВызовВнешнегоОкнаАсинх

Добавил параметр PID
StopExternalWindowCallAsync(long fg = 0, bool continueProcess = true, int pid = 0)

После закрытия, для отладки, будет показано всплывающее уведомление.


tormozit
#7, 24 февраля 2024 00:13

Заметил срабатывание добавленной функции. Побочных эффектов не заметил.


bolsun
#8, 26 февраля 2024 23:17

bolsun изменил статус на Закрыто


tormozit
#9, ред. 15 марта 2024 10:52

В версии 6.1.8837.33228 похоже перестало обнаруживаться это окно (во всяком случае это был тоже полностью черный экран). Видел его уже много раз при завершении приложения ИР (оно отображалось по 3 секунды). А в логе нет упоминания о его обнаружении.


bolsun
#10, 15 марта 2024 10:47

(9) tormozit, пришли файл экспорта настроек.


tormozit
#11, 15 марта 2024 10:51

Ссылка скрытаs)


bolsun
#12, 15 марта 2024 10:55

Я ничего не менял там, вот на твоих настройках, в первом же тесте.


tormozit
#13, 15 марта 2024 10:59

(12) bolsun, видимо в моем новом случае оно появляется непосредственно после завершения COM приложения, т.е. за пределами ожидания со стороны доработанных методов Турбоконфа. Буду собирать статистику.


tormozit
#14, 30 марта 2024 13:09

Продолжаю видеть это окно при завершении приложения ИР примерно в течении 3 секунд. При этом в логе вижу сообщение, что оно якобы закрыто. Получается что Турбоконф отправляет команду закрытия, но она не доходит до этого окна. Предыдущий способ его закрытия работал так, что это окно вообще не появлялось. Значит новый способ не работает в этих условиях.

Ссылка скрыта
tormozit изменил статус на Открыто


bolsun
#15, 30 марта 2024 16:40

(14) tormozit, что за старый и новый способы закрытия? Я вроде ничего не менял.


bolsun
#16, 30 марта 2024 16:43

И еще зачем при закрытии приложения ИР вызывается StartExternalWindowHandlingAsync?
Там же не нужно отображать внешнее окно?


tormozit
#17, ред. 30 марта 2024 19:02

(16) bolsun, так было с самого начала (больше 8 месяцев). Это нужно для корректного сохранения размеров окно клиентского приложения. Иначе оно будет открываться в микро размере.


tormozit
#18, ред. 30 марта 2024 19:06

(15) bolsun, начиная примерно с версии 6.1.8837.33228 регулярно вижу окно DDE (примерно 3 недели). Поэтому искать поломку нужно в ее близких предшественниках. Предлагаю пока вернуть для целей диагностики вывод уведомления об отправке команды закрытия этого окна.


tormozit
#19, ред. 30 марта 2024 19:13

Сегодня видел это окон несколько десятков раз, т.к. часто завершал приложение ИР. Это окно появляется примерно при каждом втором завершении. В логе за сегодня почти 40 обнаружений. Отображение уведомления помогло бы мне понять, бывают ли обнаружения с успешным закрытием. Пока кажется что они все НЕ закрывали это окно.


bolsun
#20, 30 марта 2024 19:13

(18) tormozit, еще раз посмотрел историю, я ничего не менял связанного в методе закрытия окна DDE в 6.1
Проверил у себя несколько раз, всегда закрывается.


bolsun
#21, 30 марта 2024 19:13

Версию с уведомлением выложу.


bolsun
#22, 30 марта 2024 19:43

https://disk.yandex.ru/d/XKCz9ijzgtoO1w


tormozit
#23, 30 марта 2024 19:57

Одно уведомление "Закрыто окно DDE Server Window" уже появилось и при этом НЕ появилось окно DDE. Значит в каких то случаях закрытие срабатывает.


tormozit
#24, 31 марта 2024 18:48

За прошедшие сутки активной работы с Турбоконф+ИР окно DDE видел 0 раз и видел много раз уведомление о его закрытии, в т.ч. при завершении приложения ИР.


bolsun
#25, 31 марта 2024 18:59

(24) tormozit, уберу в следующей версии всплывающее уведомление, но оставлю запись в служебные сообщения.


bolsun
#26, 31 марта 2024 19:03

(24) tormozit, может какую то задержку сделать, например 200мс, после отправки команды закрытия окну DDE?


bolsun
#27, 31 марта 2024 20:27

В текущей версии выводится только предупреждение в служебные сообщения.


tormozit
#28, ред. 31 марта 2024 21:44

В новой версии 6.1.8856.40207 опять начало появляться окно DDE. При этом в логе вижу уведомление об отправке ему команды закрытия.

Закрыто окно DDE Server Window


bolsun
#29, 31 марта 2024 22:02

(28) tormozit, добавил задержку 200мс.
https://disk.yandex.ru/d/XKCz9ijzgtoO1w


tormozit
#30, 01 апреля 2024 07:50

5/5 раз окно закрылось почти без видимых проявлений. Иногда заметно очень короткое мигание экрана. Уже достаточно комфортно. Но возможно потом попрошу снизить задержку до 100мс, если мигание буду часто замечать.


tormozit
#31, 07 апреля 2024 16:33

Больше это окно не появлялось. Предлагаю сократить задержку до 100мс.


tormozit
#32, ред. 09 апреля 2024 20:28

С задержкой 100мс окно тоже правильно закрывается (не появляется).
tormozit изменил статус на Закрыто


Для вставки изображения или файла, перетащите его в поле редактора или вставьте файл из буфера