如何使用 C 将 BSTR 转换为字符串
How to convert BSTR to String with C
我正在用 C 语言开发一个函数来提取 UI 元素的 class 名称。函数 returns BSTR,我想使用 Py_BuildValue.
将此值传递给 python
BSTR element_class;
hr = IUIAutomationElement_get_CurrentClassName(element,element_class);
if(SUCCEEDED(hr)){
arglist = Py_BuildValue("(z)", element_class);
}
if(element_class != NULL)
free(element_class); ????
我在编译后收到以下警告:
'function': 'BSTR *' differs in levels of indirection from 'BSTR'
我想了解此警告以及如何正确执行。另外,我想释放这个 element_class 的内存,但我也不知道该怎么做。非常感谢您的帮助。
编辑 1:
我实现了删除警告,只需在 element_class 中添加 $。但是,当我使用 Py_BuildValue 时,我得到的只是第一个字母,而不是 class.
的全名
将评论中包含的所有提示放在一起,我认为这就是您应该使用的。
BSTR element_class;
hr = IUIAutomationElement_get_CurrentClassName(element, &element_class);
if(SUCCEEDED(hr)){
arglist = Py_BuildValue("(u)", element_class);
}
if(element_class != NULL)
SysFreeString(element_class);
我正在用 C 语言开发一个函数来提取 UI 元素的 class 名称。函数 returns BSTR,我想使用 Py_BuildValue.
将此值传递给 pythonBSTR element_class;
hr = IUIAutomationElement_get_CurrentClassName(element,element_class);
if(SUCCEEDED(hr)){
arglist = Py_BuildValue("(z)", element_class);
}
if(element_class != NULL)
free(element_class); ????
我在编译后收到以下警告:
'function': 'BSTR *' differs in levels of indirection from 'BSTR'
我想了解此警告以及如何正确执行。另外,我想释放这个 element_class 的内存,但我也不知道该怎么做。非常感谢您的帮助。
编辑 1: 我实现了删除警告,只需在 element_class 中添加 $。但是,当我使用 Py_BuildValue 时,我得到的只是第一个字母,而不是 class.
的全名将评论中包含的所有提示放在一起,我认为这就是您应该使用的。
BSTR element_class;
hr = IUIAutomationElement_get_CurrentClassName(element, &element_class);
if(SUCCEEDED(hr)){
arglist = Py_BuildValue("(u)", element_class);
}
if(element_class != NULL)
SysFreeString(element_class);