Module Lua-Engine

Lua 解释程序(Lua Engine)

用于 WinXShell.lua, -code, -script 选项时使用的代码,函数。

Lua 与 Lua 库

Overview 概览

扩展 os 库

os.putenv (var, value) 设置 环境变量
os.info (key) 获取 系统信息
os.exec ([opt], cmd) 执行外部命令
os.link (lnk, target[, param[, icon[, index[, showcmd]]]]) 创建 快捷方式
os.rundll (dllfile, funcname[, param1[, param2[, ...]]]) 调用 dll 中的公开函数

扩展 string 库

string.envstr (str) 展开 环境变量
string.resstr (str) 展开 字符串资源

扩展 math 库

math.band (a, b) 进行 位与运算

扩展 lua 函数

exec () 执行外部命令
link () 创建 快捷方式
wxsUI (ui[, jcfg[, param]]) 打开 指定的UI组件

扩展 lua 对象

App App
Shell Shell
System System

Deprecated 已弃用

win_copyright () 已弃用。获取 Windows 许可证说明
cpu_info () 已弃用。获取 CPU 信息(注册表)
mem_info () 已弃用。获取 内存信息
res_str (file, id) 已弃用。获取 资源文件中的字符串信息
call_dll () 已弃用。调用 dll 中的公开函数
CloseShellWindow () 已弃用。关闭 外壳窗口
MinimizeWindow (class, title) 已弃用。最小化 指定窗口
HideWindow (class, title) 已弃用。隐藏 指定窗口
CloseWindow (class, title) 已弃用。关闭 指定窗口


Lua 与 Lua 库

Overview
概览
WinXShell 将Lua解释器嵌入程序中,支持调用Lua代码,还提供了实用的扩展Lua对象,功能函数。

Lua语言自带的功能,模块可直接使用, 比如字符串操作,数学函数,系统功能函数等。Lua标准库

详细信息请访问 Lua官方网站 https://www.lua.org/ 查看。

另外还引入了 winapi 库,可以使用很多实用的面向Windows系统的功能。


