CPP 中 win32com.client.GetObject() 的等价物是啥?
Posted
技术标签:
【中文标题】CPP 中 win32com.client.GetObject() 的等价物是啥?【英文标题】:What is the equivalent for win32com.client.GetObject() in CPP?CPP 中 win32com.client.GetObject() 的等价物是什么? 【发布时间】:2021-12-16 19:59:14 【问题描述】:CPP 中 win32com.client.GetObject() 的等价物是什么?
我正在尝试在 CPP 中获取 SAPGUI 对象
SapGuiAuto = win32com.client.GetObject("SAPGUI")
参考以下文章中的这些引语 - https://blogs.sap.com/2020/08/02/sap-gui-scripting-api-from-the-past-for-future-automation/
SAP GUI 脚本 API 位于文件 sapfewse.ocx(FEWSE = 前端 Windows 脚本引擎)中,位于目录 C:\Program Files (x86)\SAP\FrontEnd\SapGui。它是一个组件对象模型 (COM) 库并在 Windows 注册表中注册。通过这种方式,您可以从任何支持 COM 的编程语言中使用它
【问题讨论】:
【参考方案1】:没有“C++”的方式来做到这一点。但是,在 Windows 上使用 Microsoft 库可以做到这一点。
我建议使用CComDispatchDriver
类。尚未对此进行测试...但它会让您接近。
// .. include standard windows stuff
#include <comdef.h>
#include <atlbase.h>
class ComInit
public:
ComInit()
CoInitialize(NULL);
~ComInit()
CoUnintialize();
ComInit(const ComInit& ) = delete;
ComInit& operator=(const ComInit&) = delete;
;
int main(int argc, char* argv)
ComInit _cominit;
CComDispatchDriver disp;
disp.CoCreateInstance(L"Excel.Application");
_variant_t vName;
disp.GetPropertyByName(L"Name", &vName);
return 0;
【讨论】:
以上是关于CPP 中 win32com.client.GetObject() 的等价物是啥?的主要内容,如果未能解决你的问题,请参考以下文章
c_cpp linux ln链接到win32 mklink链接
WIN32中我新建一个cpp和.h 在头文件中写了一个结构体然后在.cpp文件中使用该结构体总是报错具体如下图