È una tecnica di automazione basata sulle interfacce COM, non è una passeggiata di salute, soprattutto se affrontata in vanilla C.
QUI trovi un po' di esempi.
Esempio minimale:
codice:HRESULT hres; CLSID clsid; CLSIDFromProgID(L"Excel.Application", &clsid); IDispatch *excelApp; // Start Excel as a COM server in a separate process hres = CoCreateInstance(&clsid, 0, CLSCTX_LOCAL_SERVER, IID_IDispatch, (void **)&excelApp); if(FAILED(hres)) { // error handling } DISPID dispidVisible; OLECHAR *propertyName = "Visible"; hres = excelApp->GetIDsOfNames(IID_NULL, &propertyName, 1, LOCALE_SYSTEM_DEFAULT, &dispidVisible); if(FAILED(hres)) { // error handling } unsigned returnArg; VARIANT varTrue; DISPPARAMS params = { &varTrue, 1, 0, 0 }; // set the variant to a boolean true varTrue.vt = VT_BOOL; varTrue.boolVal = 0xFFFF; // make the window visible: excelApp.Visible = True hres = excelApp->Invoke(dispidVisible, IID_NULL, LOCALE_SYSTEM_DEFAULT, DISPATCH_PROPERTYPUT, params, 0, 0, &returnArg); if(FAILED(hres)) { // error handling } // ... use the object // free the object excelApp->Release();

Rispondi quotando