私は C++ で書かれた dll を持っています。その主な目的は、OLE によって Word のメソッドを呼び出すことです。メソッド「SaveAs」を呼び出そうとします:
HRESULT hr;
szFunction = OLESTR("SaveAs");
hr = doc->GetIDsOfNames(IID_NULL, &szFunction, 1,
LOCALE_USER_DEFAULT,
&dispid_Cap);
hr = doc->Invoke(dispid_Cap, IID_NULL,
LOCALE_USER_DEFAULT, DISPATCH_METHOD,
&dpCap, NULL, NULL, NULL);
それは失敗し、私はその理由を理解できません。hr の値は -2146823135 です。次のように16進数に変換しました。
sprintf(hex_buff, "%x", (unsigned int)hr);
0x800a1421を与えた
このプログラムでこのコードの意味を調べてみました: http://www.microsoft.com/en-us/download/details.aspx?id=985 しかし、結果は次のとおりでした:
as an HRESULT: Severity: FAILURE (1), Facility: 0xa, Code 0x1421
NOT FOUND: 800a1421
どういう意味ですか?メソッドが失敗する理由を調べるにはどうすればよいですか?