c - 用 C 创建一个 UiAutomation
问题描述
我在 C 中有以下代码来创建 UiAutomation 对象:
#include "UiAutomationclient.h"
IUIAutomation *pAutomation = NULL;
IUIAutomationElement *element = NULL;
CoInitialize(NULL);
EXTERN_C const CLSID CLSID_CUIAutomation;
EXTERN_C const IID IID_IUIAutomation;
HRESULT hr = CoCreateInstance(CLSID_CUIAutomation,NULL, CLSCTX_INPROC_SERVER,IID_IUIAutomation,(void**)&pAutomation);
但是,我收到以下错误:
'function': cannot convert from 'const CLSID' to 'const IID *const '
'function': cannot convert from 'const IID' to 'const IID *const '
我不知道我做错了什么。提前感谢您的帮助
解决方案
发布的代码在 C++ 中编译,但在 C 中,函数需要指针而不是引用。
HRESULT hr = CoCreateInstance(&CLSID_CUIAutomation, NULL, CLSCTX_INPROC_SERVER, &IID_IUIAutomation, (void**)&pAutomation);
这是因为CoCreateInstance
被声明为:
HRESULT CoCreateInstance(
REFCLSID rclsid,
LPUNKNOWN pUnkOuter,
DWORD dwClsContext,
REFIID riid,
LPVOID *ppv
);
但是REFCLSID
andREFIID
是有条件 #define
的,取决于目标语言:
#ifdef __cplusplus
#define REFIID const IID &
#else
#define REFIID const IID * __MIDL_CONST
#endif
#ifdef __cplusplus
#define REFCLSID const IID &
#else
#define REFCLSID const IID * __MIDL_CONST
#endif
推荐阅读
- javascript - 循环 Javascript 导入以加载到 VuexORM
- amazon-web-services - 这是解决此问题的正确方法还是我出错了?
- javascript - 从Javascript中的两个数组对象计算唯一值
- python - 迭代潜在的生成器
- python - 在正则表达式中使用 \b,尽量不匹配以 $ 开头的单词
- mysql - MySQL随机自动更新字段
- gcc - 为 Cortex M3、M4、M23 和 M33 编译单个静态库
- javascript - 使用 .map 复制表(React)
- regex - 如何使用正则表达式替换单元格中的所有特殊字符,但 Google 表格中的空格和破折号除外?
- sql - BigQuery:仅将新值附加到表中