c#.NET中开发可用于Web网页的ActiveX控件

本文介绍了如何在C#.NET中开发适用于Web网页的ActiveX控件,包括设置程序集的COM可见性,修改AssemblyInfo.cs文件,实现IObjectSafety接口,注册和注销控件的方法,以及在网页中的调用步骤。虽然内容简略,但提供了关键步骤作为日后参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、COM可见及GUID

项目属性 –> 应用程序 –> 程序集信息:

image

为程序生成一个GUID填写在此处,并勾选“使程序集 COM 可见”

二、修改AssemblyInfo.cs文件:

//添加一行命名空间
using System.Security;
//添加一行标记
[assembly: AllowPartiallyTrustedCallers()]

三、类的实现

1. 标记GUID

[Guid("88E22812-2AFF-4c87-AB0B-D3C650BB9BF8")]
public partial class OcxTest : UserControl
{ }

2. 声明IObjectSafety接口

[ComImport,Guid("CB5BDC81-93C1-11CF-8F20-00805F2CD064")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IObjectSafety
{
  [PreserveSig]
  void GetInterfacceSafyOptions(
    int riid,
    out int pdwSupportedOptions,
    out int pdwEnabledOptions);

  [PreserveSig]
  void SetInterfaceSafetyOptions(
    int riid,
    int dwOptionsSetMask,
    int dwEnabledOptions);
}

3.实现IObjectSafety接口

[Guid("88E22812-2AFF-4c87-AB0B-D3C650BB9BF8")]
public partial class OcxTest : UserControl, IObjectSafety
{
    //Other lines

    #region IObjectSafety 成员

    void IObjectSafety.GetInterfacceSafyOptions(int riid, out int pdwSupportedOptions, out int pdwEnabledOptions)
    {
        pdwSupportedOptions = 1;
        pdwEnabledOptions = 2;
    }

    void IObjectSafety.SetInterfaceSafetyOptions(int riid, int dwOptionsSetMask, int dwEnabledOptions)
    {
        throw new NotImplementedException();
    }

    #endregion
}

4.【可选】为注册和注销实现更多操作,注册和注销时会执行如下方法

[Guid("88E22812-2AFF-4c87-AB0B-D3C650BB9BF8")]
public partial class OcxTest : UserControl, IObjectSafety
{
    //Other lines

    ///
    ///Register the class as a control and set its CodeBase entry
    ///
    ///The registry key of the control
    [ComRegisterFunction()]
    public static void RegisterClass(string key)
    {
        //
    }

    ///
    ///Called to unregister the control
    ///
    ///Tke registry key
    [ComUnregisterFunction()]
    public static void UnregisterClass(string key)
    {
        //
    }
}

四、注册和注销

"C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/regasm.exe" /codebase OcxTest.dll

"C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/regasm.exe" /codebase OcxTest.dll /u

五、调用

<object id="p" border="0" classid="CLSID:88E22812-2AFF-4c87-AB0B-D3C650BB9BF8"
    width="300" height="280">

  object>

结束。

(时间及其仓促,写的很简略,立此存档以备后用)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值