如何正确使用IOpenServiceManager::InstallService
How to properly use IOpenServiceManager::InstallService
我正在尝试定义一个新的 IE 搜索引擎,但每当我尝试安装该服务时遇到麻烦。
我完成了以下 example 并且只更改了文件的名称
upload.xml:
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
<ShortName>Web Search</ShortName>
<Description>Use Example.com to search the Web.</Description>
<Tags>example web</Tags>
<Contact>admin@example.com</Contact>
<Url type="application/rss+xml"
template="http://example.com/?q={searchTerms}&pw={startPage?}&format=rss"/>
</OpenSearchDescription>
home.html
<html>
<header>
<link rel="search"
type="application/opensearchdescription+xml"
href="http://somesite.com/upload.xml"
title="Content search" />
</header>
</html>
链接有效且有效。
c++:
ATL::CComPtr<IOpenServiceManager> spManager;
if (FAILED(hr = spManager.CoCreateInstance(CLSID_OpenServiceManager)))
return false;
//URL-OF-SERVICE: See http://www.opensearch.org/Specifications/OpenSearch/1.1#OpenSearch_description_elements
ATL::CComPtr<IOpenService> spService;
if (FAILED(hr = spManager->InstallService(L"http://somesite.com/home.html", &spService)))
return 0;
if (FAILED(hr = spService->SetDefault(TRUE, nullptr)))
return 0;
return 1;
每次我尝试安装我得到的服务时 (hr = 0xc00ce556 / E_INVALIDARG)
ActiveX/COM 使用来自 SysAllocString()
family of functions (wrapped by the CComBSTR
class) 的 BSTR
字符串。尝试通过 L"..."
:
使用它而不是编译时 WCHAR[]
文字
BSTR url = SysAllocString(L"http://somesite.com/home.html");
spManager->InstallService(url, &spService)
SysFreeString(url);
CComBSTR url(L"http://somesite.com/home.html");
spManager->InstallService((BSTR)url, &spService)
我正在尝试定义一个新的 IE 搜索引擎,但每当我尝试安装该服务时遇到麻烦。
我完成了以下 example 并且只更改了文件的名称
upload.xml:
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
<ShortName>Web Search</ShortName>
<Description>Use Example.com to search the Web.</Description>
<Tags>example web</Tags>
<Contact>admin@example.com</Contact>
<Url type="application/rss+xml"
template="http://example.com/?q={searchTerms}&pw={startPage?}&format=rss"/>
</OpenSearchDescription>
home.html
<html>
<header>
<link rel="search"
type="application/opensearchdescription+xml"
href="http://somesite.com/upload.xml"
title="Content search" />
</header>
</html>
链接有效且有效。
c++:
ATL::CComPtr<IOpenServiceManager> spManager;
if (FAILED(hr = spManager.CoCreateInstance(CLSID_OpenServiceManager)))
return false;
//URL-OF-SERVICE: See http://www.opensearch.org/Specifications/OpenSearch/1.1#OpenSearch_description_elements
ATL::CComPtr<IOpenService> spService;
if (FAILED(hr = spManager->InstallService(L"http://somesite.com/home.html", &spService)))
return 0;
if (FAILED(hr = spService->SetDefault(TRUE, nullptr)))
return 0;
return 1;
每次我尝试安装我得到的服务时 (hr = 0xc00ce556 / E_INVALIDARG)
ActiveX/COM 使用来自 SysAllocString()
family of functions (wrapped by the CComBSTR
class) 的 BSTR
字符串。尝试通过 L"..."
:
WCHAR[]
文字
BSTR url = SysAllocString(L"http://somesite.com/home.html");
spManager->InstallService(url, &spService)
SysFreeString(url);
CComBSTR url(L"http://somesite.com/home.html");
spManager->InstallService((BSTR)url, &spService)