none
COM Interop via C# RRS feed

  • Вопрос

  • Добрый день! Помогите пожалуйста с написанием контрола COM на C#. При попытке создания класса, написанного на C# с использованием Visual Studio 2010 при помощи CreateObject(string) возникает сообщение об ошибке о невозможности создания объекта контейнером ActiveX. При этом в св-вах проекта стоит галочка "Register for COM interop". Код ниже.

    C#: 

     

     

    using System;
    
    using System.Collections.Generic;
    
    using System.Linq;
    
    using System.Text;
    
    using System.Runtime.InteropServices;
    
    [ComVisible(true)]
    
    [Guid("0A37241B-78E8-4FBB-8B5E-9D1036AC3EC9")]
    
    [ProgId("Lib1.MyClass")]
    
    public class MyClass
    
    {
    
        public const double PI = Math.PI;
    
    }
    

     

    VBS:
    dim o
    set o = CreateObject("Lib1.MyClass")
    msgbox o.PI
    
    Что я не так делаю? 

     

     

    Пробовал еще следующий код:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    using System.Runtime.InteropServices;
    
    namespace Launcher
    {
    
      [InterfaceType(ComInterfaceType.InterfaceIsDual), Guid("XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX")]
      public interface ILauncher
      {
        void launch();
      }
    
      [ClassInterface(ClassInterfaceType.None), Guid("YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYY"), ProgId("Launcher.Launcher")]
      public class Launcher : ILauncher
      {
        private string path = null;
    
        public void launch()
        {
          Console.WriteLine("I launch scripts for a living.");
    
        }
    
      }
    }


    and VB script using the COM:

    set obj = createObject("PSLauncher.PSLauncher") obj.launch()

    +регистрировал свою сборку посредством regasm.exe.

    То же самое в итоге...

     

     


    • Перемещено Abolmasov Dmitry 7 сентября 2011 г. 12:38 (От:Настольные ПК)
    8 августа 2011 г. 11:19

Ответы

  • Проблема была решена. С помощью Windows Script Host данный объект действительно не создавался, но в IE все работало нормально. Подскажите пожалуйста, по какой причине это происходит?
    • Помечено в качестве ответа Matyushov Anton 9 августа 2011 г. 20:20
    9 августа 2011 г. 6:37