|
|
- function 鼠标操作测试() {
- try {
- // 获取当前鼠标位置
- let 鼠标指针坐标 = 获取鼠标位置();
- if (!鼠标指针坐标) {
- console.log("获取鼠标位置失败。");
- return;
- }
- let 水平 = 鼠标指针坐标[0];
- 水平 = Math.max(0, 水平); // 确保不为负值
- let 垂直 = 鼠标指针坐标[1];
- 垂直 = Math.max(0, 垂直);
- console.clear();
- console.log("鼠标当前位置:(" + 水平 + ", " + 垂直 + ")");
- // 设置鼠标新位置
- let 定位操作 = 设置鼠标位置(800, 300);
- if (定位操作) {
- console.log("鼠标已成功移动到:(800, 300)");
- } else {
- console.log("设置鼠标位置失败。");
- }
- } catch (e) {
- console.error("发生错误:" + e.message);
- }
- }
- function 设置鼠标位置(水平, 垂直) {
- try {
- const 执行宏调用 = ExecuteExcel4Macro;
- // 调用 User32.dll 的 SetCursorPos 函数
- // 参数类型:A=stdcall, JJ=两个 32 位整数(x, y)
- var 结果 = 执行宏调用(`CALL("User32","SetCursorPos","AJJ",${水平},${垂直})`);
- return 结果 === true || 结果 === 1;
- } catch (e) {
- console.error("设置鼠标位置时发生错误:" + e.message);
- return false;
- }
- }
- function 获取鼠标位置() {
- try {
- const 执行宏调用 = ExecuteExcel4Macro;
- // 调用 GetCursorPos,返回一个包含坐标的浮点数值
- var 坐标结构 = 执行宏调用(`CALL("User32","GetCursorPos","1E",0)`);
- if (typeof 坐标结构 !== "number") {
- console.error("获取坐标结构失败。");
- return null;
- }
- // 使用 DataView 解析 64 位浮点数中的两个 32 位整数(x 和 y)
- const 缓冲区 = new ArrayBuffer(8);
- const 数据操作 = new DataView(缓冲区);
- 数据操作.setFloat64(0, 坐标结构, true); // true 表示小端序
- let x = 数据操作.getInt32(0, true); // 低 4 字节为 x
- let y = 数据操作.getInt32(4, true); // 高 4 字节为 y
- return [x, y];
- } catch (e) {
- console.error("获取鼠标位置时发生错误:" + e.message);
- return null;
- }
- }
复制代码
|
|