Я занимаюсь разработкой макроса / приложения в VB.NET для выполнения некоторых операций над открытым в настоящее время документом в CorelDRAW (версия 2018 года).Я пытаюсь использовать следующий код для использования GetActiveObject()
для получения ссылки на текущий открытый экземпляр Corel:
Dim ActiveCorelApp As Corel.Interop.VGCore.Application = Nothing
Try
ActiveCorelApp = System.Runtime.InteropServices.Marshal.GetActiveObject("CorelDRAW.Application.20")
Catch ex As Exception
MsgBox("Error4: Could not get the active CorelDRAW.Application object. Make sure CorelDRAW is running.")
End Try
В настоящее время это приложение использует точно такой же метод для получения ссылок на оба AutodeskInventor и AutoCAD без проблем.
Я нашел ссылки на запуск как целевого приложения (в данном случае Corel), так и Visual Studio в режиме администратора для решения этой проблемы.Однако никакая комбинация запуска Visual Studio и / или Corel в режиме администратора не имела значения.
Я пробовал много разных строк с именами объектов, но после проверки в реестре выясняется, что "CorelDRAW.Application.20"
является правильным.
Я загрузил программу просмотра ROT (Таблица текущих объектов), и Corel не отображается в списке.Кажется (согласно другим сообщениям на форуме), что некоторые программы испытывают проблемы с регистрацией в ROT сразу после запуска и требуют, чтобы приложение потеряло фокус окна и восстановило его до того, как оно зарегистрируется.Выполнение аналогичных действий (сворачивание / восстановление, переключение на другую программу и обратно) в CorelDRAW не дало никаких результатов.
Я получаю следующую ошибку:
System.Runtime.InteropServices.COMException: 'Операция недоступна (исключение из HRESULT: 0x800401E3 (MK_E_UNAVAILABLE))'