cppwebbrowser点击网页中的按钮

GoingMerry 2015-07-07 01:01:08
我在cppwebbrowser中载入了百度主页 想要用程序自动点击 搜索按钮
网上搜了段代码如下
Variant disp,alllinks,eachlink;
int linkcount;

disp = CppWebBrowser1->Document;
alllinks = disp.OlePropertyGet("links"); //取得所有的链接
linkcount = alllinks.OlePropertyGet("length"); //取得链接的数量

for (int i=0;i<linkcount;i++)
{
eachlink = alllinks.OleFunction("item",i); //依序取得每一個链接

if (eachlink.OlePropertyGet("innerText")==(Variant)strURL) //判断中的文字
{
eachlink.OleFunction("click"); //按下链接
break;
}
}

不清楚 按钮算不算链接? 请问应该如何修改 或者怎么实现呢?
...全文
314 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
GoingMerry 2015-07-07
  • 打赏
  • 举报
回复
CppWebBrowser1->Silent = true; // 打开指定网页 CppWebBrowser1->Navigate(WideString("www.baidu.com")); // 等待加载完毕 while (CppWebBrowser1->Busy) Application->ProcessMessages(); String strScript = "document.getElementById(\"su\").click()"; // 获取 IHTMLDocument2 接口 IHTMLDocument2 *spDoc = NULL; if (!CppWebBrowser1->Busy && CppWebBrowser1->Document != NULL) CppWebBrowser1->Document->QueryInterface( ::IID_IHTMLDocument2, reinterpret_cast<void **>(&spDoc)); else { ::MessageBox(Handle, "IHTMLDocument2 接口获取失败", "Error", MB_OK | MB_ICONERROR); return; } bool bSucceed(false); Application->ProcessMessages(); if (spDoc) { // 获取 IHTMLWindow2 接口 IHTMLWindow2 *spWin; VARIANT vRet; try { spDoc->get_parentWindow(&spWin); if (spWin) { try { long lRet = spWin->execScript( WideString(strScript), WideString("JavaScript"), &vRet); bSucceed = lRet == 0; } __finally { spWin->Release(); } } } __finally { spDoc->Release(); } } ::MessageBox(Handle, bSucceed? "执行成功": "执行失败", "提示", MB_OK | MB_ICONINFORMATION); 这段代码可以实现 需要按钮的 id 妖哥的代码 好用 结贴了
缘中人 2015-07-07
  • 打赏
  • 举报
回复
哪个页面,哪个按钮。
GoingMerry 2015-07-07
  • 打赏
  • 举报
回复
Variant vScript; try { vScript = CreateOleObject("MSScriptControl.ScriptControl.1"); } catch(...) { ::MessageBox(0, "创建ScriptControl对象失败", "错误", MB_OK | MB_ICONERROR); return; } // 使用 JavaScript 语言 vScript.OlePropertySet("Language", "JavaScript"); String strResult(""); try { // 注意表达式的合法性 strResult = vScript.OleFunction("Eval", "100 + 4 * 2"); } catch(...) {} ShowMessage(strResult); vScript = Unassigned; 找到了妖哥的这个代码 是用javascript 请问这个思路可以么
GoingMerry 2015-07-07
  • 打赏
  • 举报
回复
貌似可以用 IHTMLDocument2 接口 请问哪里有相关资料 搜到的都是直接给代码 也没有解释 代码也跑不通

552

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 茶馆
社区管理员
  • 茶馆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