Сообщение от Igor'
|
Сообщение от orrollo
|
Подскажите, пожалуйста, возможно ли использовать приложение как com-объект в .net?
Попытка подключить .tlb файл через references проекта вызывает сообщение "Type library 'AutoGRAPHShell' was exported from a CLR assembly and cannot be re-imported as a CLR assembly", что логично, учитывая среду разработки.
При этом попытка указать как reference один из exe-файлов проходит успешно, но программа падает при попытке загрузки этого файла с сообщением что файл не найден или отсутствует один из компонентов, какой из них - не указывает.
Каталог компиляции пробной программы в свойствах проекта указан в каталог автограф, рабочий каталог при запуске выставляется в него же.
Есть ли возможность показать пример, как именно подключаться к системе из .net?
|
Если Вы хотите в своей программе получать данные из AutoGRAPH 5 (.NET) по OLE, Вам не нужно подключать его в references и ссылаться на его каталог. Необходимо получить COM-объект, зарегистрированный в реестре, и, используя его, выполнять запросы к COM-серверу, которым является AutoGRAPH 5.
Пример на C#, выводит версию программы:
dynamic comObject = null;
try
{
var comType = Type.GetTypeFromProgID("AutoGRAPHAutomation");
if (comType != null) comObject = Activator.CreateInstance(comType);
}
catch (Exception ex)
{
throw new Exception(ex.Message + ex.InnerException);
}
if (comObject == null)
throw new Exception("AutoGRAPH does not register");
comObject.WaitForInitializing();
MessageBox.Show(comObject.CurrentVersion);
Добавлено через 4 минуты
Описание запросов к COM-серверу AutoGRAPH здесь: http://www.tk-chel.ru/download/AutoGRAPH_OLE.zip
|
к сожалению, код приведенный вами полностью неработоспособен - не компилируется - в части
comObject.WaitForInitializing();
MessageBox.Show(comObject.CurrentVersion);
возможно ли увидеть рабочий вариант?
Добавлено через 3 минуты
прошу прощения, смог собрать и запустить, не хватало библиотек.