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

GetOptionKeyPath

Previous pageReturn to chapter overviewNext page

描述

 

WebBrowser控件调用以检索覆盖默认Microsoft Internet Explorer注册表设置的注册表子项路径。

 

C++ 语法

 

HRESULT GetOptionKeyPath(     

   LPOLESTR *pchKey,

   DWORD dw

);

 

PowerBASIC 语法

 

HRESULT GetOptionKeyPath ( _

   BYREF pchKey AS DWORD, _

   BYVAL dw AS DWORD _

) AS LONG

 

参数

 

pchKey

[out]指向一个LPOLESTR的指针,用于接收主机存储其注册表设置的注册表子项字符串。

dw

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

 

OBRESULT

 

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

 

备注

 

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

 

GetOptionKeyPathGetOverrideKeyPathWebBrowser控件主机提供了两个替代机制,以便在WebBrowser控件的注册表设置中进行更改。使用GetOptionKeyPathWebBrowser控件实例默认为其原始设置,然后从方法指定的注册表路径应用注册表更改。使用GetOptionKeyPathWebBrowser控件实例保留当前用户的注册表设置。位于由此方法指定的注册表路径的任何注册表更改将覆盖位于HKEY_CURRENT_USER / Software / Microsoft / Internet Explorer中的注册表更改。

 

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

 

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

 

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

 

 

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

 

HRESULT CBrowserHost :: GetOptionKeyPath(LPOLESTR * pchKey,DWORD dwReserved)en

{

  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;

}