java 模拟脚本精灵

本贴最后更新于 2041 天前,其中的信息可能已经水流花落

脚本精灵实现

RunApp "E:\xx.exe" //查找退出所在位置 FindPic 0,0,1920,1080,"Attachment:\exit.bmp",0.5,intX,intY //如果找到退出的位置 If intX > 0 And intY > 0 Then //将鼠标移动到该位置 MoveTo intX, intY //点击退出所在位置 LeftClick 1 //延时2秒 Delay 2000 //点击回车,确定退出 KeyPress "Enter", 1 End If //运行程序 RunApp "E:\xx.exe" //查找开启服务所在位置 FindPic 0,0,1920,1080,"Attachment:\start.bmp",0.5,intX,intY //如果找到开启服务的位置 If intX > 0 And intY > 0 Then //将鼠标移动到该位置 MoveTo intX, intY //点击开启服务所在位置 LeftClick 1 End If //延时2秒 Delay 2000 //回到桌面 KeyDown 91, 1 KeyPress 68, 1 KeyUp 91, 1 //延时10秒 Delay 10000 RunApp "E:\xx.exe" EndScript

而脚本精灵不能断网运行
所以使用 java 这是需要的 jar
image.png

首先通过 spy++ 获取到应用程序的窗口标题
然后放代码

