通过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多功能刷订阅刷粉丝
滑块验证码本地识别
[ 站内搜索 ]
[ 最近热帖 ]
aardio调用nodejs的ws模块做一个简单的聊天通信示例 1640
电脑计算机编程入门教程自学:腾讯tx或极验geetest滑块按住拖动完成拼图验证成功破解思路及源码 1580
Aardio文本编辑框控件edit_返回父窗口对象和改变父窗口对象 1575
乐玩插件AARDIO调用 1506
用aardio创建web工程图文讲解(1) 1474
通过chrome.dll中间件控制外部chrome浏览器 1472
万能助手入门帮助教程:学会科学地管理工作文件 1410
分享超级无敌好用的JS编辑器visual studio code 1379
Aardio文本编辑框控件edit_限制字符数 1360
分享一个刚写的aar代码格式化工具源码 1267
Aardio文本编辑框控件edit_修改字体颜色数值和获取字体颜色数值 1136
求教大佬,aardio怎么抓https数据包 1026
Aardio文本编辑框控件edit_是否只读禁止编辑 1017
Aardio文本编辑框控件edit_取控件所在的父窗口对象 979
Aardio文本编辑框控件edit_左右顶底坐标和宽高 940
[ 近期热答 ]
kio,这么干会不会被封杀? 2
python人工智能爬虫系列:怎么查看python版本_电脑计算机编程入门教程自学 1
万能助手入门帮助教程:拖拽调整节点位置[动图] 1
电脑计算机编程入门教程自学:使用百度地图API接口分页获取信息 1
【提问】万能助手界面怎么调节文字大小 2
头疼的小问题,关于助手 3
万能助手账户登录不上 3
万能助手 -- 扩展库大全集 4
万能助手 -- 最好用的桌面图标快捷方式管理工具 下载 8
求教:json提取出某一内容 1
像这样调整控件大小是怎么实现的? 2
请教aardio的文本框取数据库中的16进制数据(汉字)是乱码 2
制作GIF录制工具遇到的问题 1
aardio中怎么获取拖入文件的小图标显示到界面然后保存到本地? 4
给aardio的plus编辑框加上 得到焦点 失去焦点 按下回车键 三个消息的响应处理_电脑编程入门教程 1