1、ActiveX 创建
[Guid("E8B9AD84-DC03-421B-9084-8ED3D34EA534")] public class Test : IObjectSafety { public void Test(string msg) { MessageBox.Show(msg, "测试", MessageBoxButtons.OK, MessageBoxIcon.Information); } #region IObjectSafety 成员 public void GetInterfacceSafyOptions(Int32 riid, out Int32 pdwSupportedOptions, out Int32 pdwEnabledOptions) { // TOD 添加 WebCamControl.GetInterfacceSafyOptions 实现 pdwSupportedOptions = 1; pdwEnabledOptions = 2; } public void SetInterfaceSafetyOptions(Int32 riid, Int32 dwOptionsSetMask, Int32 dwEnabledOptions) { // TOD 添加 WebCamControl.SetInterfaceSafetyOptions 实现 } #endregion }
IObjectSafety 安全接口
[Guid("CB5BDC81-93C1-11CF-8F20-00805F2CD064"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] public interface IObjectSafety { // methods void GetInterfacceSafyOptions(int riid, out int pdwSupportedOptions, out int pdwEnabledOptions); void SetInterfaceSafetyOptions(int riid, int dwOptionsSetMask, int dwEnabledOptions); }
程序集修改为COM可见
在 AssemblyInfo.cs 文件里 修改
[assembly: ComVisible(true)]
为COM注册
生成以下 ActiveX 项目,然后使用VS自带的 COM 组件浏览器 看一下是否已经注册了COM组件
COM组件名称就是 ActiveX 类的完整名称,在.NET Category 下就能找到注册好了的COM组件
ASP.NET ActiveX调用
<html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <script type="text/javascript" src="Scripts/jquery-1.4.1.min.js"></script> <script type="text/javascript" language="javascript"> $(document).ready(function () { var activeObj = new ActiveXObject("VpnActive.Vpn"); $("#btnTest").click(function () { var msg = $("#txtMsg").val(); activeObj.Test(msg); }); }); </script> </head> <body> <input type="text" id="txtMsg" /> <input value="Test" id="btnTest" type="button" /> </body> </html>
显示效果
ActiveX组件的发布需要自行写注册程序,可以用VS自带的部署项目