侠客助手与侠客分身系统SDK 开发指南

SDK 简介

智控系统SDK 针对 智控与远控开发者提供了一套完整的解决方案,可以方便快捷的为目标 APP 开发出不同的脚本功能,使用智控系统的全部服务与功能。支持C#/Python/JavaScript三种开发语言的调用,系统提供有固定的10多种输入窗口,并支持开发者自定义窗口的开发(需要有一定XAML开发基础)。

公共参数

  • 手机屏幕的宽度
private int Width;
  • 手机屏幕的高度
private int Height;
  • UI文本框控件名
public string EditText = "android.widget.EditText";
  • 手机序列号
private string key;
  • 是否是分身系统
private bool IsFS;

智控 API 参考

常规API

  • 打开APP
public void OpenApp()

需要在编辑器的设置中设置好包名/首页标识/APP入口标识

  • 显示脚本状态
public void ShowStatus(string status)
参数 类型 说明
status string 需要显示的状态信息

C#示例

ShowStatus("已完成");

Python / JavaScript示例

xObj.ShowStatus("已完成");
  • 获取手机最上层页面标识
public string GetPhonePageTag()
参数 类型 说明
返回 string 包名|页面标识

C#示例

if(GetPhonePageTag().Contains(".lineage.LineageLauncher"))
{
    ShowStatus("已返回到桌面");
}

Python / JavaScript示例

if(xObj.GetPhonePageTag().Contains(".lineage.LineageLauncher"))
{
    xObj.ShowStatus("已返回到桌面");
}
  • 查找对象获取所有坐标
public List<System.Drawing.Point> FindObjPoints(string text)
参数 类型 说明
text string 页面元素,{T}加图片编号为找图
返回 List<System.Drawing.Point> 坐标列表

C#示例

List<System.Drawing.Point> list = FindObjPoints("关注");// 找元素
List<System.Drawing.Point> list = FindObjPoints("{T}638044684466069584");// 找图

Python / JavaScript示例

var list = xObj.FindObjPoints("关注");// 找元素
var list = xObj.FindObjPoints("{T}638044684466069584");// 找图
  • 精确查找元素
public string FindObj(string text)
参数 类型 说明
text string 页面元素
返回 string 结果

C#示例

if(FindObj("关注").Contains("成功"))
{
    ShowStatus("页面包含关注");
}

Python / JavaScript示例

if(xObj.FindObj("关注").Contains("成功"))
{
    xObj.ShowStatus("页面包含关注");
}
  • 精确查找并点击元素
public string FindAndClickObj(string text, int index, bool isex = false)
参数 类型 说明
text string 页面元素
index int 序号(包含多个时,选择排列的序号)
isex bool 如果不成功是否加强,最多连点3次
返回 string 结果

C#示例

if(FindAndClickObj("关注", 0, true).Contains("true"))
{
    ShowStatus("关注成功");
}

Python / JavaScript示例

if(xObj.FindAndClickObj("关注", 0, true).Contains("true"))
{
    xObj.ShowStatus("关注成功");
}
  • 基于正则查找元素(模糊查找)
public string FindObjByRegex(string regex)
参数 类型 说明
regex string 页面元素
返回 string 结果

C#示例

if(FindObjByRegex("(关注|回关)").Contains("成功"))
{
    ShowStatus("页面包含关注");
}

Python / JavaScript示例

if(xObj.FindObjByRegex("(关注|回关)").Contains("成功"))
{
    xObj.ShowStatus("页面包含关注");
}
  • 查找并点击元素(基于正则表达式)
public string FindAndClickObjByRegex(string regex, int index = 0, bool isex = false)
参数 类型 说明
regex string 页面元素
index int 序号(包含多个时,选择排列的序号)
isex bool 如果不成功是否加强,最多连点3次
返回 string 结果

C#示例

if(FindAndClickObjByRegex("(关注|回关)", 0, true).Contains("true"))
{
    ShowStatus("关注成功");
}

Python / JavaScript示例

if(xObj.FindAndClickObjByRegex("(关注|回关)", 0, true).Contains("true"))
{
    xObj.ShowStatus("关注成功");
}
  • 基于图片查找元素
