小丑鼠

JokyMouse 开发者文档

小丑鼠 Latest

jokymouse.system API

jokymouse.system 模块通过 require("jokymouse.system") 加载,提供系统时间与窗口检索能力。

local system = require("jokymouse.system")

可用函数

函数签名说明
timesystem.time()返回当前毫秒时间戳
get_active_windowsystem.get_active_window()返回当前前台窗口,找不到返回 nil
find_windowsystem.find_window(opts?)查找第一个匹配窗口,找不到返回 nil
find_windowssystem.find_windows(opts?)查找全部匹配窗口,返回数组

get_active_window

local system = require("jokymouse.system")

local current = system.get_active_window()
if current then
  local info = current:info()
  print("active", info)
end

find_window / find_windows

opts 字段

字段类型默认值说明
titlestringnil标题匹配语法,默认全等且区分大小写
process_namestringnil进程名全等匹配,忽略大小写

title 匹配语法

  • settings 默认全等匹配,区分大小写
  • *settings 标题包含 settings
  • !settings 标题全等匹配,忽略大小写
  • !*settings*!settings 标题包含匹配,忽略大小写

!* 只在开头生效,顺序不限。

Window 对象

find_windowfind_windows 返回 Window userdata。可用方法如下:

方法签名说明
existswin:exists()窗口是否仍然存在
infowin:info()返回窗口信息 table

info 返回结构

{
  title = "窗口标题",
  process_name = "WeChat",
  process_path = "/Applications/WeChat.app/...",
  region = {
    x = 100,
    y = 120,
    width = 900,
    height = 680
  },
  is_active = true
}

示例

local jm = require("jokymouse")
local system = require("jokymouse.system")

local ts = system.time()
print("now", ts)

local win = system.find_window({
  title = "!*微信"
})

if not win then
  jm.exit("未找到目标窗口")
end

if not win:exists() then
  jm.exit("窗口已失效")
end

local info = win:info()
print(info)

平台说明

  • macOS:窗口信息读取依赖系统窗口查询能力,部分应用标题可能为空。
  • Linux:当前只支持 X11 会话;Wayland 会返回不支持错误。
  • Windows:窗口查询依赖 Win32 API,返回结果受系统窗口枚举规则影响。