自动点击网页按钮

自动点击网页按钮webBrowser控件IHTMLInputButtonElement

在VC里用webbrowser控件模拟自动点击按钮,有如下3种方法,但不是每时每刻都行的通的,哪种方便用哪种。


一、获取该按钮的网页元素接口,调用接口的click()函数

1.用httpWatch等工具获得该按钮的网页元素ID(strElementId)

2.获取网页元素集合,pRightDoc是该网页的文档接口

IHTMLElementCollection* pElemColl = NULL;

hr = pRightDoc->get_all( &pElemColl );                           // 获取网页元素集合


3.点击按钮


void ButtonClick(IHTMLElementCollection * pElemColl, CString strElementId)

{

IDispatch *pDisp;

HRESULT hr;

VARIANT index;

VARIANT varID;


V_VT(&index) = VT_I4;

V_I4(&index) = 0;

varID = StringToVariant(strElementId);


hr = pElemColl->item(varID, index, &pDisp);   // 获得按钮位置


if ( (hr == S_OK) && (pDisp != NULL) ) 

{

IHTMLElement* pElem = NULL;               // 获得按钮元素接口

        hr = pDisp->QueryInterface(IID_IHTMLElement, (void**)&pElem);


        if (  (hr == S_OK) && (pElem != NULL) )

        {

pElem->click();                       // 点击按钮

pElem->Release();

        }

pDisp->Release();

}

}



二、一般点击按钮后是为了执行一个JavaScipt函数,故可以直接执行该JavaScipt函数也可以达到点击按钮的效果。

1.用httpWatch等工具获得该网页的源码,如“确定”按钮的源码部分:

<input class=”e_button” type=”button” id=”button_ok” name=”button_ok”

value=”确定” οnclick=”jsFuction();” />

      这样表明点击该按钮后执行jsFuction()函数。

CString strJsFuc = “jsFuction()”;

        2.获得文档的父窗口接口,pRightDoc是该网页的文档接口

IHTMLWindow2*  pWindow;  

hr  =  pRightDoc->get_parentWindow(&pWindow);

        3.执行
JavaScipt函数

void ExecJavascipt(IHTMLWindow2*  pWindow, CString strJsFuc)

{

VARIANT  ret;  

ret.vt    =  VT_EMPTY; 

BSTR bstrCode = strJsFuc.AllocSysString();

BSTR bstrLanguage = SysAllocString(L”javascript”);

pWindow->execScript(bstrCode, bstrLanguage, &ret);

}

 

三、有些网页按钮还设置了快捷键,如按F2就表明点击该按钮,这样可以向该webbrowser控件发送F2键盘消息

1.获得webbrowser控件句柄

h_Wnd = ::FindWindow(NULL,”程序窗口标题”);

HWND hShell = ::FindWindowEx(h_Wnd,NULL,”Shell Embedding”,NULL);

HWND hView = ::FindWindowEx(hShell,NULL,”Shell DocObject View”,NULL);

HWND hIEServer = ::FindWindowEx(hView,NULL,”Internet Explorer_Server”,NULL);

2.发送F2键盘消息

::PostMessage(hIEServer,WM_KEYDOWN,VK_F2,0);

::PostMessage(hIEServer,WM_KEYUP,VK_F2,0);

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/38681.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注