private static WinDef.RECT initalizeApp(String appPath, String exeTitle) { // 获取exeTitle程序句柄 User32 user32 = User32.INSTANCE; HWND hwnd = user32.FindWindow(null, exeTitle); if (hwnd == null) { // 启动程序 RuntimeUtil.exec(appPath); ThreadUtil.sleep(2000); } //重新查找程序句柄 hwnd = user32.FindWindow(null, exeTitle); if (hwnd == null) { logger.error(DateUtil.now() + exeTitle + "---程序未运行"); System.exit(0); } // 获取工具栏父级句柄 HWND tdxDockControl = user32.FindWindowEx(hwnd, null, "TdxDockControl", null); if (tdxDockControl == null) { logger.info(DateUtil.now() + "tdxDockControl 对象获取失败"); System.exit(0); } // 获取工具栏句柄 HWND tdxBarControl = user32.FindWindowEx(tdxDockControl, null, "TdxBarControl", null); if (tdxBarControl == null) { logger.info(DateUtil.now() + "tdxBarControl 对象获取失败"); System.exit(0); } WinDef.RECT Bar_RECT = getRECT(user32, hwnd, tdxBarControl); return Bar_RECT; }
private static WinDef.RECT getRECT(User32 user32, HWND hwnd, HWND tdxBarControl) { // 打开窗口 user32.ShowWindow(tdxBarControl, 9); // 切换窗口到最前 user32.SetForegroundWindow(tdxBarControl); // 获取hwnd前台窗口 WinDef.RECT hwnd_RECT = new WinDef.RECT(); user32.GetWindowRect(hwnd, hwnd_RECT); // 获取bar前台窗口 WinDef.RECT Bar_RECT = new WinDef.RECT(); user32.GetWindowRect(tdxBarControl, Bar_RECT); return Bar_RECT; }
public static void main(String[] args) { // 读取classpath下的config目录下的XXX.setting,不使用变量 Setting setting = new Setting("config.setting"); String appPath = setting.getStr("appPath"); String exeTitle = setting.getStr("exeTitle"); String otherApp = setting.getStr("otherApp"); String otherAppPath = setting.getStr("otherAppPath"); // 初始化程序,并获取工具栏尺寸 WinDef.RECT Bar_RECT = initalizeApp(appPath, exeTitle); // 获取退出按钮尺寸 int exit_width = (Bar_RECT.right - Bar_RECT.left) * 7 / 8 + Bar_RECT.left; int exit_height = (Bar_RECT.bottom - Bar_RECT.top) / 2 + Bar_RECT.top; // 获取开始服务按钮尺寸 int start_width = (Bar_RECT.right - Bar_RECT.left) * 5 / 8 + Bar_RECT.left; int start_height = (Bar_RECT.bottom - Bar_RECT.top) / 2 + Bar_RECT.top; // 调用机器人第一次退出程序 RobotUtil.mouseMove(exit_width, exit_height); RobotUtil.click(); //键盘回车 RobotUtil.keyClick(KeyEvent.VK_ENTER); ThreadUtil.sleep(5000); // 第二次初始化程序,并获取工具栏尺寸 Bar_RECT = initalizeApp(appPath, exeTitle); // 调用机器人第二次开启服务 RobotUtil.mouseMove(start_width, start_height); RobotUtil.click(); //显示桌面 RobotUtil.keyPressWithCtrl(KeyEvent.VK_D); //判断是否启动第三方程序 if("true".equals(otherApp)) { ThreadUtil.sleep(5000); RuntimeUtil.exec(otherAppPath); } }

最后把它打包成一个 exe 文件放开机自启里

spy++ 下载地址:spy++

  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3201 引用 • 8217 回帖 • 1 关注
1 操作
windvibra 在 2019-12-10 10:52:35 更新了该帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
windvibra
3 号黑客成员, 2012-11-24 加入 郑州

推荐标签 标签

  • Shell

    Shell 脚本与 Windows/Dos 下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比 Windows 下的批处理更强大,比用其他编程程序编辑的程序效率更高,因为它使用了 Linux/Unix 下的命令。

    125 引用 • 74 回帖
  • Solidity

    Solidity 是一种智能合约高级语言,运行在 [以太坊] 虚拟机(EVM)之上。它的语法接近于 JavaScript,是一种面向对象的语言。

    3 引用 • 18 回帖 • 445 关注
  • Linux

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    955 引用 • 944 回帖
  • Kubernetes

    Kubernetes 是 Google 开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。

    118 引用 • 54 回帖 • 6 关注
  • jsDelivr

    jsDelivr 是一个开源的 CDN 服务,可为 npm 包、GitHub 仓库提供免费、快速并且可靠的全球 CDN 加速服务。

    5 引用 • 31 回帖 • 110 关注
  • Typecho

    Typecho 是一款博客程序,它在 GPLv2 许可证下发行,基于 PHP 构建,可以运行在各种平台上,支持多种数据库(MySQL、PostgreSQL、SQLite)。

    12 引用 • 67 回帖 • 445 关注
  • OpenCV
    15 引用 • 36 回帖
  • Elasticsearch

    Elasticsearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful 接口。Elasticsearch 是用 Java 开发的,并作为 Apache 许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

    117 引用 • 99 回帖 • 197 关注
  • IDEA

    IDEA 全称 IntelliJ IDEA,是一款 Java 语言开发的集成环境,在业界被公认为最好的 Java 开发工具之一。IDEA 是 JetBrains 公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。

    181 引用 • 400 回帖
  • 音乐

    你听到信仰的声音了么?

    62 引用 • 512 回帖 • 1 关注
  • Git

    Git 是 Linux Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

    211 引用 • 358 回帖
  • uTools

    uTools 是一个极简、插件化、跨平台的现代桌面软件。通过自由选配丰富的插件,打造你得心应手的工具集合。

    7 引用 • 28 回帖
  • DevOps

    DevOps(Development 和 Operations 的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。

    59 引用 • 25 回帖 • 3 关注
  • JetBrains

    JetBrains 是一家捷克的软件开发公司,该公司位于捷克的布拉格,并在俄国的圣彼得堡及美国麻州波士顿都设有办公室,该公司最为人所熟知的产品是 Java 编程语言开发撰写时所用的集成开发环境:IntelliJ IDEA

    18 引用 • 54 回帖
  • Thymeleaf

    Thymeleaf 是一款用于渲染 XML/XHTML/HTML5 内容的模板引擎。类似 Velocity、 FreeMarker 等,它也可以轻易的与 Spring 等 Web 框架进行集成作为 Web 应用的模板引擎。与其它模板引擎相比,Thymeleaf 最大的特点是能够直接在浏览器中打开并正确显示模板页面,而不需要启动整个 Web 应用。

    11 引用 • 19 回帖 • 395 关注
  • FFmpeg

    FFmpeg 是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。

    23 引用 • 32 回帖 • 8 关注
  • WiFiDog

    WiFiDog 是一套开源的无线热点认证管理工具,主要功能包括:位置相关的内容递送;用户认证和授权;集中式网络监控。

    1 引用 • 7 回帖 • 615 关注
  • 笔记

    好记性不如烂笔头。

    311 引用 • 794 回帖
  • 域名

    域名(Domain Name),简称域名、网域,是由一串用点分隔的名字组成的 Internet 上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)。

    43 引用 • 208 回帖 • 2 关注
  • HTML

    HTML5 是 HTML 下一个的主要修订版本,现在仍处于发展阶段。广义论及 HTML5 时,实际指的是包括 HTML、CSS 和 JavaScript 在内的一套技术组合。

    108 引用 • 295 回帖 • 1 关注
  • QQ

    1999 年 2 月腾讯正式推出“腾讯 QQ”,在线用户由 1999 年的 2 人(马化腾和张志东)到现在已经发展到上亿用户了,在线人数超过一亿,是目前使用最广泛的聊天软件之一。

    45 引用 • 557 回帖
  • 正则表达式

    正则表达式(Regular Expression)使用单个字符串来描述、匹配一系列遵循某个句法规则的字符串。

    31 引用 • 94 回帖 • 3 关注
  • Quicker

    Quicker 您的指尖工具箱!操作更少,收获更多!

    37 引用 • 157 回帖 • 1 关注
  • Bug

    Bug 本意是指臭虫、缺陷、损坏、犯贫、窃听器、小虫等。现在人们把在程序中一些缺陷或问题统称为 bug(漏洞)。

    76 引用 • 1742 回帖 • 6 关注
  • 分享

    有什么新发现就分享给大家吧!

    248 引用 • 1794 回帖
  • 阿里巴巴

    阿里巴巴网络技术有限公司(简称:阿里巴巴集团)是以曾担任英语教师的马云为首的 18 人,于 1999 年在中国杭州创立,他们相信互联网能够创造公平的竞争环境,让小企业通过创新与科技扩展业务,并在参与国内或全球市场竞争时处于更有利的位置。

    43 引用 • 221 回帖 • 53 关注
  • LeetCode

    LeetCode(力扣)是一个全球极客挚爱的高质量技术成长平台,想要学习和提升专业能力从这里开始,充足技术干货等你来啃,轻松拿下 Dream Offer!

    209 引用 • 72 回帖