簡體   English   中英

帶有IHTMLDocument3的getElementsByTagName隨機不返回任何內容

[英]getElementsByTagName with IHTMLDocument3 randomly returns nothing

我正在嘗試通過C ++程序在Internet Explorer中填充一些表單輸入字段,但是我遇到了一個隨機錯誤,我希望這是由於我的代碼:

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,我有時會得到較好的數字或輸入字段,並且對於nelm通常會得到0。

您是否在我的代碼中看到錯誤或錯誤? 請注意,我已驗證HWND是正確的,並且永遠不會調用該return

謝謝

通過這樣做,我沒有更多問題:

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

...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM