WEB开发网
开发学院软件开发C语言 使用C#开发ActiveX控件 阅读

使用C#开发ActiveX控件

 2010-09-30 20:59:06 来源:WEB开发网   
核心提示: 添加一个Windows用户控件:图片看不清楚?请点击这里查看原图(大图),按照开发Windows用户控件一样的思路完成该控件的开发,使用C#开发ActiveX控件(3),本例中主要实现了两个业务功能,一个是提供一个公共方法,为了让ActiveX控件获得客户端的信任,控件类还需要实现一个名为&ld

添加一个Windows用户控件:

使用C#开发ActiveX控件

图片看不清楚?请点击这里查看原图(大图)。

按照开发Windows用户控件一样的思路完成该控件的开发,本例中主要实现了两个业务功能,一个是提供一个公共方法,用于读取USBKey中保存的签名证书,保存到本地C盘根目录下,并返回操作信息;另一个业务功能提供UI界面,包括一个Button控件和一个Label控件,Button控件的Click事件调用前面提供的那个方法,并将返回信息显示到Label控件上。这样做可以达到两个目的,其一,ActiveX控件提供公共方法供B/S程序直接调用,从后实现业务功能;其二,ActiveX控件可以提供B/S程序UI界面,通过响应B/S程序中对UI的操作事件实现业务功能。

完成控件开发后,为了使该用户控件作为一个ActiveX控件进行使用,还需要做以下修改:

首先,为控件类添加GUID,这个编号将用于B/S系统的客户端调用时使用(可以使用 工具-创建GUID 菜单创建一个GUID): 

Guid("4A44CF4E-F859-4328-AA22-3E9D7AFFF1AB")]
public partial class Hello : UserControl
{

其次,为了让ActiveX控件获得客户端的信任,控件类还需要实现一个名为“IObjectSafety”的接口。先创建该接口(注意,不能修改该接口的GUID值): 

using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
namespace Preresearch.CSharpActiveX
{
    [ComImport, GuidAttribute("CB5BDC81-93C1-11CF-8F20-00805F2CD064")]
    [InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
    public interface IObjectSafety
    {
        [PreserveSig]
        int GetInterfaceSafetyOptions(ref Guid riid, [MarshalAs(UnmanagedType.U4)] ref int pdwSupportedOptions, [MarshalAs(UnmanagedType.U4)] ref int pdwEnabledOptions);
        [PreserveSig()]
        int SetInterfaceSafetyOptions(ref Guid riid, [MarshalAs(UnmanagedType.U4)] int dwOptionSetMask, [MarshalAs(UnmanagedType.U4)] int dwEnabledOptions);
    }
}

上一页  1 2 3 4 5  下一页

Tags:使用 开发 ActiveX

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接