找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 78|回复: 0

[转载代码] 办公软件WPS的JSA中设置/获取鼠标指针位置

[复制链接]
发表于 7 天前 | 显示全部楼层 |阅读模式
通过ExecuteExcel4Macro调用WinAPI,获取/设置鼠标指针的坐标。

  1. function 鼠标操作测试(){
  2.         let 鼠标指针坐标=获取鼠标位置();        /*****调用函数*****/
  3.         let 水平=鼠标指针坐标[0],垂直=鼠标指针坐标[1];
  4.         console.clear();
  5.         console.log("鼠标当前位置:("+水平+","+垂直+")");

  6.         let 定位操作=设置鼠标位置(800,300);        /*****调用函数*****/
  7.         if(定位操作){console.log("设置成功!");}
  8. }

  9. function 设置鼠标位置(水平,垂直){
  10.         const 执行宏调用=ExecuteExcel4Macro;
  11.         var 结果=执行宏调用(`CALL("User32","SetCursorPos","AJJ",${水平},${垂直})`);
  12.         return 结果;        //成功返回true
  13. }
  14. function 获取鼠标位置(){        //返回坐标数组[x,y]
  15.         const 执行宏调用=ExecuteExcel4Macro;
  16.         //逻辑值 GetCursorPos([输出]结构 屏幕坐标指针)
  17.         var 坐标结构=执行宏调用(`CALL("User32","GetCursorPos","1E",0)`);        //参数一:4+4字节坐标结构
  18.         //函数获取光标坐标GetCursorPos,后面跟的“1E”指返回值类型为“1”,指让第一个参数值作为返回值。
  19.         //第一个参数类型E为浮点数(8字节),正好可容下4+4字节的坐标结构(8字节=4字节坐标x+4字节坐标y)
  20.         const 缓冲区=new ArrayBuffer(8); //8字节对应64位
  21.         const 数据操作=new DataView(缓冲区);        //操作对象
  22.         数据操作.setFloat64(0,坐标结构);        //(操作)写入64位数
  23.         let 坐标=[];
  24.         坐标[0]=数据操作.getInt32(4);        //取32位坐标x
  25.         坐标[1]=数据操作.getInt32(0);        //取32位坐标y
  26.         return 坐标;
  27. }
复制代码


//语法:
ExecuteExcel4Macro(`文本`);        //参数“文本”类型,一般用反引号包起来。可以是注册函数/调用函数        //REGISTER/CALL

        //库文件名如:User32.dll / Kernel32.dll
        //函数名如:SetCursorPos / GetCursorPos
//调用函数:
CALL( "库文件名", "库中的函数名", "返回值/参数类型", [可选的多个参数……] );
        //返回值/参数类型,用数字或字母为代号,来表示不同类型。第一个字符是返回值代号,后面依次是参数一、参数二、参数三……的代号
        //参数就是函数执行需要的配置。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-4-19 17:56

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表