public bool FindObjByImage(string name)
参数 类型 说明
name string 图片的名称
返回 bool 结果

C#示例

if(FindObjByImage("638044684466069584"))
{
    ShowStatus("页面包含关注");
}

Python / JavaScript示例

if(xObj.FindObjByImage("638044684466069584"))
{
    xObj.ShowStatus("页面包含关注");
}
  • 基于图片查找并点击元素
public bool FindAndClickObjByImage(string name, int offerX = 0, int offerY = 0)
参数 类型 说明
name string 图片的名称
offerX int x的偏移像素
offerY int y的偏移像素
返回 bool 结果

C#示例

if(FindAndClickObjByImage("638044684466069584", 10, 10))
{
    ShowStatus("关注成功");
}

Python / JavaScript示例

if(xObj.FindAndClickObjByImage("638044684466069584", 10, 10))
{
    xObj.ShowStatus("关注成功");
}
  • 点击坐标
public void Click(int x, int y, bool selfadaption)
参数 类型 说明
x int x坐标
y int y坐标
selfadaption bool 是否自适应不同分辨率

C#示例

Click(220, 100, true);// 自适应
Click(720, 1800, false);// 点击绝对坐标

Python / JavaScript示例

xObj.Click(220, 100, true);// 自适应
xObj.Click(720, 1800, false);// 点击绝对坐标
  • 长按对象元素
public void HoldObj(string text, int index)
参数 类型 说明
text string 页面元素
index int 序号(包含多个时,选择排列的序号)

C#示例

HoldObj("订阅号消息", 0);

Python / JavaScript示例

xObj.HoldObj("订阅号消息", 0);
  • 长按坐标(自适应)
public void HoldPoint(int x, int y)
参数 类型 说明
x int x坐标
y int y坐标

C#示例

HoldPoint(220, 100);

Python / JavaScript示例

xObj.HoldPoint(220, 100);
  • 获取一个随机数字
public int GetRandomNum(int min, int max)
参数 类型 说明
min int 最小值(必须为正数)
max int 最大值(最大值必须大于最小值)
返回 int 结果

C#示例

int rand = GetRandomNum(10, 100);

Python / JavaScript示例

var rand = xObj.GetRandomNum(10, 100);
  • 查找并赋值(一般用于文本框)
public string FindAndInutText(string name, string text, int index = 0)
参数 类型 说明
name string 元素名称
text string 文字内容
index int 序号(包含多个时,选择排列的序号)
返回 string 结果

C#示例

if(FindAndInutText("android.widget.EditText", "拨打电话", 0).Contains("true"))
{
    ShowStatus("输入成功");
}

Python / JavaScript示例

if(xObj.FindAndInutText("android.widget.EditText", "拨打电话", 0).Contains("true"))
{
    ShowStatus("输入成功");
}
  • 通过X输入法输入文本
public void InputText(string text)
参数 类型 说明
text string 文字内容

C#示例

InputText("拨打电话");

Python / JavaScript示例

xObj.InputText("拨打电话");
  • 发送安卓按键代码
public string PressKeyCode(int keycode)
参数 类型 说明
keycode int 键值
返回 string 结果

C#示例

if(PressKeyCode(3).Contains("true"))
{
    ShowStatus("发送成功");
}

Python / JavaScript示例

if(xObj.PressKeyCode(3).Contains("true"))
{
    ShowStatus("发送成功");
}
  • 获取手机UI所有内容
public string GetUiConent()
参数 类型 说明
返回 string 结果

C#示例

string ui = GetUiConent();

Python / JavaScript示例

var ui = xObj.GetUiConent();
  • 手机截图
public byte[] CaptureImage()
参数 类型 说明
返回 byte[] 二进制数组

C#示例

byte[] data = CaptureImage();

Python / JavaScript示例

var data = xObj.CaptureImage();
  • 返回上一页
public void GotoBack()
  • 返回Home
public void GotoPhoneHome()
  • 向上滑动屏幕
