描述
由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控件将还原为当前用户的注册表设置。
GetOverrideKeyPath为GetOptionKeyPathGetOptionKeyPath提供了一种备用机制,用于在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;
}


