У меня есть .Net COM-сервер, у которого есть метод, который принимает сообщение и задержку как параметры. После задержки он вызывает событие, отправляющее сообщение клиенту.Почему я не получаю библиотеку типов при поиске .Net COM-сервера от клиента FoxPro
Он работает с клиентами .Net и VB6.
Для того, чтобы получить COM событие, чтобы связать в FoxPro, вы должны создать класс, который реализует интерфейс событий в FoxPro и провод его, как описано здесь: http://www.west-wind.com/presentations/dotnetfromVfp/DotNetFromVfp_EventHandling.asp
У меня есть такой класс:
DEFINE CLASS ComEventHandler AS session OLEPUBLIC
IMPLEMENTS IComServerEvents IN "PcaTest.ComServer"
* "C:\ComTest\PCATest.tlb"
PROCEDURE IComServerEvents_TimerExpired(message AS STRING) AS VOID
* add user code here
?message
ENDPROC
ENDDEFINE
И код телеграфировать это вверх:
loMM = CREATEOBJECT("PcaTest.ComServer")
loEvents = CREATEOBJECT("ComEventHandler")
EventHandler(lomm, loevents)
Когда я запускаю этот код, я получаю Тип библиотеки PcaTest.ComServer не найдено. Тем не менее, он работает, как ожидалось, если я изменить линию орудия для:
IMPLEMENTS IComServerEvents IN "C:\ComTest\PCATest.tlb"
Я не могу жестко закодировать расположение TLB.
Строка «CREATEOBJECT (« PcaTest.ComServer »)» работает отлично, и если я не пытаюсь создать экземпляр объекта ComEventHandler, этот COM-объект будет создан, и я могу вызвать его методы и получить доступ к его свойствам. Класс обработчика событий (в основном) работает только тогда, когда я кормлю его .tlb, а не progId.
. COM-сервер COM зарегистрирован в GAC. Я пробовал regasm с и без/codebase и с и без/tlb или /tlb:filename.tlb
У меня было это, работая в тестировании в какой-то момент, или так казалось. Я не могу повторить эти результаты сейчас, но когда я работал, я использовал/codebase и /tlb:filename.tlb.
Я - FoxPro n00b. Я предположил, что строка «Реализаторы» была скомпилирована в fxp и не интерпретирована во время выполнения. Если бы мне пришлось искать путь, я бы проверял реестр, чтобы он мог меняться в зависимости от машины. (файлы программ и программных файлов (x86)) Но я знал, что не хочу этого делать, потому что у меня было это нормально, по крайней мере, дважды, и я подумал, что мне просто нужно выяснить, как это сделать. –