从COM对象调用方法

本文关键字:方法 调用 对象 COM | 更新日期: 2023-09-27 18:04:03

第三天试图解决我的问题,但运气不好下面是我的FunnyWorld3.cs文件。我注册了这个组件,这里没有问题

[assembly: AssemblyKeyFile("Keys.snk")]
public interface IFunnyWorld3
{
    void SayHello(String param);
};
[
  ClassInterface(ClassInterfaceType.AutoDual)
]
public class FunnyWorld3 : IFunnyWorld3
{   
    public void SayHello(String param)
    {
        MessageBox.Show(param, "FunnyWorld::SayHello metnod was invoked");
    }
};
然后我创建了c#项目,代码:
Type comType = Type.GetTypeFromProgID("FunnyWorld3", true);
object comObj = Activator.CreateInstance(comType)

接下来是什么?我如何在我的项目中调用SayHello方法?请帮助(

从COM对象调用方法

要调用该方法,您需要将其转换为定义该方法的IFunnyWorld3类型。

IFunnyWorld3 fw = (IFunnyWorld3)comObj;
fw.SayHello("message");

cast呢?如果您获得了对object的引用,那么您应该能够强制转换它:

IFunnyWorld3 fw3 = (IFunnyWorld3) comObj;

然后调用你的方法。像

fw3.SayHello("Hello, World");