通过chrome.dll中间件控制外部chrome浏览器

Admin Admin
发布:2017-06-11 15:03:40编辑:2017-06-11 15:42:34 分类:资源下载
目前aardio有ie/webkit/blink/htmlayout等几种内核,主要是做界面用的,很小巧,标准库封装得很全面。还有一个群友分享的CEF3的浏览内核,可以兼容大部分网站,适合于做DOM网页操作等。现在分享的这个chrome.dll调用示例,是群友参考别人的东西所写的,本例程可以让aardio写的程序通过chrome.dll中间件控制外部的chrome浏览器,它的优点在于它控制的是一个完整功能的官方正式版浏览器,所以网页兼容性问题不再有了,至于你想用它来做什么,随便你折腾。

这个是演示工程,chrome.dll已经放在res资源文件夹内,如果你已经安装有chrome浏览器,可以直接运行。如果没有,你需要的是先安装chrome浏览器。

谷歌浏览器 Google Chrome 59.0.3071.86 正式版下载地址 http://dl.pconline.com.cn/download/51614-1.html 

AARDIO调用chrome.dll操作外部chrome浏览器示例源码:
import win.ui;
/*DSG{{*/
mainForm = win.form(text="aardio form";right=759;bottom=469)
mainForm.add()
/*}}*/

import com;
import console;
import com.lite
import fsys.lnk;
import com.activeX

//分享自简码编程 http://www.jianma123.com
//chrome.dll介绍http://bbs.anjian.com/showtopic-588808-1.aspx
//CSS选择器介绍http://www.w3school.com.cn/cssref/css_selectors.asp

console.open();

path = fsys.lnk.search( "chrome.exe")
com.activeX.regsvr32As("\res\chrome.dll") //注册 chrome.dll
chrome = com.CreateObject("lt.chrome.1") // 不知道Progid 可以下载 RegDllView 搜索chrome查看

com.DumpTypeInfo(chrome) //输出所有成员

//chrome.get_ids() 返回的标签顺序经常错乱。所以需要处理下。存放多个标签 chrome.get_ids, 数组内存在的就删除,留下的就是最后一个打开的了,然后增加到数组内,如果同时打开俩个或者以上需自行处理
idtab = {}
get_ids = function(){
s = chrome.get_ids()
for(i=1;#idtab;1){
s = string.replace(s,idtab[i],"")
}
s = string.replace(s,"||","")
table.push(idtab,s)
return idtab;
}

if(path){

chrome.launch(path, "--user-data-dir=c:\user_data")
var ids = get_ids()
if(ids[1] != ""){
console.log(ids[1])
chrome.load(ids[1] , "http://www.aardio.com") //打开 网页
console.dump("打开aardio.com")
do{
win.delay(100)
loading = chrome.is_loading(ids[1] )//等待网页加载完成
}while(loading)

chrome.exec_js(ids[1] , "document.querySelector('.bbs-link a').click();") //点击 >> 下载最新版本( 5.6MB )
console.dump("点击 >> 下载最新版本( 5.6MB )")

do{
win.delay(100)
loading = chrome.is_loading(ids[1] )//等待网页加载完成
}while(loading)

chrome.exec_js(ids[1] , "document.querySelector('#scbar_txt').value='网页';") //搜索关键字
chrome.exec_js(ids[1] , "document.querySelector('#scbar_btn').click();") // 点击搜索按钮
console.dump("搜索点击")

win.delay(100)
var ids = get_ids()

do{
win.delay(100)
loading = chrome.is_loading(ids[2] )//等待网页加载完成
}while(loading)

console.dump(ids)
chrome.activate(ids[1])//激活标签1
console.dump("激活标签1")
win.delay(2000)
chrome.activate(ids[2])//激活标签2
console.dump("激活标签2")

win.delay(1000)
console.dump("打开 主题 连接2")
chrome.exec_js(ids[2] , "document.querySelector('#threadlist ul li:nth-child(2) a').click();")

win.delay(2000)
console.dump("关闭标签2")
chrome.close(ids[2])//关闭标签2

win.delay(5000)
chrome.quit()

}else {
console.log("获取失败")

}

}else {
win.msgbox("找不到 chrome.exe")
}

mainForm.show();
return win.loopMessage();
下载地址: 
http://www.jianma123.com/download/chromedll-control-chromebrowser.zip

鸣谢:
感谢chrome.dll插件作者兰天的分享。
感谢群友周、王港两位学长的分享。

插件说明:
chrome插件,支持chrome 45以上版本,暂不支持xp系统

方法说明:

bool launch(string path,string args)
启动浏览器
path: chrome浏览器的路径
args: chrome浏览器的启动参数,多个参数可以用"||"分隔
返回值: 启动成功则返回 true, 否则返回 false

quit()
退出浏览器 
string get_ids()
获得所有已创建标签的id
返回值: 返回所有id,id用"||"分隔

string create()
创建一个新的标签
返回值: 创建成功返回窗口id,否则返回空字符串

close(string id)
关闭一个标签
id: 标签id

activate(string id)
激活一个标签
id: 标签id

string get_url(string id)
获得窗口网页的地址
id: 标签id
返回值: 返回网页的地址

load(string id, string url)
载入指定的地址
id: 标签id
url: 要载入的地址

