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;
|