public void DragUpper()
  • 向下滑动屏幕
public void DragDown()
  • 向左滑动屏幕
public void DragLeft()
  • 向右滑动屏幕
public void DragRigh()
  • 拖拽屏幕
public string Drag(int startx, int starty, int endx, int endy)
参数 类型 说明
startx int 开始时的X坐标
starty int 开始时的Y坐标
endx int 结束时的X坐标
endy int 结束时的Y坐标

C#示例

Drag(200, 900, 200, 300);// 上滑动作

Python / JavaScript示例

xObj.Drag(200, 900, 200, 300);// 上滑动作
  • 转换输入法为手机默认输入法(分身系统不支持)
public void SetPhoneIME()
  • 转换输入法为X输入法(分身系统不支持)
public void SetXIME()
  • 退出运行的脚本
public void EixtScript()
  • 执行Adb Shell指令
public string RunAdb(string cmd)
参数 类型 说明
cmd string 指令内容,如果要指定分身,请在--user userid的地方使用[USER]代替
返回 string 结果

C#示例

RunAdb("pm list pages[USER]");

Python / JavaScript示例

xObj.RunAdb("pm list pages[USER]");
  • 执行Root Adb Shell指令(C#不支持)(仅支持分身智控)
public string RunRootAdb(string cmd)
参数 类型 说明
cmd string 指令内容,如果要指定分身,请在--user userid的地方使用[USER]代替
返回 string 结果

Python / JavaScript示例

xObj.RunRootAdb("pm list pages[USER]");
  • 关闭APP
public void CloseApp(string packname)
参数 类型 说明
packname string App包名

C#示例

CloseApp("com.tencent.mm");

Python / JavaScript示例

xObj.CloseApp("com.tencent.mm");
  • 保存文本到数据临时库
public void SaveTextToLibrary(string regex)
参数 类型 说明
regex string 元素,直接输入内容添加{加},修改手机名称添加{名}

C#示例

SaveTextToLibrary("android.widget.TextView|android.view.View");// 多元素查找入库
SaveTextToLibrary("{加}文字一|文字二|文字三|文字N");// 直接输入内容入库
SaveTextToLibrary("{名}新的手机名");// 修改手机名称

Python / JavaScript示例

xObj.SaveTextToLibrary("android.widget.TextView|android.view.View");// 多元素查找入库
xObj.SaveTextToLibrary("{加}文字一|文字二|文字三|文字N");// 直接输入内容入库
xObj.SaveTextToLibrary("{名}新的手机名");// 修改手机名称
  • 自动回复
public string AutoChat(string lastmessage, string user)
参数 类型 说明
lastmessage string 收到的消息
user string 用户名
返回 string 结果

C#示例

string msg = AutoChat("你好呀", "东厂");

Python / JavaScript示例

var msg = xObj.AutoChat("你好呀", "东厂");
  • 图片滑动验证(测试)
public void ImageDragAuth(string leftImage, string reghtImage)
参数 类型 说明
leftImage string 左侧图片名称
reghtImage string 右侧图片名称

C#示例

ImageDragAuth("638045011665964870", "638045012071624680");

Python / JavaScript示例

xObj.ImageDragAuth("638045011665964870", "638045012071624680");
  • 设置定位
public void SetLoction(string loction)
参数 类型 说明
loction string 新的GPS位置

C#示例

SetLoction("23.150955,113.324854");

Python / JavaScript示例

xObj.SetLoction("23.150955,113.324854");
  • 获取手机里的文件内容
public string GetPhoneFile(string filepath)
参数 类型 说明
filepath string 手机文件路径
返回 string 文件内容

C#示例

string content = GetPhoneFile("/sdcard/test.txt");

Python / JavaScript示例

var content = xObj.GetPhoneFile("/sdcard/test.txt");
  • 运行用户脚本
public void RunUserScript(string modulename, string sciptname)
参数 类型 说明
modulename string 引用的模块名称
sciptname string 脚本名称

C#示例

RunUserScript("用户定制", "关键词养号");

Python / JavaScript示例

xObj.RunUserScript("用户定制", "关键词养号");
  • 从文本文件到列表(C#不支持)
public List<string> TextFileToList(string txtPath)
参数 类型 说明
txtPath string 本地文件地址
返回 List<string> 结果

Python / JavaScript示例

var list = xObj.TextFileToList("e:\\test\\test.txt");
  • 转换成UI对象列表(C#不支持)
public List<UiObject> ConvertToUiList(string str)
参数 类型 说明
str string 内容
返回 List<UiObject> 结果

Python / JavaScript示例

var list = xObj.ConvertToUiList(FindObj("关注"));
  • 上传文件到手机图片库(C#不支持)(仅支持分身智控)
public bool UploadFileToPictures(string str)
参数 类型 说明
str string 图片路径
返回 bool 结果

Python / JavaScript示例

xObj.UploadFileToPictures("e:\\test\\text.jpg");
  • 上传文件到手机媒体库(C#不支持)(仅支持分身智控)
public bool UploadFileToMovies(string str)
参数 类型 说明
str string 视频路径
返回 bool 结果

Python / JavaScript示例

xObj.UploadFileToMovies("e:\\test\\text.mp4");
  • 上传文件到手机SD(C#不支持)(仅支持分身智控)
public bool UploadFileToDownload(string str)
参数 类型 说明
str string 文件路径
返回 bool 结果

Python / JavaScript示例

xObj.UploadFileToMovies("e:\\test\\text.txt");
  • 上传文件到手机媒体库(C#不支持)(不支持分身智控)
public bool UploadFileToDCIM(string str)
参数 类型 说明
str string 文件路径
返回 bool 结果

Python / JavaScript示例

xObj.UploadFileToDCIM("e:\\test\\text.png");
  • 上传文件到手机SD(C#不支持)(不支持分身智控)
public bool UploadFileToSD(string str)
参数 类型 说明
str string 文件路径
返回 bool 结果

Python / JavaScript示例

xObj.UploadFileToSD("e:\\test\\text.txt");
  • HTTP Get(C#不支持)
public string GetAsync(string url)
参数 类型 说明
url string url地址
返回 string 结果

Python / JavaScript示例

var data = xObj.GetAsync("http://www.website.com/");
  • HTTP Post(C#不支持)
public string PostAsync(string url, JObject obj)
参数 类型 说明
url string url地址
obj JObject post内容
返回 string 结果

Python / JavaScript示例

var data = xObj.GetAsync("http://www.website.com/api", {"id":1001});
  • 获取新的通知(C#不支持)(仅支持分身智控)
public JObject GetNewMessage()
参数 类型 说明
返回 JObject 结果

Python / JavaScript示例

var data = xObj.GetNewMessage();
if(data.code == 0)
{
    var code = data.code;// 操作代码 成功为0,失败为-1
    var message = data.message;// 返回消息 成功为ok
    var key = data.key;// 通知KEY
    var package_name = data.package_name;// APP包名
    var index = data.index;// 分身序列号
    var title = data.title;// 通知标题
    var content = data.content;// 通知内容
}
  • 打开新的通知(C#不支持)(仅支持分身智控)
public bool OpenNewMessage(string notification_key)
参数 类型 说明
notification_key string 通知KEY
返回 string 结果

Python / JavaScript示例

xObj.OpenNewMessage(data.key);
  • 初始数据面板(C#不支持)
public string InitDataPanel(string summaryName, string summaryValue, string detailName, string detailValue)
参数 类型 说明
summaryName string 概述的显示名称,为空时显示默认名称
summaryValue string 概述的项,多个项用‘|’分隔,为空时不显示概述
detailName string 明细的显示名称,为空时显示默认名称
detailValue string 明细的项,多个项用‘|’分隔,为空时不显示明细
返回 string 结果,OK为成功

Python / JavaScript示例

xObj.InitDataPanel("实时报表", "总关注人数|总粉丝人数|总点赞人数|总评论人数", "详细数据", "账号|关注|点赞|粉丝|评论");
  • 添加内容到数据面板(C#不支持)
public string AddDataPanel(JArray args)
参数 类型 说明
args JArray 添加的内容项,第一项格式:1为概述,2为明细
返回 string 结果,OK为成功

Python / JavaScript示例

var data = xObj.InitDataPanel("实时报表", "总关注人数|总粉丝人数|总点赞人数|总评论人数", "详细数据", "账号|关注|点赞|粉丝|评论");
if(data.Contains("OK"))
{
    // 添加实时报表内容(添加的数量会与指定项中的总数进行自动累加)
    xObj.AddDataPanel({1, "总关注人数", 4});
    xObj.AddDataPanel({1, "总粉丝人数", 5});
    xObj.AddDataPanel({1, "总点赞人数", 6});
    xObj.AddDataPanel({1, "总评论人数", 7});
    // 添加详细数据内容(最多可添加10项内容,输入的内容项与初始化的内容项一致)
    xObj.AddDataPanel({2, "app账号", "4", "6", "5", "7"}); 
}

扩展API(仅支持C#)

  • 组件请求 - API扩展
public JObject CallParts(string action, JArray args)
参数 类型 说明
action string 扩展名称
args JArray 参数组
返回 JObject 结果

PostAsync

JObject json = CallParts("PostAsync", new JArray{"http://www.website.com/api", new JObject{["id"] = 1001}});
if(json.Value<int>("code") == 0)
{
    string msg = json.Value<string>("msg");
    string data = json.Value<string>("result");
}

GetAsync

JObject json = CallParts("GetAsync", new JArray{"http://www.website.com/"});
if(json.Value<int>("code") == 0)
{
    string msg = json.Value<string>("msg");
    string data = json.Value<string>("result");
}

GetPhoneFile

JObject json = CallParts("GetPhoneFile", new JArray{"/sdcard/test.txt"});
if(json.Value<int>("code") == 0)
{
    string msg = json.Value<string>("msg");
    string data = json.Value<string>("result");
}

GetNewMessage (仅分身智控支持)

JObject json = CallParts("GetNewMessage", new JArray{});
if(json.Value<int>("code") == 0)
{
    string msg = json.Value<string>("msg");
    JObject data = JsonConvert.DeserializeObject<JObject>(json.Value<string>("result"));

    string key = data.Value<string>("key");// 通知KEY
    string package_name = data.Value<string>("package_name");// APP包名
    int index = data.Value<int>("index");// 分身序列号
    string title = data.Value<string>("title");// 通知标题
    string content = data.Value<string>("content");// 通知内容
}

OpenNewMessage (仅分身智控支持)

JObject json = CallParts("OpenNewMessage", new JArray{data.Value<string>("key")});
if(json.Value<int>("code") == 0)
{
    string msg = json.Value<string>("msg");
    bool isok = json.Value<bool>("result");
}

RunRootAdb (仅分身智控支持)

JObject json = CallParts("RunRootAdb", new JArray{"pm list pages[USER]"});
if(json.Value<int>("code") == 0)
{
    string msg = json.Value<string>("msg");
    string result = json.Value<string>("result");
}

InitDataPanel 与 AddDataPanel

// InitDataPanel(初始化数据面板)与AddDataPanel(添加内容到数据面板)配合使用
JObject json = CallParts("InitDataPanel", new JArray{"实时报表", "总关注人数|总粉丝人数|总点赞人数|总评论人数", "详细数据", "账号|关注|点赞|粉丝|评论"});
if(json.Value<int>("code") == 0)
{
    // 添加实时报表内容(添加的数量会与指定项中的总数进行自动累加)
    CallParts("AddDataPanel", new JArray{1, "总关注人数", 4});
    CallParts("AddDataPanel", new JArray{1, "总粉丝人数", 5});
    CallParts("AddDataPanel", new JArray{1, "总点赞人数", 6});
    CallParts("AddDataPanel", new JArray{1, "总评论人数", 7});
    // 添加详细数据内容(最多可添加10项内容,输入的内容项与初始化的内容项一致)
    CallParts("AddDataPanel", new JArray{2, "app账号", "4", "6", "5", "7"});     
}

结束

results matching ""

    No results matching ""