HRESULT, którego nie ma...

HRESULT, którego nie ma...
aurel
Moderator
  • Rejestracja:około 15 lat
  • Ostatnio:dzień
0

Mam dllke w C++, która za pomocą OLE wywołuje różne polecenia w Wordzie.

Niestety, zapis dokumentu nie działa prawidłowo.

Kopiuj
	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);

W doc teoretycznie jest ActiveDocument. Zadziwia mnie jednak zwrot metody Invoke: hr = -2146823135
Po zrzutowaniu z wykorzystaniem:
sprintf(hex_buff, "%x", (unsigned int)hr);
Daje kod błędu: 0x800a1421

Sprawdziłam ten kod korzystając z programu: http://www.microsoft.com/en-us/download/details.aspx?id=985 :

Kopiuj
# as an HRESULT: Severity: FAILURE (1), Facility: 0xa, Code 0x1421
# NOT FOUND: 800a1421

:|
Co się robi w takiej sytuacji? Jakim cudem dostaję zwrot, którego nie ma...?

edytowany 3x, ostatnio: aurel
mychal
A nie przewija Ci się zmienna? Jakiego typu jest hr?
darkbit
  • Rejestracja:ponad 20 lat
  • Ostatnio:6 dni
  • Lokalizacja:~Koszalin
0

A

Kopiuj
GetIDsOfNames

wykonuje się poprawnie?

aurel
Moderator
  • Rejestracja:około 15 lat
  • Ostatnio:dzień
0
darkbit napisał(a):

A

Kopiuj
GetIDsOfNames

wykonuje się poprawnie?

Tak, po GetIDsOfNames hr = S_OK, dopiero po Invoke jest błąd.

0
aurel
%x i %lx w tym wypadku dają taki sam efekt.
Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:około godziny
0

daj trochę więcej kodu, żeby dało się skompilować i sprawdzić.

msm
Pewnie będzie nie do powtórzenia.
aurel
Nie no, podpisałam jednak jakieś tam papiery co to mówiły, że nie będę wynosić kodu z firmy ;) Poza tym błąd oczywiście występuje tylko dla Worda 2010, a pod 2003 jest ok ;)
darkbit
  • Rejestracja:ponad 20 lat
  • Ostatnio:6 dni
  • Lokalizacja:~Koszalin
1
edytowany 1x, ostatnio: darkbit

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.