|
|
通过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 坐标;
- }
复制代码
//语法:
ExecuteExcel4Macro(`文本`); //参数“文本”类型,一般用反引号包起来。可以是注册函数/调用函数 //REGISTER/CALL
//库文件名如:User32.dll / Kernel32.dll
//函数名如:SetCursorPos / GetCursorPos
//调用函数:
CALL( "库文件名", "库中的函数名", "返回值/参数类型", [可选的多个参数……] );
//返回值/参数类型,用数字或字母为代号,来表示不同类型。第一个字符是返回值代号,后面依次是参数一、参数二、参数三……的代号
//参数就是函数执行需要的配置。
|
|