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 win32 trayicon

c_cpp WIN32的SharedMemory示例

c_cpp linux ln链接到win32 mklink链接

WIN32中我新建一个cpp和.h 在头文件中写了一个结构体然后在.cpp文件中使用该结构体总是报错具体如下图

c_cpp 在win32 gui应用程序中创建一个控制台窗口

导师给了我一个.cpp文件,我要怎么运行他啊