C# late binding
От: Vasvasvas2004  
Дата: 11.03.10 19:59
Оценка:
Имеется COM объект к которому надо достучаться. Пишу программу на VB6

    'early binding
    Dim App1 As NTNMR.Application
    Dim Path As String
        
    Set App1 = New NTNMR.Application
    Path = App1.GetActiveDocPath

    late binding
    Dim App As Object
    Dim pathToDoc As String
    
    Set App = GetObject(, "NTNMR.Application")
    pathToDoc = App.GetActiveDocPath


имею
Path = “”
pathToDoc = “C:\\NTNMR\\data\\1pulse F1.tnt”
второй вариант правильный, но почему не работает раннее связываение?

На самом деле хочу использовать C#.
    //early binding
    NTNMR.Application oApplication = new NTNMR.Application();
    string StrActiveDocPath = oApplication.GetActiveDocPath();

    //late binding
    Type AppType = Type.GetTypeFromProgID("NTNMR.Application");
    object ObjectApp = Activator.CreateInstance(AppType);
    object[] parameter1 = new object[0];
    object oo = AppType.InvokeMember("GetActiveDocPath", BindingFlags.InvokeMethod, null, ObjectApp, parameter1);

в обоих случая получаю пустую строку.

В чем дело?
Re: C# late binding
От: Аноним  
Дата: 11.03.10 20:48
Оценка:
Здравствуйте, Vasvasvas2004, Вы писали:

V>Имеется COM объект к которому надо достучаться. Пишу программу на VB6


V>
V>    'early binding
V>    Dim App1 As NTNMR.Application
V>    Dim Path As String
        
V>    Set App1 = New NTNMR.Application
V>    Path = App1.GetActiveDocPath

V>


Референс в проекте VB6 на NTNMR добавлен?


V> //late binding

V> Type AppType = Type.GetTypeFromProgID("NTNMR.Application");
V> object ObjectApp = Activator.CreateInstance(AppType);
V> object[] parameter1 = new object[0];
V> object oo = AppType.InvokeMember("GetActiveDocPath", BindingFlags.InvokeMethod, null, ObjectApp, parameter1);
V>[/c#]
V>в обоих случая получаю пустую строку.

V>В чем дело?
Re[2]: C# late binding
От: Vasvasvas2004  
Дата: 11.03.10 20:50
Оценка:
А>Референс в проекте VB6 на NTNMR добавлен?

Конечно добавлен. без него бы не работал раннее связывание вообще
Re[3]: C# late binding
От: Аноним  
Дата: 11.03.10 20:56
Оценка:
Здравствуйте, Vasvasvas2004, Вы писали:


А>>Референс в проекте VB6 на NTNMR добавлен?


V>Конечно добавлен. без него бы не работал раннее связывание вообще



NTNMR.Application часом не ROT object ?
Re[4]: C# late binding
От: Vasvasvas2004  
Дата: 12.03.10 16:09
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Vasvasvas2004, Вы писали:



А>>>Референс в проекте VB6 на NTNMR добавлен?


V>>Конечно добавлен. без него бы не работал раннее связывание вообще



А>NTNMR.Application часом не ROT object ?


честно говоря не знаю. Есть прибор, у него программа NTNMR, которая также через COM интерфейс обеспечивает доступ к прибору с внешней программы. Некоторые функции из этого интерефейса работают везде и из C#, и из VB6, и с поздним, и ранним связыванием. А вот некоторые только из VB6 с поздним связыванием.
Re[5]: C# late binding
От: Аноним  
Дата: 12.03.10 17:22
Оценка:
Здравствуйте, Vasvasvas2004, Вы писали:


V>честно говоря не знаю. Есть прибор, у него программа NTNMR, которая также через COM интерфейс обеспечивает доступ к прибору с внешней программы. Некоторые функции из этого интерефейса работают везде и из C#, и из VB6, и с поздним, и ранним связыванием. А вот некоторые только из VB6 с поздним связыванием.


Попробуй достучаться следующим образом
http://support.microsoft.com/kb/316126
Re[6]: C# late binding
От: Vasvasvas2004  
Дата: 12.03.10 19:24
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Vasvasvas2004, Вы писали:



V>>честно говоря не знаю. Есть прибор, у него программа NTNMR, которая также через COM интерфейс обеспечивает доступ к прибору с внешней программы. Некоторые функции из этого интерефейса работают везде и из C#, и из VB6, и с поздним, и ранним связыванием. А вот некоторые только из VB6 с поздним связыванием.


А>Попробуй достучаться следующим образом

А>http://support.microsoft.com/kb/316126

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