Navigation:  Internet Development > Advanced Hosting Reference > Interfaces > IDocHostUIHandler2 >

GetOverrideKeyPath

Previous pageReturn to chapter overviewNext page

描述

 

WebBrowser控件调用以检索修改Microsoft Internet Explorer用户首选项的注册表子项路径。

 

C++ 语法

 

HRESULT GetOverrideKeyPath(     

   LPOLESTR *pchKey,

   DWORD dw

);

 

PowerBASIC 语法

 

METHOD GetOverrideKeyPath ( _

   BYREF pchKey AS DWORD, _

   BYVAL dw AS DWORD _

) AS LONG

 

参数

 

pchKey

[out]指向类型为LPOLESTR的变量的指针,该变量接收主机存储其注册表设置的注册表子项字符串。

dw

[in]保留。必须设置为NULL.

 

OBJRESULT

 

如果成功返回S_OK,否则返回错误值。

 

备注

 

初始化时,WebBrowser控件实例会在主机上调用GetOverrideKeyPath,以便主机可以指定包含修改当前用户的Internet Explorer注册表设置的设置的注册表位置。如果主机为此方法返回S_FALSE,或者如果返回到pchKey中的WebBrowser控件的注册表项路径为空或为空,则WebBrowser控件将还原为当前用户的注册表设置。

 

GetOverrideKeyPathGetOptionKeyPathGetOptionKeyPath提供了一种备用机制,用于在WebBrowser控件的注册表设置中进行更改。使用GetOverrideKeyPath,您的WebBrowser控件实例会保留当前用户的注册表设置。位于由此方法指定的注册表路径的任何注册表更改将覆盖位于HKEY_CURRENT_USER / Software / Microsoft / Internet Explorer中的注册表更改。将此与GetOptionKeyPath进行比较,导致WebBrowser控件实例默认为其原始设置,然后从方法指定的注册表路径应用注册表更改。

 

例如,假设用户将Internet Explorer的默认文字大小更改为最大字体。实施GetOverrideKeyPath将保留该更改—,除非在由GetOverrideKeyPath实现指定的注册表路径中的注册表设置中特别覆盖此大小。实施GetOptionKeyPath不会保留用户的文字大小更改。而是从GetOptionKeyPath实现指定的注册表路径应用注册表设置之前,WebBrowser控件将默认为其原始中型字体。

 

GetOverrideKeyPath的实现必须使用CoTaskMemAlloc为pchKey分配内存。(WebBrowser控件将负责使用CoTaskMemFree释放此内存)。即使未实现此方法,此参数也应设置为NULL。

 

此方法指定的密钥必须是HKEY_CURRENT_USER密钥的子项。

 

 

此示例将WebBrowser控件指向位于HKEY_CURRENT_USER / Software / YourCompany / YourApp的注册表项,以便用户偏好替换。当然,您需要在注册表中的这个位置设置注册表项,以便WebBrowser控件使用它们。

 

HRESULT CBrowserHost :: GetOverrideKeyPath(LPOLESTR * pchKey,DWORD dwReserved)nl

{

  HRESULT小时;

  WCHAR * szKey = L“Software \\\\ MyCompany \\\\ MyApp”;

       

  //  cbLength是以字节为单位的szKey的长度。

  size_t cbLength;

  hr = StringCbLengthW(szKey,1280,&cbLength);

  //  TODO:在这里添加错误处理代码。

       

  if(PchKey)

   {

       *pchKey = (LPOLESTR)CoTaskMemAlloc(cbLength +的sizeof(WCHAR));

      if(* PchKey)

          hr = StringCbCopyW(* pchKey,cbLength +的sizeof(WCHAR),szKey);

   }

  其他

      hr = E_INVALIDARG;

 

  返回hr;

}