reload(string id)
重新载入网页
id: 窗口id

back(string id)
后退
id: 标签id

forward(string id)
前进
id: 标签id

stop(string id)
停止加载网页
id: 标签id

bool is_loading(string id)
网页是否加载中
id: 标签id
返回值: 如果网页正在加载中则返回 true,否则返回 false

string exec_js(string id, string js_code)
在网页执行一段javascript代码
id: 标签id
js_code: javascript代码
返回值: 如果代码成功执行则返回执行结果

set_user_agent(string id, string ua)
修改指定标签的user agent字符串
id: 标签id
ua: user agent 字符串

bool is_dialog_open(string id)
指定标签是否有对话框打开(alert, confirm, prompt)
id: 标签id
返回值: 如果有对话框打开则返回true

string get_dialog_message(string id)
获取对话框的消息文本
id: 标签id
返回值: 如果有对话框打开则返回消息文本

handle_dialog(string id, bool accept, string prompt_text)
处理对话框
id: 标签id
accept: 参数为true则确定,否则取消
prompt_text:向prompt弹出的对话框写入内容

clear_browser_cache(string id)
清除缓存
id: 标签id

clear_browser_cookies(string id)
清除cookies
id: 标签id

set_file_input_files(string id, string selector, string paths)
设置 file input 的 value 值
id: 标签id selector: 获取 file input 的css选择器
paths: 文件路径,多个文件用"||"分隔

string dama2(string id, string selector, string name, string password, string type)
上传图片验证码到打码兔 http://www.dama2.com/
id: 标签id
selector: 获取图片验证码的css选择器
name: 打码兔用户名
password: 打码兔密码
type: 验证码类型 http://wiki.dama2.com/index.php?n=ApiDoc.Pricedesc
返回值: 如果失败返回以“-”为前缀的字符串,成功则返回验证码答案
  • gravel gravel    
    Time:2017-06-11 15:06:11
    这么好的东西都分享出来了,太感动了[泪]
[ 发单/接单 ]
换IP投票软件
PC蛋蛋自动挂机投注
新浪微博发微博显示尾巴的方法,比如显示来自iphone 7
百度文库批量自动上传软件
一点资讯app刷阅读量/评论/收藏/订阅功能/手机号注册
定做一个阿迪达斯官网注册器(需要破点击文字式验证码)
定制人人网自动注册/修改资料/采集/私聊软件
酷狗繁星直播网页协yi
YY多功能刷订阅刷粉丝
滑块验证码本地识别
狼人杀POST QQ登录注册 获取金币数量
做个贴吧发发帖的软件懂的来
今日头条账号保存cookie
抖音粉丝软件定做,只要粉丝
百家号自媒体发文软件定制
哔哩哔哩播放量
读取TB某个商品上架时间和相关信息
网易博客软件定制
定制天涯论坛发帖软件
定制今日头条批量自动发私信软件
[ 站内搜索 ]
[ 最近热帖 ]
万能助手 -- 扩展库大全集 14253
用aardio创建web工程图文讲解(1) 13465
电脑编程入门自学:Fiddler https 抓包时提示创建根证书不成功问题彻底解决(https插件dll方式) 12234
aardio绘图演示 11878
通过chrome.dll中间件控制外部chrome浏览器 10777
我常用的aardio技巧 10192
《边学C语言边赚钱——简码编程入门教程》系列集合 9930
aardio使用http或whttp进行get/post请求时经常cookies失效怎么办?__电脑计算机编程入门教程自学 9676
[源码下载]简码视频加密解密播放工具个人版v1.0发布,永久免费开源的知识变现神器 8883
python人工智能爬虫系列:怎么查看python版本_电脑计算机编程入门教程自学 8346
编程入门教程:aardio批量上传文件并显示进度条 8316
aardio调用nodejs的ws模块做一个简单的聊天通信示例 7515
电脑计算机编程入门教程自学:原生JavaScript判断字符是否为A-Za-z英文字母 7145
电脑计算机编程入门教程自学:腾讯tx或极验geetest滑块按住拖动完成拼图验证成功破解思路及源码 6923
乐玩插件AARDIO调用 6496
[ 近期热答 ]
电脑计算机编程入门教程自学:什么是buffer缓冲区? 1
aardio_代码编辑框书签管理器开源 1
aardio_怎么用ide库从代码编辑框中取出指定行的源码? 1
aardio_codepage代码页编码乱码暴力猜解工具 1
aardio内嵌echarts图表添加鼠标事件响应功能 2
aardio列表框listbox_模糊查找和精确查找 1
8亿QQ绑定手机泄露:通过腾讯QQ号查询QQ绑定的手机号码漏洞! 1
carl listviewex调用例子----------源码搬运工 2
Aardio内嵌Electron浏览框怎么正确添加启动参数? 1
Aardio取汉字的字节数或字符数 1
怎么实现mssql图片数据的读写 2
aardio_从49个数字里选六个和值为150的不重复的数字 1
在嵌入wps的时候,多了一个 透明的边框,这个怎么消除它 1
万能助手入门帮助教程:学会科学地管理工作文件 1
Aaardio开发内嵌Electron浏览框放服务器上无法下载组件的解决办法 1