|
Zones & Security
|
|
|
From EmbeddedWB you can access the default Internert Security
Manager and Internet Zone Manager objects:
EmbeddedWB1.SecurityManager EmbeddedWB1.ZoneManager
You can read more about Zones & Security on MS-Site:
URL
Security Zones Overview
Here are a couple of suggestions for use:
1. You are adding a statusbar to your webbrowser
application and now you want to add zone-information and zone-icon like on
Internet Explorers statusbar:
Put the following in OnBeforeNavigate2 and/or
OnDocumentComplete:
var s :
String; pw : Pwidechar; dwZone : Cardinal; ZoneAttr : TZoneAttributes;
//Defined in
Urlmon.pas begin s:=url; Stringtowidechar(s,pw,length(s)+1); embeddedwb1.Securitymanager.MapUrlToZone(Pw,dwZone,0); embeddedwb1.ZoneManager.GetZoneAttributes(dwZone,ZoneAttr);
|
First you use MapUrlToZone to determine what security zone the
site belongs to. Then you get the information about that zone from
GetZoneAttributes, and now you have all you need for your
statusbar:
ZoneAttr.szIconPath -> e.g. "inetcpl.cpl#001313" (use
API-function ExtractIcon to extract the icon).
ZoneAttr.szDisplayName
-> e.g. "Internet"
You even get information to add to the
hintbox:
ZoneAttr.szDescription -> e.g. "This zone contains all Web
sites you haven't placed in other zones"
2. If you download and install "IE5 Web
Accessories" from MS the following items are added to Tools menu in
IE5:
Add to Restricted Zone Add to Trusted Zone
You can easily add the same menu items to your webbrowser
application with EmbeddedWB (remember to add urlmon to uses-clauses):
Procedure Tform1.AddSiteToTrusted(Url :
PWideChar); begin EmbeddedWB1.SecurityManager.SetZoneMapping(URLZONE_TRUSTED,Url,SZM_CREATE); end;
Procedure
Tform1.AddSiteToRestricted(Url :
PWideChar); begin embeddedWB1.SecurityManager.SetZoneMapping(URLZONE_RESTRICTED,Url,SZM_CREATE); end;
Procedure
Tform1.RemoveSiteFromTrusted(Url :
PWideChar); begin EmbeddedWB1.SecurityManager.SetZoneMapping(URLZONE_TRUSTED,Url,SZM_DELETE); end;
Procedure
Tform1.RemoveSiteFromRestricted(Url :
PWideChar); begin EmbeddedWB1.SecurityManager.SetZoneMapping(URLZONE_RESTRICTED,Url,SZM_DELETE); end;
|
If you want to implement your own customized Security manager, you
can use OnQueryService:
function
TForm1.EmbeddedWB1QueryService(const rsid, iid: TGUID; out Obj:
IUnknown): HRESULT; begin if
IsEqualGUID(InternetSecurityManager, rsid)
and IsEqualGUID(InternetSecurityManager,
iid) then Result:=<YourSecurityManager>.QueryInterface(IInternetSecurityManager,
Obj) else result := E_NOINTERFACE; end;
|
See also IESecurityManager and Zones & Security demo for more
information
|

Created
by Per Lindsų Larsen
Copyright (c) 2005 bsalsa productions. All rights reserved.
bsalsa@bsalsa.no-ip.info |