我在 OpenKODE 环境中构建了一个 C++ 应用程序。专门针对WinRT平台,我需要一个函数,它可以告诉我鼠标是否连接到机器上。我正在尝试使用 Windows 运行时 C++ 模板库 (WRL) 并访问MouseCapabilities.MousePresent 属性来解决这个问题。所以我的代码如下(它只为 WinRT 编译):
#include <Windows.Foundation.h>
#include <Windows.Devices.Input.h>
#include <wrl\wrappers\corewrappers.h>
#include <wrl\client.h>
...
// Initialize the Windows Runtime.
RoInitializeWrapper initialize(RO_INIT_MULTITHREADED);
if (FAILED(initialize))
{
return PrintError(__LINE__, initialize);
}
ComPtr<IMouseCapabilities> mouseCapabilities;
HRESULT hr = GetActivationFactory(HStringReference(RuntimeClass_Windows_Devices_Input_MouseCapabilities).Get(), &mouseCapabilities);
if (FAILED(hr))
{
return PrintError(__LINE__, hr);
}
INT32 present = 0;
hr = mouseCapabilities->get_MousePresent(&present);
if (FAILED(hr))
{
return PrintError(__LINE__, hr);
}
但是我的 GetActivationFactory 返回失败的 HRESULT,代码为 0x80004002 (E_NOINTERFACE)。我是 WRL 或其他类似 COM 的库的新手,请帮助我做错了什么?