(изменено: Evgeniya, 27 декабря 2018г. 14:52:26, причина: обощение. Пример работает для любого внешнего ПО, не только для Платан)

Тема: Зависание внешнего ПО при вызове диалога TDMS (C#)

Описание проблемы: при вызове диалога TDMS из формы  внешнего ПО происходит зависание как формы/диалога TDMS, так и окна  внешнего ПО. Это связано с отсутствием  встроенных средств переключения пользовательского управления для данной задачи.
Решить проблему можно следующим образом: принудительно запретить элементу управления форме  внешнего ПО отвечать на управление со стороны пользователя на время работы с диалогом TDMS.  При этом необходимо принудительно вернуть управление элементу при закрытии диалога любым из доступных способов.

///диалог TDMS создан ранее в программе
                TDMSSelectObjectDlg SelObjDlg;
                
                //текущая форма  внешнего ПО
                Form Active = this.FindForm();

                //отображает окно поверх текущего
                SelObjDlg.ParentWindow = Active.Handle.ToInt32();
                
//переводим фокус пользовательского управления, без этого диалог зависает
                Active.Enabled = false;
                
                //отображает диалог
                bool RetVal = SelObjDlg.Show();

                ///возвращает GUID отдела (по "ОК")

                if (RetVal)
                {
                    //возвращаем управление внешним ПО
                    Active.Enabled = true;
                    return SelObjDlg.Objects[0].GUID;
                }
        
//возвращаем управление  внешним ПО при любом другом выходе из диалога
                Active.Enabled = true;
                return null;
Спасибо сказали: marin.andrey, ALEX, KudrjashovAI3