我的是操作CAD程序的(有打开的就用打开的,没的话就新建一个CAD), 你改一下,就可以用了, CLSID clsid; //COleException e; //if (!IsStop()&&m_acadApp.m_lpDispatch) return TRUE; if (CLSIDFromProgID(OLESTR("AutoCad.Application"), &clsid) != NOERROR) { return false; } // try to get the active calculator before creating a new one LPUNKNOWN lpUnk; LPDISPATCH lpDispatch; if (GetActiveObject(clsid, NULL, &lpUnk) == NOERROR) { HRESULT hr = lpUnk->QueryInterface(IID_IDispatch,(LPVOID*)&lpDispatch); lpUnk->Release(); if (hr == NOERROR) m_acadApp.AttachDispatch(lpDispatch, TRUE); } // if not dispatch ptr attached yet, need to create one if (m_acadApp.m_lpDispatch == NULL && !m_acadApp.CreateDispatch(clsid)) {
能否讲的清楚些
我需要实现的:
第一次生成或者打开一个excel表格,写入部分数据并显示(PS:这步骤我已完成)
之后就是往该表格中陆续插入数据,是在已经打开的excel中操作,excel仍处于显示状态 谢谢
你改一下,就可以用了,
CLSID clsid;
//COleException e;
//if (!IsStop()&&m_acadApp.m_lpDispatch) return TRUE;
if (CLSIDFromProgID(OLESTR("AutoCad.Application"), &clsid) != NOERROR)
{
return false;
} // try to get the active calculator before creating a new one
LPUNKNOWN lpUnk;
LPDISPATCH lpDispatch;
if (GetActiveObject(clsid, NULL, &lpUnk) == NOERROR)
{
HRESULT hr = lpUnk->QueryInterface(IID_IDispatch,(LPVOID*)&lpDispatch);
lpUnk->Release();
if (hr == NOERROR) m_acadApp.AttachDispatch(lpDispatch, TRUE);
} // if not dispatch ptr attached yet, need to create one
if (m_acadApp.m_lpDispatch == NULL &&
!m_acadApp.CreateDispatch(clsid))
{
return false;
}