Search code examples
c#.netcompinvoke

Best way to access COM objects from C#


I am planning to use various objects that are exposed as COM objects. To make them easier to use, I'd like to wrap them as C# objects. What is the best approach for this?


Solution

  • If the library is already registered, you can perform the following steps to have Visual Studio generate an interop assembly for you:

    • Open to your Visual Studio project.
    • Right click on 'References' (right under the project in your Solution Explorer) and select 'Add Reference'.
    • Select the COM tab. (If you don't see this, you have a project type that doesn't support COM.)
    • Select the Component you wish to interop with.
    • Select 'ok'.

    This will be a class or set of C# classes that wrap all of the COM interface stuff with a normal C# class. Then you just use it like any other C# library. If the import of the reference worked well, you can explore it like any other reference and the methods/structs/classes/constants should show up in that namespace and intellisense.

    This will get you started, at least. If this is deployed in a corporate environment or one you can control, this may be all you need.