Как избежать диалогового окна тревоги при форсировании закрытия COM-сервера

У меня есть программа o o, написанная в CBuilder-xe, все с интерфейсом COM, чтобы вызываться службой, которая сохраняет их в живых и в конечном итоге перезапускает их, когда они умирают. Служба вызывает модуль, используя стандартный метод CreateObject, как здесь

varServerCom = varServerCom.CreateObject(progid);

Все, что работает, но я нашел проблему блокировки.

Я предполагаю, что для semplicity of explantion у меня есть сервисная программа с именем MGR, которая вызывает программу обслуживания com, называемую SRVCOM1.

Когда для некоторых критически важных задач серверная программа SRVCOM1 хочет закрыть, она предотвращает закройте его, потому что окна отправляют диалоговое окно с предупреждением о том, что я закрываю программу с открытой ссылкой com и спрашиваю, хочу ли я действительно закрыть программу сервера.

Если эта программа работает в фоновом режиме, диалоговое окно поместит программу на неопределенное время. Я хочу пропустить это диалоговое окно, чтобы избежать зависания программы. Возможно ли сообщать окнам или серверу com, чтобы всегда принимать принудительное закрытие серверной программы?

0
nl ja de
Мерфи снова на работе. Каждый хак вокруг известной ошибки, которая на самом деле не исправляет ошибку, просто добавляет больше способов вызвать сбой. Это поле сообщения является наименьшей из ваших проблем, вы также можете свернуть все клиентские процессы, подключенные к серверу. Не найдя строку кода, которая отображает окно сообщения и комментирует его, вы можете просто написать еще одну программу, которая убивает сервер с помощью TerminateProcess.
добавлено автор Hans Passant, источник
Поиск кода, который отображает окно сообщения, никогда не бывает трудным. Просто присоедините отладчик, сломайте программу и посмотрите на стек вызовов. Неужели вам не нужно полностью перезапускать сервер, когда dbase переходит в автономный режим? Просто заново создайте соединение.
добавлено автор Hans Passant, источник
На самом деле, messageBox, который не вызывает меня, является большой проблемой, а не последней, потому что, например, я вижу, что когда dabase сходит на нет, моя контрольная процедура перезапускает его, а программа сервера com пытается перезапустить к смолихронизированию с новым экземпляром db. Вся эта процедура восстановления должна работать, если не было такого сообщения, в котором зависает программа, и чтобы этот новый экземпляр не заменил старый. И кроме того, меня интересует только открытие, если есть способ удалить такой неприятный почтовый ящик, а не другие вопросы.
добавлено автор enzo2, источник
@Hans, окно сообщения, которое раздражало меня, находится внутри библиотек Microsoft/Ole. У меня нет исходного кода для отладки. Я просто надеялся, что где-то есть способ отключить его, вот почему моя просьба здесь.
добавлено автор enzo2, источник