getElementsByTagName с IHTMLDocument3 случайно ничего не возвращает

Я пытаюсь заполнить некоторые поля ввода формы в Internet Explorer из программы на C ++, но сталкиваюсь со случайной ошибкой, которая, я надеюсь, из-за моего кода:

UINT msg = RegisterWindowMessage("WM_HTML_GETOBJECT");
LRESULT result = 0;
SendMessageTimeout(hwnd, msg, NULL, NULL, SMTO_ABORTIFHUNG, 10000, (PDWORD_PTR)&result);
if (!result)
return;// get main document object
IHTMLDocument3 *doc = NULL;
ObjectFromLresult(result, IID_IHTMLDocument3, NULL, (void**)&doc);
if (!doc)
return;

VARIANT varint, varstr;
varint.vt = VT_I4;
varstr.vt = VT_BSTR;IHTMLElementCollection* pElemCollections=NULL;if (FAILED(doc->getElementsByTagName(L"input", &pElemCollections)))
return;

long nelm;
pElemCollections->get_length(&nelm);

...

В этой последней строке и с тем же HWND на той же странице я иногда получаю правильное число или поля ввода и часто получаю 0 для nelm.

Вы видите что-то не так в моем коде или это ошибка?
Обратите внимание, что я проверил, что HWND правильно, и return никогда не называются.

Спасибо

0

Решение

У меня больше нет проблем с этим:

UINT msg = RegisterWindowMessage("WM_HTML_GETOBJECT");
LRESULT result = 0;
SendMessageTimeout(hwnd, msg, NULL, NULL, SMTO_ABORTIFHUNG, 10000, (PDWORD_PTR)&result);
if (!result)
return;// get main document object
IHTMLDocument3 *doc = NULL;
ObjectFromLresult(result, IID_IHTMLDocument3, NULL, (void**)&doc);
if (!doc)
return;

CComVariant varint;
CComVariant varstr;IHTMLElementCollection* pElemCollections=NULL;

CComBSTR name(L"input")
if (FAILED(doc->getElementsByTagName(name, &pElemCollections)))
return;

long nelm;
pElemCollections->get_length(&nelm);

...
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]