c# 自定义 com服务器能够通过getobject获取到对象
要创建一个C#自定义COM服务器,可以按照以下步骤进行:
-
创建一个C#类库项目。
-
在项目中添加一个公共类,该类将用作COM对象的接口。该类应该包含所有公共方法和属性,以及必要的COM接口属性和方法。
-
在该类中,使用ComVisible属性将其设置为可见的COM对象。
-
在项目属性中,将“生成”选项卡中的“目标平台”设置为“x86”,因为COM服务器必须在32位模式下运行。
-
在项目属性中,将“生成”选项卡中的“注册输出”设置为“是”,这将在构建时自动将COM服务器注册到系统中。
-
在类中,实现所有必要的COM接口方法,并确保它们都是公共的。
-
在类中,使用ComRegisterFunction和ComUnregisterFunction属性来定义注册和注销COM服务器的方法。
-
在类中,使用Guid属性为COM对象分配一个唯一的GUID。
-
在类中,使用ProgId属性为COM对象分配一个唯一的程序ID。
-
在类中,使用ComSourceInterfaces属性为COM对象分配一个或多个事件接口。
-
在类中,使用ComDefaultInterface属性为COM对象分配默认接口。
-
构建项目,然后在COM客户端中使用GetObject或CreateObject方法来获取COM对象。
例如,以下是一个简单的C# COM对象示例:
using System;
using System.Runtime.InteropServices;
namespace MyCOMServer
{
[ComVisible(true)]
[Guid("A3E8F6A3-3F3D-4C5E-9C4A-4C7D4F5B5C5E")]
[ProgId("MyCOMServer.MyObject")]
public class MyObject
{
public string SayHello()
{
return "Hello, World!";
}
[ComRegisterFunction]
public static void RegisterClass(string key)
{
// Register the class
}
[ComUnregisterFunction]
public static void UnregisterClass(string key)
{
// Unregister the class
}
}
}
在COM客户端中,可以使用以下代码来获取该对象:
Dim obj
Set obj = GetObject("MyCOMServer.MyObject")
MsgBox obj.SayHello()
原文地址: http://www.cveoy.top/t/topic/bINA 著作权归作者所有。请勿转载和采集!