|
|
通过ExecuteExcel4Macro调用WinAPI,获取/设置鼠标指针的坐标。
- function 鼠标操作测试(){
- let 鼠标指针坐标=获取鼠标位置(); /*****调用函数*****/
- let 水平=鼠标指针坐标[0],垂直=鼠标指针坐标[1];
- console.clear();
- console.log("鼠标当前位置:("+水平+","+垂直+")");
- let 定位操作=设置鼠标位置(800,300); /*****调用函数*****/
- if(定位操作){console.log("设置成功!");}
- }
- function 设置鼠标位置(水平,垂直){
- const 执行宏调用=ExecuteExcel4Macro;
- var 结果=执行宏调用(`CALL("User32","SetCursorPos","AJJ",${水平},${垂直})`);
- return 结果; //成功返回true
- }
- function 获取鼠标位置(){ //返回坐标数组[x,y]
- const 执行宏调用=ExecuteExcel4Macro;
- //逻辑值 GetCursorPos([输出]结构 屏幕坐标指针)
- var 坐标结构=执行宏调用(`CALL("User32","GetCursorPos","1E",0)`); //参数一:4+4字节坐标结构
- //函数获取光标坐标GetCursorPos,后面跟的“1E”指返回值类型为“1”,指让第一个参数值作为返回值。
- //第一个参数类型E为浮点数(8字节),正好可容下4+4字节的坐标结构(8字节=4字节坐标x+4字节坐标y)
- const 缓冲区=new ArrayBuffer(8); //8字节对应64位
- const 数据操作=new DataView(缓冲区); //操作对象
- 数据操作.setFloat64(0,坐标结构); //(操作)写入64位数
- let 坐标=[];
- 坐标[0]=数据操作.getInt32(4); //取32位坐标x
- 坐标[1]=数据操作.getInt32(0); //取32位坐标y
- return 坐标;
- }
复制代码
|
|