[REST]Total Control &易语言的完美结合
刚拿到Total Control的时候,只用了软件自带的基础电脑控制手机功能。后期由于控制的手机越来越多,就想要更多的自动化更效率更便捷的实现更多的功能。本身有一些脚本基础,便开始研究脚本。幸好TC提供了Rest API,可以实现多种脚本语言的编写功能,刚好易语言也很容易入门。所以,把自己研究出来的几种比较常用的功能的脚本分享一下,希望大家喜欢:
易语言概述
易语言是一个自主开发,适合国情,不同层次不同专业的人员易学易用的汉语编程语言。
易语言降低了广大电脑用户编程的门槛,尤其是根本不懂英文或者英文了解很少的用户,可以通过使用本语言极其快速地进入Windows程序编写的大门。
如何用易语言结合Total Control 多控系统控制手机
Total Control REST API 采用 RESTful Web 服务框架设计,基于原有的 Total Control JS API 开发,其中一些常量被缩短以便于阅读和编码。
支持任意脚本语言:如易语言,Java, Node JS, Python, Ruby, C/C++等。
支持各类操作系统:Android, iOS, Windows, macOS。
使用 Total Control REST API 控制设备的一般步骤:
1. 获取 Total Control 脚本开发所用的开发 token
2. 获取一个设备 ID 值
3. 通过第二步的一个设备 ID 值(单设备),对获取的设备进行操作
下面我们就用易语言结合Total Control 提供的REST API来控制我们的手机。
完整示例:运行手机上的软件com.
.版本 2
.程序集 窗口程序集_启动窗口
.子程序 __启动窗口_创建完毕
.局部变量 base64, 文本型
.局部变量 token, 文本型
.局部变量 device, 文本型
.局部变量 j_token, 类_json, , , 用来解析获取 token 的 json
.局部变量 j_dev, 类_json, , , 用来解析获取设备ID 值的 json
.局部变量 j_ret, 类_json, , , 用来解析 REST API 接口的json
.局部变量 bool, 逻辑型
.局部变量 bool_dev, 逻辑型
.局部变量 bool_ret, 逻辑型
.局部变量 AppName, 文本型
.局部变量 status, 文本型
base64 = 到文本 (编码_BASE64编码 (到字节集 (“sigma:3D391497”)))
输出调试文本 (“将用户名和密码组装成 sigma:3D391497 进行 base64 编码生成的字符串为: ” + base64)
bool = j_token.解析 (到文本 (网页_访问_对象 (“http://localhost:8090/TotalControl/v1/login”, 0, , , , “Authorization:” + base64, , , , , , , , , )))
.如果 (bool)
输出调试文本 (“第一步,获取 token,返回值为:” + j_token.取数据文本 ())
token = j_token.取通用属性 (“['value'].token”)
输出调试文本 (“获取的 token 值为: ” + token)
bool_dev = j_dev.解析 (编码_utf8到gb2312 (到文本 (网页_访问_对象 (“http://localhost:8090/TotalControl/v1/devices/main?token=” + token, 0))))
.如果 (bool_dev)
输出调试文本 (“第二步,获取设备 ID 值,返回值为:” + j_dev.取数据文本 ())
device = j_dev.取通用属性 (“['id']”)
输出调试文本 (“获取的设备 ID 值为: ” + device)
AppName = “com.”
bool_ret = j_ret.解析 (编码_utf8到gb2312 (到文本 (网页_访问_对象 (“http://localhost:8090/TotalControl/v1/devices/” + device + “/apps/” + AppName + “?state=active&token=” + token, 1))))
.如果 (bool_ret)
输出调试文本 (“第三步,打开手机上指定软件,返回值为: ” + j_ret.取数据文本 ())
status = j_ret.取属性对象 (“status”)
.如果 (status = “true”)
输出调试文本 (“恭喜你,成功打开软件” + AppName)
.否则
输出调试文本 (“不好意思,失败了!”)
.如果结束
.否则
输出调试文本 (“该 API 执行失败”)
.如果结束
.否则
输出调试文本 (“获取设备 ID 值失败”)
.如果结束
.否则
输出调试文本 (“获取 token 失败”)
.如果结束
[JavaScript] Total Control 用代码实现通讯录的导入导出
Total Control 在6.9.0版本提供通讯录的导入导出 API 啦,我们可以用代码实现通讯录的导入导出。
contactLoad 导入通讯录
原型:contactLoad(FileName, fields, opt, rule)
是否支持多设备:不支持
适用版本: Total Control 6.9.0 及以后版本
描述:导入通讯录联系人信息,可以导入json和excel格式的通讯录文件。
参数:
path: 字符串,需要导入的通讯录文件路径,文件可以是 json 格式,也可以是后缀为 .xls 和 .xlsx 的 excel 格式,例如, "E:/File;。
要导入的文件,必须包括联系人姓名和至少一个联系人电话号码两个字段。
fields: 字符数组,可选参数,需要导入的字段名称,不指定字段,则导入全部字段,如果只想导入联系人名称和联系人电话号码,可这样写:['name', 'phone1']。
opt:对象,可选参数,设置是否需要异步执行,不填,表示同步执行,如果需要异步执行,这样表示:{async: true},异步执行,可以用 JS API "contactCheckStatus(filename)" 获取通讯录导入状态。
rule:整型,恢复通讯录规则,不填,表示替换重复数据,其中,
1 表示保留重复数据
2 表示替换重复数据
3 表示跳过重复数据
完整示例:导入excel格式的通讯录文件
// 获取当前主控设备对象
var device = Device.getMain();
if(!device) {
print("Failed to get device");
} else {
//导入"E:/File;文件中的联系人姓名和联系人电话号码两栏,{async: true}表示异步执行,3表示跳过重复数据
var ret = device.contactLoad("E:/File;,['name', 'phone1'],{async: true},3);
if (ret == true){
print("Successfully !!!");
} else {
print("Sorry,Failed !!!");
}
}
contactSave 导出通讯录
原型:contactSave(path)
是否支持多设备:不支持
适用版本: Total Control 6.9.0 及以后版本
描述:将手机通讯录导出保存到电脑上。
参数:
path:导出的通讯录文件路径,例如:E:\File\con
导出的通讯录联系人信息是以 json 格式存储的,例如:
{
"version": "1.0.0.0",
"data": [{
"contactId": "16",
"displayName": "成都杰华科技",
"phone": [{
"phoneNumber": "028 8533 2200",
"phoneType": "2"
}],
"email": [],
"organization": [],
"iconBytes": ""
},
{
"contactId": "2",
"displayName": "华为客服",
"phone": [{
"phoneNumber": "4008308300",
"phoneType": "2"
}, {
"phoneNumber": "10086",
"phoneType": "1"
}],
"email": [{
"emailValue": "mobile@;,
"emailType": "1"
}],
"organization": [],
"iconBytes": ""
}]
}
完整示例:导出通讯录
// 获取当前主控设备对象
var device = Device.getMain();
if(!device) {
print("Failed to get device");
} else {
//将手机通讯录备份,并将导出的文件保存到电脑"E:\\File\\mycon"。
var ret = device.contactSave("E:\\File\\mycon");
if (ret == true){
print("Successfully !!!");
} else {
print("Sorry,Failed !!!");
}
}