通过hwnd获取IServiceProvider
要通过hwnd获取IServiceProvider,可以使用以下方法:
- 通过获取窗口的IOleWindow接口,然后调用QueryInterface方法获取IServiceProvider接口。
IServiceProvider* pServiceProvider = nullptr;
IOleWindow* pOleWindow = nullptr;
// 获取窗口的IOleWindow接口
HRESULT hr = ::QueryInterface(hwnd, IID_PPV_ARGS(&pOleWindow));
if (SUCCEEDED(hr))
{
// 调用QueryInterface方法获取IServiceProvider接口
hr = pOleWindow->QueryInterface(IID_PPV_ARGS(&pServiceProvider));
pOleWindow->Release();
}
if (SUCCEEDED(hr))
{
// 使用IServiceProvider接口
// ...
}
- 直接使用FindWindowEx函数查找窗口的IServiceProvider接口。
IServiceProvider* pServiceProvider = nullptr;
// 查找窗口的IServiceProvider接口
HWND hChildWnd = ::FindWindowEx(hwnd, nullptr, L"IServiceProvider", nullptr);
if (hChildWnd)
{
// 获取IServiceProvider接口
HRESULT hr = ::QueryInterface(hChildWnd, IID_PPV_ARGS(&pServiceProvider));
if (SUCCEEDED(hr))
{
// 使用IServiceProvider接口
// ...
}
}
``
原文地址: http://www.cveoy.top/t/topic/hkLh 著作权归作者所有。请勿转载和采集!