Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1062652
  • 博文数量: 282
  • 博客积分: 10865
  • 博客等级: 上将
  • 技术积分: 2480
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-12 12:35
文章存档

2017年(1)

2016年(3)

2015年(10)

2014年(12)

2013年(5)

2012年(10)

2011年(29)

2010年(3)

2008年(13)

2007年(92)

2006年(104)

我的朋友

分类: Delphi

2013-06-18 19:54:29

Delphi创建OCX控件非常的方便,但IE调用时弹出的安全认证非常麻烦,有时OCX也不需要界面,IE调用时需要隐藏,非常不方便。在DELPHI中创建OCX实现安全接口和创建事件中修改部分代码
实现安全接口  
  
继承:IObjectSafety  
  
重载方法:  
  
 function GetInterfaceSafetyOptions(const IID: TIID; pdwSupportedOptions,        //安全接口  
      pdwEnabledOptions: PDWORD): HResult; stdcall;  
function SetInterfaceSafetyOptions(const IID: TIID; dwOptionSetMask,  
      dwEnabledOptions: DWORD): HResult; stdcall;  
  
   
  
  
function TZhddMsg.GetInterfaceSafetyOptions(const IID: TIID;  
  pdwSupportedOptions, pdwEnabledOptions: PDWORD): HResult;  
var  
  Unk: IUnknown;  
begin  
  if (pdwSupportedOptions = nil) or (pdwEnabledOptions = nil) then  
  begin  
    Result := E_POINTER;  
    Exit;  
  end;  
  Result := QueryInterface(IID, Unk);  
  if Result = S_OK then  
  begin  
    pdwSupportedOptions^ := INTERFACESAFE_FOR_UNTRUSTED_CALLER or  
                                             INTERFACESAFE_FOR_UNTRUSTED_DATA;  
    pdwEnabledOptions^ :=  
      INTERFACESAFE_FOR_UNTRUSTED_CALLER or INTERFACESAFE_FOR_UNTRUSTED_DATA;  
  end  
  else   
  begin  
    pdwSupportedOptions^ := 0;  
    pdwEnabledOptions^ := 0;  
  end;  
end;  
  
function TZhddMsg.SetInterfaceSafetyOptions(const IID: TIID;  
  dwOptionSetMask, dwEnabledOptions: DWORD): HResult;  
var  
  Unk: IUnknown;  
begin  
  Result := QueryInterface(IID, Unk);  
  if Result <> S_OK then Exit;  
end;  
  
   
  
无界面:  
  
initialization  
  TActiveFormFactory.Create(  
    ComServer,  
    TActiveFormControl,  
    TZhddMsg,  
    Class_ZhddMsg,  
    1,  
    '',  
    OLEMISC_SIMPLEFRAME or OLEMISC_ACTSLIKELABEL,  
    //OLEMISC_INVISIBLEATRUNTIME or OLEMISC_ACTSLIKELABEL, //隐藏主界面  
    tmApartment);  
end.
阅读(1973) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~