Keine Antworten nach einer Woche. Du kannst ihm eine faule Frage stellen, oder?
Ich verwende derzeit eine Lösung von CodeProject. Mein Code scheint zu funktionieren, aber wurde noch nicht richtig getestet.
CoInitialize(NULL);
CLSID clsid;
IDispatch *pWApp, *pCommandBars, *pCommandBar, *pCommandBarControls, *pCommandBarControl;
VARIANT v;
HRESULT hr;
hr = CLSIDFromProgID(L"Word.Application", &clsid);
if (SUCCEEDED(hr))
{
hr = CoCreateInstance(clsid, NULL, CLSCTX_LOCAL_SERVER, IID_IDispatch, (void **)&pWApp);
if (SUCCEEDED(hr))
{
VariantInit(&v);
hr = OLEMethod(DISPATCH_PROPERTYGET, &v, pWApp, L"Commandbars", 0);
pCommandBars = v.pdispVal;
VariantInit(&v);
hr = OLEMethod(DISPATCH_PROPERTYGET, &v, pCommandBars, L"Count", 0);
INT NumCommBars = v.intVal;
for (INT i = 1; i <= NumCommBars; i++)
{
COleVariant CommandBarIndex((BYTE)i);
VariantInit(&v);
hr = OLEMethod(DISPATCH_PROPERTYGET, &v, pCommandBars, L"Item", 1, CommandBarIndex);
if (FAILED(hr)) continue;
pCommandBar = v.pdispVal;
VariantInit(&v);
hr = OLEMethod(DISPATCH_PROPERTYGET, &v, pCommandBar, L"Controls", 0);
if (FAILED(hr)) continue;
pCommandBarControls = v.pdispVal;
VariantInit(&v);
hr = OLEMethod(DISPATCH_PROPERTYGET, &v, pCommandBarControls, L"Count", 0);
if (FAILED(hr)) continue;
INT NumControls = v.intVal;
for (INT j = 1; j <= NumControls; j++)
{
COleVariant CommandBarControlIndex((BYTE)j);
VariantInit(&v);
hr = OLEMethod(DISPATCH_PROPERTYGET, &v, pCommandBarControls, L"Item", 1, CommandBarControlIndex);
if (FAILED(hr)) continue;
pCommandBarControl = v.pdispVal;
VariantInit(&v);
hr = OLEMethod(DISPATCH_PROPERTYGET, &v, pCommandBarControl, L"Caption", 0);
if (FAILED(hr)) continue;
CString ControlCaption(v.bstrVal);
if (ControlCaption.Find("MyCaption") != -1)
{
OLEMethod(DISPATCH_METHOD, NULL, pCommandBarControl, L"Delete", 0);
}
pCommandBarControl->Release();
}
pCommandBar->Release();
pCommandBarControls->Release();
}
OLEMethod(DISPATCH_METHOD, NULL, pWApp, L"Quit", 0);
pCommandBars->Release();
pWApp->Release();
}
}
CoUninitialize();
Hoffe das hilft anderen mit einem ähnlichen Problem.