C++ c++;Excel COM自动化:查询服务器状态

C++ c++;Excel COM自动化:查询服务器状态,c++,automation,excel-2019,C++,Automation,Excel 2019,我有一个问题,我做了几天的研究,但没有找到答案 我有一个C++编程,可以以编程方式控制Excel。具体而言,我使用VS2017和MS Office 2019 长话短说,我似乎不需要从Excel获得有关其状态和接收应用程序命令的准备情况的反馈。因此,如果Excel正忙,而我的应用程序发送命令,则应用程序中会出现内存泄漏,导致其崩溃 特别是,我正在使用Microsoft的Autowrap功能向com接口发送命令 相关代码块如下所示: { VARIANT hresult; Varian

我有一个问题,我做了几天的研究,但没有找到答案

<>我有一个C++编程,可以以编程方式控制Excel。具体而言,我使用VS2017和MS Office 2019

长话短说,我似乎不需要从Excel获得有关其状态和接收应用程序命令的准备情况的反馈。因此,如果Excel正忙,而我的应用程序发送命令,则应用程序中会出现内存泄漏,导致其崩溃

特别是,我正在使用Microsoft的Autowrap功能向com接口发送命令

相关代码块如下所示:

{
    VARIANT hresult;
    VariantInit(&hresult);
    try{ 
        AutoWrap(DISPATCH_PROPERTYGET, &hresult, xlApp, L"ActiveCell", 0);
    }
    catch (...)
    {
        std::wcout << "crashed!" << '\n';
    }
        xlActiveCell[book - 1] = hresult.pdispVal;

}
{
变异hresult;
VariantInit(&hresult);
试试{
自动包装(DISPATCH_PROPERTYGET,&hresult,xlApp,L“ActiveCell”,0);
}
捕获(…)
{

std::wcout您试图捕获的具体错误我做的一个测试是注释掉Autowrap中的::MessageBox和exit(0)命令,然后运行调试器查看它将在何处崩溃。它在Autowrap的return语句中崩溃,内存泄漏为“around szName”。更具体地说,泄漏在语句hr=pDisp->GetIDsOfNames(IID\u NULL,&ptName,1,LOCALE\u USER\u DEFAULT,&dispID)周围的自动换行函数中;以及随后的错误处理块。我想我会尝试捕获该漏洞。顺便说一句,我不是try/catch循环的专家。您是否尝试实现iMessageFilter,谢谢,这非常相关。我将尝试实现它。您试图捕获的具体错误是什么?我做的测试之一是注释掉::MessageBox和Autowrap中的exit(0)命令,然后运行调试器以查看它将在何处崩溃。它在Autowrap的return语句中崩溃,并出现内存泄漏“around szName”。更具体地说,泄漏位于Autowrap函数中,位于语句hr=pDisp->GetIDsOfNames(IID_NULL,&ptName,1,LOCALE_USER_DEFAULT,&dispID)周围;以及随后的错误处理块。我想我会尝试捕获该漏洞。顺便说一句,我不是try/catch循环的专家。您是否尝试实现iMessageFilter,谢谢,这非常相关。我将尝试实现它。