找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 70|回复: 0

办公软件WPS的JSA中设置/获取鼠标指针位置

[复制链接]
发表于 昨天 22:28 | 显示全部楼层 |阅读模式
通过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. }
复制代码


您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1|闽公网安备35020302032614号 )

GMT+8, 2026-4-12 02:18

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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