2015-04-22 5 views
1

Я создаю приложение с C#, которое может считывать данные элемента с SQL Server и подталкивать его к системе масштабирования под названием «SLP-V Ishida Retail Scales». У них есть интерфейс «SLP-V Automation Interface», который позволяет пользовательским программам взаимодействовать со своими системами. Это примечание со страницы справки в SLP-V:Как взаимодействовать с другими программами с OLE Automation в C#?

Интерфейс автоматизации (также известный как интерфейс COM (общая объектная модель) »предоставляет метод для пользовательских программ для доступа к функциям SLP-V. Наиболее распространенным приложением для этого является использование VB Script для автоматизации операций SLP-V, таких как импорт файлов хоста. Однако интерфейс автоматизации может использоваться из любой среды программирования, которая поддерживает автоматизацию (COM), и это предпочтительный метод включения функций SLP-V в приложения конечного пользователя.

В этом разделе представлена ​​ссылка на методы и свойства объекта автоматизации SLP-V и включает в себя некоторые примеры программ.

SLP-V объекта автоматизации

Имя объекта автоматизации SLP-V является "Ishida.Slp.Scripting.CommonApi" и файл библиотеки тип "SlpScripting.tlb".

Мой вопрос в том, что язык C# позволяет нам взаимодействовать с другими программами с использованием OLE Automation? И если да, то как мне взаимодействовать с моей программой? Я имею в виду вызов их метода. Потому что я не могу добавить SlpScripting.tlb в качестве ссылки. Это говорит

Ссылка на «SLP Scripting Interface» не может быть добавлен экспортировался из сборки .NET библиотеки типов ActiveX «SlpScripting.tlb» и не может быть добавлен в качестве ссылки. Добавьте ссылку на сборку .NET вместо

И я искал Google об этом, но я не нашел ответа.


Наконец нашел решение у меня нет, чтобы добавить ссылку на C#, а не только с помощью:

System.Type objType = System.Type.GetTypeFromProgID("The name of progID that you want to call"); 
dynamic comObject = System.Activator.CreateInstance(objType); 
  • Пример ProgID = «Ishida.Slp.Scripting.CommonApi ».

А потом просто вызовите функцию/метод, который существует в этом объекте, например:

comObject.LoginToHost("localhost", 8085, username, pass); 

+0

У них действительно нет ничего в этой справочной странице о доступе к их системе из .NET-кода? Поскольку эта ошибка указывает на то, что их материал также написан в .NET, и система не хочет, чтобы обойти все через два набора оболочек (перевести .NET -> COM, а затем перевести COM -> .NET) –

+0

Я прочитал справочную документацию, но не упоминается, как получить доступ к их системе из кода C# .NET. Если я создаю эту программу на Visual Basic, можно ли более легко взаимодействовать с системой SLP? Потому что в нем упоминается «ScaleLink Pro поддерживает автоматизацию ActiveX (также известную как автоматизация OLE), что позволяет контролировать операции ScaleLink Pro внешними программами, включая программы, написанные на языках сценариев, таких как Visual Basic и Java-скрипт». –

ответ

2

автоматизации OLE является старая формулировка для того, что мы теперь называем COM. И да, .NET может легко получить доступ к COM (начиная с .NET 1.0).

У вас есть следующие варианты:

Метод 1

Первый "зарегистрировать" СОМ библиотека в системе разработки. Посмотрите документацию по системе SLP, возможно, это было сделано уже во время настройки.Если нет, обычно COM-DLL можно зарегистрировать вручную с помощью regsvr32 XXX.DLL. Помните о проблемах с 32/64 бит (если вы хотите зарегистрировать 32-битную COM-DLL в 64-битных Windows, используйте C:\Windows\SysWOW64\regsvr32.exe).

Тогда ваш COM DLL должны быть перечислены в Visual Studio, если вы идете в

Добавить ссылку ==> COM

как "SlpScripting Type Library 1.0" или аналогичный.

Затем добавьте «использование SLPxxxx» или подобное (Intellisense должно показать настоящее имя).

После этого вы сможете создать новый экземпляр вашего COM-объекта.

Дополнительную информацию можно получить по запросу «C# COM interop», вы найдете много информации.

Метод 2

Открыть команду Студии приглашения Визуального и введите:

tlbimp SlpScripting.tlb 

Библиотека DLL будет создана, который вы можете добавить в качестве ссылки.

+0

Во-первых, спасибо за ваше объяснение. В методе 1, который вы упомянули, он уже был зарегистрирован внутри библиотеки COM, а имя - «Интерфейс сценариев SLP». Это то же самое, что и SlpScripting.tlb, о котором я упоминал ранее, и когда я его добавляю, он показывает мне ошибку типа «Ссылка на интерфейс SLP Scripting Interface» не может быть добавлена ​​... » В методе 2, Я сделал это раньше. Но все еще показывает мне ошибку «TlbImp: ошибка TI1029: библиотека типов« SlpScripting »была экспортирована из сборки CLR и не может быть повторно импортирована как сборка CLR». Это меня так смущает. Но спасибо за ответ :) –

Смежные вопросы