0

IDispatch->Invoke 呼び出しを呼び出して IDispatch オブジェクトの名前を取得しようとしていますが、メソッドはエラー DISP_E_EXCEPTION で失敗します。取得しようとしているプロパティは「accName」です。以下は、これを実行しようとするコードです。

HRESULT getParentName(IAccessible* pAcc) {
    IDispatch *parent;
    HRESULT hr;

 if ((hr = pAcc->get_accParent(&parent)) == S_OK) {
    DISPID dispid;
    WCHAR *member = L"accName";
    DISPPARAMS dispparams = { NULL, NULL, 0, 0 };

    VARIANT result;
    result.lVal = CHILDID_SELF;
    result.vt = VT_I4;

    hr = parent->GetIDsOfNames(IID_NULL, &member, 1, LOCALE_SYSTEM_DEFAULT, &dispid);
    if (SUCCEEDED(hr)) {
        //OK till now
        EXCEPINFO exc;
        UINT numErrs;
        hr = parent->Invoke(dispid, IID_NULL, LOCALE_SYSTEM_DEFAULT,
            DISPATCH_PROPERTYGET, &dispparams, &result, &exc, &numErrs);
        if (hr == S_OK) {
            MessageBox(NULL, result.bstrVal, L"Got the name", MB_OK);
        } else {
        //fails with error DISP_E_EXCEPTION
        // exception EXCEPINFO return nothing
        }

    }
4

0 に答える 0