如何定制一款12306抢票浏览器――实现自动查询和预定功能(五)
HRPOINTER(hr, spTd);
CComPtr spButton;
hr = GetElementByIndex( spTd, 0, spButton );
CHECKHRPOINTER(hr, spButton);
CComBSTR bstrClassName;
hr = spButton->get_className(&bstrClassName);
CHECKHR(hr);
CString cstrClassName = bstrClassName;
if ( 0 == cstrClassName.CompareNoCase(HAVETICKETSACLASS) ) {
hr = spButton->click();
}
else {
// 还没有票
}
m_VecTrainInfo.push_back(stTraininfoItem);
} while (0);
return hr;
}
我这儿做了简化:只要“预定”按钮变成可点击,即点击之。其实这儿应该做更多的判断,比如用户的席别是否有票。上述代码第44行,即是点击“预定”按钮的操作。
如果没有票,则我们点击“查询”按钮。
[cpp]
HRESULT CDeal12306WebPage::StartQueryInQueryPage( CComPtr & spDoc )
{
HRESULT hr = S_FALSE;
do {
CComPtr spQueryButton;
hr = GetQueryButtonInQueryPage( spDoc, spQueryButton);
CHECKHRPOINTER(hr, spQueryButton);
hr = spQueryButton->click();
} while (0);
return hr;
}
如此,我们便实现了自动查询和自动订票的功能。