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

使用C#开发ActiveX控件

 2010-09-30 20:59:06 来源:WEB开发网   
核心提示: 然后在控件类中继承并实现该接口:#regionIObjectSafety成员privateconststring_IID_IDispatch="{00020400-0000-0000-C000-000000000046}";privateconststring_IID_IDi

然后在控件类中继承并实现该接口: 

#region IObjectSafety 成员
private const string _IID_IDispatch = "{00020400-0000-0000-C000-000000000046}";
private const string _IID_IDispatchEx = "{a6ef9860-c720-11d0-9337-00a0c90dcaa9}";
private const string _IID_IPersistStorage = "{0000010A-0000-0000-C000-000000000046}";
private const string _IID_IPersistStream = "{00000109-0000-0000-C000-000000000046}";
private const string _IID_IPersistPropertyBag = "{37D84F60-42CB-11CE-8135-00AA004BB851}";
private const int INTERFACESAFE_FOR_UNTRUSTED_CALLER = 0x00000001;
private const int INTERFACESAFE_FOR_UNTRUSTED_DATA = 0x00000002;
private const int S_OK = 0;
private const int E_FAIL = unchecked((int)0x80004005);
private const int E_NOINTERFACE = unchecked((int)0x80004002);
private bool _fSafeForScripting = true;
private bool _fSafeForInitializing = true;
public int GetInterfaceSafetyOptions(ref Guid riid, ref int pdwSupportedOptions, ref int pdwEnabledOptions)
{
    int Rslt = E_FAIL;
    string strGUID = riid.ToString("B");
    pdwSupportedOptions = INTERFACESAFE_FOR_UNTRUSTED_CALLER | INTERFACESAFE_FOR_UNTRUSTED_DATA;
    switch (strGUID)
    {
        case _IID_IDispatch:
        case _IID_IDispatchEx:
            Rslt = S_OK;
            pdwEnabledOptions = 0;
            if (_fSafeForScripting == true)
                pdwEnabledOptions = INTERFACESAFE_FOR_UNTRUSTED_CALLER;
            break;
        case _IID_IPersistStorage:
        case _IID_IPersistStream:
        case _IID_IPersistPropertyBag:
            Rslt = S_OK;
            pdwEnabledOptions = 0;
            if (_fSafeForInitializing == true)
                pdwEnabledOptions = INTERFACESAFE_FOR_UNTRUSTED_DATA;
            break;
        default:
            Rslt = E_NOINTERFACE;
            break;
    }
    return Rslt;
}
public int SetInterfaceSafetyOptions(ref Guid riid, int dwOptionSetMask, int dwEnabledOptions)
{
    int Rslt = E_FAIL;
    string strGUID = riid.ToString("B");
    switch (strGUID)
    {
        case _IID_IDispatch:
        case _IID_IDispatchEx:
            if (((dwEnabledOptions & dwOptionSetMask) == INTERFACESAFE_FOR_UNTRUSTED_CALLER) && (_fSafeForScripting == true))
                Rslt = S_OK;
            break;
        case _IID_IPersistStorage:
        case _IID_IPersistStream:
        case _IID_IPersistPropertyBag:
            if (((dwEnabledOptions & dwOptionSetMask) == INTERFACESAFE_FOR_UNTRUSTED_DATA) && (_fSafeForInitializing == true))
                Rslt = S_OK;
            break;
        default:
            Rslt = E_NOINTERFACE;
            break;
    }
    return Rslt;
}
#endregion

上一页  1 2 3 4 5  下一页

Tags:使用 开发 ActiveX

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