简单使用Lua指令时,请了解以下Lua基本语法:

  • 函数说明中的类型主要有 int 整数类型, bool 布尔型(true - 真, false - 假), string 字符串类型。
  • 字符串使用一对单引号(')或者双引号(")包起来。特殊的字符需要使用转义字符代替。比如:
    • \t => 制表符, \\ => \, \n => 换行符
  • 注册表或者文件路径存在很多反斜杠(\), 使用双中括号抱起来,可直接使用[[path\to\file]]
  • 使用双点符号(..)可以将字符串进行拼接(也可以使用string.format函数)。


还可通过编辑 WinXShell.lua 加载自定义扩展模块,功能函数。

扩展 os 库

os.putenv (var, value)
设置 环境变量

Parameters:

os.info (key)
获取 系统信息

Parameters:

  • key string

    信息名

    • Version - 获取 系统版本信息
    • 从注册表获取 ProductName, CSDVersion 信息
    • WinVer - 获取 系统版本信息
      • 返回 包含多个系统版本数组
      • ['ver'] - 包含4级别的完整版本信息
      • [1] - 1级版本号 (整数)
      • [2] - 2级版本号 (整数)
      • [3] - 3级版本号 (整数)
      • [4] - 4级版本号 (整数)
      • ['1.2'] - 主次版本号 (字符串)
    • CPU - 处理器信息
      • 返回 包含多个处理器信息的数组
      • ['name'] - 名称
      • ['~MHz'] - 速度 (整数, 单位 MHz)
    • Mem - 内存信息
      • 返回 包含多个内存信息的数组
      • 系统可用内存(硬件以外); 总内存大小; 当前可用内存
      • ['total'] - 总内存大小 (整数, 单位 字节)
      • ['used'] - 当前已使用内存 (整数, 单位 字节)
      • ['avail'] - 当前可用内存 (整数, 单位 字节)
      • ['total_gb'] - 总内存大小 (整数, 单位 GB)
      • ['used_gb'] - 当前已使用内存 (浮点数, 单位 GB)
      • ['avail_gb'] - 当前可用内存 (浮点数, 单位 GB)
      • ['used%'] - 当前已使用内存 (浮点数, 百分比)
    • Copyright - 版权信息
    • LangId - 系统语言识别号
    • LocaleName - 系统语言名
    • TickCount - 系统启动后经历的时间 (毫秒)
    • FirmwareType - 启动模式
    • IsUEFIMode - 是否是 UEFI 启动模式
    • IsWinPE - 是否是在 Windows PE 环境

Usage:

    -- WinXShell.exe -script info.lua
    -- info.lua
    
    local v = os.info('WinVer')
    v.ver ---> '10.0.19044.1586'
    v['ver'] ---> '10.0.19044.1586'
    v[1] ---> 10
    v[2] ---> 0
    v[3] ---> 19044
    v[4] ---> 1586
    v["1.2"]  ---> '10.0'
    
    
    local cpu_info = os.info('CPU')
    cpu_info['name']
    ---> 'Intel(R) Core(TM) i5-6600K CPU @ 3.50GHz'
    cpu_info['~MHz']
    ---> 3504
    
    
    local mem = os.info('Mem')
    print(mem['total'], mem['used'], mem['avail'], mem['used%'])
    ---> 17129684992     3752480768      13377204224     22.0
    
    print(string.format("Total: %d GB, Used: %.2f GB, Avail: %.2f GB, Used: %.1f %%",
        mem['total_gb'], mem['used_gb'], mem['avail_gb'], mem['used%']))
    
    ---> Total: 16 GB, Used: 3.49 GB, Avail: 12.46 GB, Used: 22.0 %
    
    os.info('Copyright')
    ---> (c) Microsoft Corporation。保留所有权利。
    
    os.info('LangId')
    ---> '2052'
    
    os.info('Locale')
    ---> 'zh-CN'
    
    os.info('FirmwareType')
    ---> 'UEFI'
    
    os.info('IsUEFIMode')
    ---> 1
    
    os.info('IsWinPE')
    ---> 0
os.exec ([opt], cmd)
执行外部命令

Parameters:

  • opt string

    启动选项 可以是以下启动选项中的一个或多个的组合:

    • /hide 隐藏窗口启动
    • /wait 等待程序执行结束
    • /min 最小化窗口启动
    • /max 最大化窗口启动
    • /admin 要求管理员权限启动
    (optional)
  • cmd string 命令行(含参数)

Usage:

    exec('cmd.exe /k echo hello')
    exec('/hide /wait', 'PETools.cmd PETools.7z')
os.link (lnk, target[, param[, icon[, index[, showcmd]]]])
创建 快捷方式

Parameters:

  • lnk string 指定要创建的快捷方式的路径
  • target string 快捷方式的目标路径
  • param string 程序执行参数 (optional)
  • icon string 指定任务栏图标(ico文件,或者包含图标的资源文件) (optional)
  • index int 图标索引号 (optional)
  • showcmd string 启动参数 (optional)

Usage:

    os.link([[D:\Tools\Everything.lnk]], [[%ProgramFile%\Everything\Everything.exe]])
    os.link(([[D:\Tools\Hello.lnk]], 'cmd.exe', '/k echo hello', 'shell32.dll', 27)
os.rundll (dllfile, funcname[, param1[, param2[, ...]]])
调用 dll 中的公开函数

Parameters:

  • dllfile string dll文件路径
  • funcname string 函数名
  • param1 函数参数 (optional)
  • param2 函数参数 (optional)
  • ... 函数参数 (optional)

Usage:

    -- SHEmptyRecycleBinA - 清空指定驱动器上的回收站。
    
    -- SHEmptyRecycleBinA(HWND hwnd, LPCSTR pszRootPath, DWORD dwFlags);
    
    -- 参数
    -- DWORD dwFlags
    SHERB_NOCONFIRMATION = 1
    -- 不会显示任何确认删除对象的对话框。
    SHERB_NOPROGRESSUI = 2
    -- 不显示指示进度的对话框。
    SHERB_NOSOUND = 4
    -- 操作完成后不会播放任何声音。
    -- https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shemptyrecyclebina
    
    -- 清空所有驱动器上的所有回收站,第三个参数 dwFlags 为 0, 不进行特别设置,
    -- 将弹出是否清空回收站提示,清空时显示进度对话框,且清空时有清空操作音效。
    os.rundll('shell32.dll','SHEmptyRecycleBinA',0,0,0)

扩展 string 库

string.envstr (str)
展开 环境变量

Parameters:

  • str string 包含环境变量引用的字符串

Usage:

    string.envstr('%ProgramFiles%\WinXShell\WinXShell.exe')
    ---> X:\Program Files\WinXShell\WinXShell.exe
    local str1 = [[%SystemRoot%\System32\regedit.exe]]
    str1:envstr() ---> C:\Windows\System32\regedit.exe
string.resstr (str)
展开 字符串资源

Parameters:

  • str string 包含字符串资源引用的字符串

Usage:

    string.resstr('#{@shell32.dll,9315}') ---> 本地磁盘
    local str2 = '#{@shell32.dll,9316}'
    str2:resstr() ---> DVD 驱动器

扩展 math 库

math.band (a, b)
进行 位与运算

Parameters:

  • a int 操作数 a
  • b int 操作数 b

Usage:

    math.band(5, 6) ---> 4

扩展 lua 函数

exec ()
执行外部命令

See also:

link ()
创建 快捷方式

See also:

wxsUI (ui[, jcfg[, param]])
打开 指定的UI组件

Parameters:

  • ui string 组件名
  • jcfg string 启动配置文件 (optional)
  • param string 启动参数 (optional)

扩展 lua 对象

App
App
Shell
Shell
System
System

Deprecated 已弃用

win_copyright ()
已弃用。获取 Windows 许可证说明

See also:

cpu_info ()
已弃用。获取 CPU 信息(注册表)

See also:

mem_info ()
已弃用。获取 内存信息

See also:

res_str (file, id)
已弃用。获取 资源文件中的字符串信息

Parameters:

  • file string 资源文件
  • id int 资源号

See also:

call_dll ()
已弃用。调用 dll 中的公开函数

See also:

CloseShellWindow ()
已弃用。关闭 外壳窗口 外壳窗口不存在时,将等待外壳窗口出现后再关闭

See also:

MinimizeWindow (class, title)
已弃用。最小化 指定窗口

Parameters:

  • class
  • title

See also:

HideWindow (class, title)
已弃用。隐藏 指定窗口

Parameters:

  • class
  • title

See also:

CloseWindow (class, title)
已弃用。关闭 指定窗口

Parameters:

  • class
  • title

See also:

generated by LDoc 1.4.6