C#.NET ActiveX控件的制作

第一步:新建项目,如下图,选择windows下的类库项目。

C#.NET ActiveX控件的制作_第1张图片

第二步:在项目中添加一个类:IObjectSafety.cs 如下图:

C#.NET ActiveX控件的制作_第2张图片

IObjectSafety.cs代码如下:

using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;

namespace MyActiveX
{
//Guid唯一,不可变更,否则将无法通过IE浏览器的ActiveX控件的安全认证   

 [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);
    }
}

第三步:添加一个用户控件 MyActiveXControl.cs 如下图

C#.NET ActiveX控件的制作_第3张图片

修改 MyActiveXControl.cs 代码,让其继承IObjectSafety,定义相应的Guid,该Guid就是ActiveX的classid

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace MyActiveX
{
     [Guid("218849AF-1B2C-457B-ACD5-B42AC8D17EB7"), ComVisible(true)]
    public partial class MyActiveXControl : UserControl,IObjectSafety
    {
        public MyActiveXControl()
        {
            InitializeComponent();
        }

        #region IObjectSafety 成员 用于ActiveX控件安全信任
        public void GetInterfacceSafyOptions(int riid, out int pdwSupportedOptions, out int pdwEnabledOptions)
        {
            pdwSupportedOptions = 1;
            pdwEnabledOptions = 2;
        }

        public void SetInterfaceSafetyOptions(int riid, int dwOptionsSetMask, int dwEnabledOptions)
        {
            throw new NotImplementedException();
        }
        #endregion
    }
}

第四步:添加一个按钮,用于测试ActiveX控件,如下图:

C#.NET ActiveX控件的制作_第4张图片

为该按钮添加事件:

private void button1_Click(object sender, EventArgs e)
        {
            MessageBox.Show("powered by yyzq.net 叶知秋 [email protected]");
        }

至此,代码编写部分完成。

第五步:我们来制作一个安装包,新建一个安装项目,如下图:

C#.NET ActiveX控件的制作_第5张图片

第六步:在安装项目的文件系统中添加刚才之前我们制作的ActiveX的DLL:MyActiveX.dll

特别注意:在文件添加进来后,右击文件选择属性,设置其属性Register值为:vsdraCOM),如下图:

C#.NET ActiveX控件的制作_第6张图片

第七步:生成安装程序,在项目MyActiveX\Setup1\Debug下找到Setup1.msi,双击安装它。

然后在该目录下新建一个html文件(test.html)用于测试我们的ActiceX控件。HTML代码如下:

<html>
<title>Powered by yyzq.net Email:[email protected]</title>
<head>
</head>
<body>
<div>
<object id="yyzq" classid="clsid:218849AF-1B2C-457B-ACD5-B42AC8D17EB7"
        width="320"
        height="240"
        codebase="Setup1.msi">
</object>
</div>
</body>
</html>

在IE浏览器下打开test.html,点击按钮

C#.NET ActiveX控件的制作_第7张图片

OK,到这里就结束了。

另外关于JS交互:

var yyzq= document.getElementById("yyzq"); //获取ActiveX控件对象。

然后: yyzq.函数名(参数)这样的方式来调用控件的函数并获取返回结果。

还有什么不懂的,欢迎留言,有什么不当之处,欢迎指正。转载请注明出处,谢谢!

你可能感兴趣的:(ActiveX)