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

办公软件WPS的JSA中读取库文件里的字符串

[复制链接]
发表于 5 小时前 | 显示全部楼层 |阅读模式
办公软件WPS的表格:通过ExecuteExcel4Macro调用WinAPI实现

  1. function 读取库文件的字符串资源测试(){
  2.         console.clear();        //对应字符串:更改操作中心设置
  3.         var 库与字符串资源代号="@%SystemRoot%\\System32\\ActionCenterCPL.dll,-8";
  4.         //var 库与字符串资源代号="@C:\\Windows\\System32\\speech\\speechux\\sapi.cpl,-5555";
  5.         let 文件路径编号=库文件字符串代号(库与字符串资源代号);        //===转换环境变量===//
  6.         let 库文件=文件路径编号[0],字符串代号=文件路径编号[1];        //正数代号。可以是1,2,3,……
  7.        
  8.         let 模块句柄=以数据方式加载库(库文件);
  9.         let 字符串=读取库中字符串资源(模块句柄,字符串代号);
  10.         释放库(模块句柄);
  11.         console.log(字符串+"\n"+库与字符串资源代号);        //显示字符串
  12. }

  13. function 库文件字符串代号(注册表字符串){        //返回数组[库文件路径,字符串编号]
  14.         let 路径编号=注册表字符串.split(",");
  15.         let 库环境路径=路径编号[0],字符串编号=Math.abs(路径编号[1]);
  16.         if(库环境路径.slice(0,2)=="@%" || 库环境路径.match(/@[a-zA-z]:\\/)!=null){
  17.                 库环境路径=库环境路径.slice(1);        //去除首字符@
  18.         }
  19.         if(库环境路径.match(/%(.*?)%/)!=null){        //有系统环境变量时转为路径
  20.                 let 环境变量=库环境路径.match(/%(.*?)%/)[1],文件路径=库环境路径.match(/%.*?%(.*)/)[1];
  21.                 const 执行宏调用=ExecuteExcel4Macro;
  22.                 let 环境路径=执行宏调用(`CALL("Kernel32","GetEnvironmentVariableA","2FFJ","${环境变量}",0,128)`);
  23.                 var 库文件路径=环境路径+文件路径;
  24.         }else{var 库文件路径=库环境路径;}
  25.         return [库文件路径,字符串编号];
  26. }
  27. function 以数据方式加载库(库文件){        //返回库加载后的模块句柄
  28.         let 数据方式=0x2;
  29.         const 执行宏调用=ExecuteExcel4Macro;
  30.         let 模块句柄=执行宏调用(`CALL("Kernel32","LoadLibraryExA","JFJJ","${库文件}",0,${数据方式})`);
  31.         if(!模块句柄){console.log("错误代码:"+执行宏调用(`CALL("Kernel32","GetLastError","I")`));}
  32.         return 模块句柄;
  33. }
  34. function 读取库中字符串资源(模块句柄,字符串代号){
  35.         const 执行宏调用=ExecuteExcel4Macro;
  36.         let 字符串字节数=255;
  37.         let 字符串=执行宏调用(`CALL("User32","LoadStringA","3JJFJ",${模块句柄},${字符串代号},"",${字符串字节数})`);
  38.         return 字符串;
  39. }
  40. function 释放库(模块句柄){
  41.         const 执行宏调用=ExecuteExcel4Macro;
  42.         let 结果=执行宏调用(`CALL("Kernel32","FreeLibrary","AJ",${模块句柄})`);
  43.         return 结果;
  44. }
复制代码
发表于 4 小时前 | 显示全部楼层
支持楼主,楼主辛苦了
回复

使用道具 举报

发表于 2 小时前 | 显示全部楼层
详细 规整 齐全
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-5-1 23:26

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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