Delphi开发ActiveX控件在IE中无法加载

Delphi创建的Automation Object必须实现IObjectSafety接口,否则新版本IE会拒绝加载。主要代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
FObjectSafetyFlags: DWORD;
function 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^ := FObjectSafetyFlags and
      (INTERFACESAFE_FOR_UNTRUSTED_CALLER or INTERFACESAFE_FOR_UNTRUSTED_DATA);
  end
  else
  begin
    pdwSupportedOptions^ := 0;
    pdwEnabledOptions^ := 0;
  end;
end;
function SetInterfaceSafetyOptions(const IID: TIID; dwOptionSetMask,
  dwEnabledOptions: DWORD): HResult;
var
  Unk               : IUnknown;
begin
  Result := QueryInterface(IID, Unk);
  if Result <> S_OK then
    Exit;
  FObjectSafetyFlags := dwEnabledOptions and dwOptionSetMask;
end;

 

posted @ 2015-01-06 12:57  流星无语  阅读(295)  评论(0编辑  收藏  举报