autojs之悬浮窗按钮暂停脚本~一种很笨的方法,但是可以实现暂停脚本的功能

一种 很简单很笨很低级的 悬浮窗按钮暂停脚本 的方法


先看效果

请添加图片描述


如果还满意你所看到的,就可以继续往下看实现了

一、悬浮窗

autojs 里边有个控制台console,也有个悬浮窗floaty。
我刚开始一直没有分清楚这两个,在这里简单说一下我的认识。

console就是控制台,能显示所有的日志信息。
控制台的布局基本是固定的:
在这里插入图片描述

悬浮窗也能实现显示日志信息的功能,不过是通过自己写的方式,而不是直接显示日志。
悬浮窗一般是一片灰色,但是可以自己写布局:
在这里插入图片描述
悬浮窗有window和rawWindow

floaty.rawWindow()与floaty.window()函数不同的是,该悬浮窗不会增加任何额外设施(例如调整大小、位置按钮)(就是上图中那三个突兀的黑圈圈),您可以根据自己需要编写任何布局。

我们这里用的是window,自带移动窗体,关闭脚本的功能。
之后会自己写布局,感兴趣的朋友可以收藏关注一下~

二、代码

1.悬浮窗设置

floaty.window(layout):指定悬浮窗的布局,创建并显示一个悬浮窗,返回一个FloatyWindow对象。
其中layout参数可以是xml布局或者一个View。

var 悬浮窗 = floaty.window(
    <frame h="auto" w="auto" gravity="center" bg="#77ff0000">
        <button id="console" text="暂停" />
    </frame>
);
悬浮窗.setPosition(500, 1000)   //设置位置(x,y)
悬浮窗.setAdjustEnabled(true)   //显示三个按钮
悬浮窗.exitOnClose()    //关闭悬浮窗时自动结束脚本运行

2.按钮点击

悬浮窗.id.click(function () { 点击该id的控件后 的操作 }

//指定确定按钮点击时要执行的动作
悬浮窗.console.click(function () {
    
    
    反状态 = 悬浮窗.console.getText();  //获得id="console"的按钮的文字
    if (反状态 == "暂停") {
    
    
        toast("脚本已暂停");
        ui.run(function () {
    
    
            悬浮窗.console.setText("开始");  //设置按钮文本
        });
    }
    else {
    
    
        toast("脚本已继续");
        ui.run(function () {
    
    
            悬浮窗.console.setText("暂停");
        });
    }
});

3.脚本暂停运行 控制检测函数

是通过阻塞来进行脚本暂停的

function kz() {
    
    
    while (1) {
    
    
        反状态 = 悬浮窗.console.getText();   
        //log(反状态)
        if (反状态 == "开始") {
    
    //反状态为开始时,脚本要暂停,即被阻塞
            toastLog("脚本暂停中");
            sleep(2000) //这个只影响主程序,就是你可以在这期间点开始运行,在sleep结束后,主程序会继续运行
        }
        else{
    
    //反状态为暂停时,脚本要运行,即跳出死循环
            break
        }
    }
}

4.主线程

个人感觉,检测函数只需要放到 模拟实际操作(如点击、滑动) 的过程中

i = 0
j = 0
while (1) {
    
    
    kz()    //其实这个检测只需要在 模拟操作的 过程中添加,
    sleep(1000)
    kz()    //一般脚本都是模拟人的操作,在这个过程中,点击控件啥的才需要
    i = i + 1
    kz()    //像其他后台分析计算什么的就不太需要了
    log(i)
    kz()    

    sleep(2000)
    j = j - 1
    kz()
    log(j)
    kz()
}

三、完整代码

var 悬浮窗 = floaty.window(
    <frame h="auto" w="auto" gravity="center" bg="#77ff0000">
        <button id="console" text="暂停" />
    </frame>
);
悬浮窗.setPosition(500, 1000)   //设置位置(x,y)
悬浮窗.setAdjustEnabled(true)   //显示三个按钮
悬浮窗.exitOnClose()    //关闭悬浮窗时自动结束脚本运行

//指定确定按钮点击时要执行的动作
悬浮窗.console.click(function () {
    
    
    反状态 = 悬浮窗.console.getText();  //获得id="console"的按钮的文字
    if (反状态 == "暂停") {
    
    
        toast("脚本已暂停");
        ui.run(function () {
    
    
            悬浮窗.console.setText("开始");  //设置按钮文本
        });
    }
    else {
    
    
        toast("脚本已继续");
        ui.run(function () {
    
    
            悬浮窗.console.setText("暂停");
        });
    }
});
function kz() {
    
    
    while (1) {
    
    
        反状态 = 悬浮窗.console.getText();   
        //log(反状态)
        if (反状态 == "开始") {
    
    //反状态为开始时,脚本要暂停,即被阻塞
            toastLog("脚本暂停中");
            sleep(2000) //这个只影响主程序,就是你可以在这期间点开始运行,在sleep结束后,主程序会继续运行
        }
        else{
    
    //反状态为暂停时,脚本要运行,即跳出死循环
            break
        }
    }
}
i = 0
j = 0
while (1) {
    
    
    kz()    //其实这个检测只需要在 模拟操作的 过程中添加,
    sleep(1000)
    kz()    //一般脚本都是模拟人的操作,在这个过程中,点击控件啥的才需要
    i = i + 1
    kz()    //像其他后台分析计算什么的就不太需要了
    log(i)
    kz()    

    sleep(2000)
    j = j - 1
    kz()
    log(j)
    kz()
}

总结

这个当然又丑,又不高级,算是一个记录吧,至少能实现暂停脚本的功能了,毕竟之前都没想到这种方法。

网上都查不到autojs暂停脚本的方法(可能只是我查不到,如果有现成的还请给我指个路,拜托拜托),只能自己造,即使再垃圾,我这个也算是独一份了,哇咔咔~

之后还会写有更好看界面的悬浮窗,也会写有开始、暂停、继续、停止、打印日志等功能的悬浮窗,如果有更牛的暂停脚本的方法也会继续分享。

猜你喜欢

转载自blog.csdn.net/tfnmdmx/article/details/119336936
今日推荐