You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用LUA捕获EXE程序窗口输出并在另一EXE窗口展示

Lua实现EXE窗口画面镜像方案

Lua本身没有原生的窗口操作、图形捕获接口,需要借助扩展能力调用系统API完成,Windows平台下推荐用LuaJIT + FFI调用Win32 API实现,核心流程如下:

前置准备

  • 安装LuaJIT 2.0+,支持FFI直接调用C接口
  • 可选LÖVE2D框架,简化自建窗口的渲染逻辑

核心实现步骤

1. 定位目标窗口

调用Win32 API获取目标游戏窗口的句柄、尺寸参数:

local ffi = require("ffi")
-- 声明需要用到的Win32类型和接口
ffi.cdef[[
typedef void* HWND;
typedef int BOOL;
typedef const char* LPCSTR;
typedef struct tagRECT {
    long left;
    long top;
    long right;
    long bottom;
} RECT;
HWND FindWindowA(LPCSTR lpClassName, LPCSTR lpWindowName);
BOOL GetWindowRect(HWND hWnd, RECT* lpRect);
]]
-- 替换为目标游戏的窗口标题
local target_hwnd = ffi.C.FindWindowA(nil, "游戏窗口标题")
if target_hwnd == nil then
    error("未找到目标运行窗口")
end
-- 获取窗口宽高
local rect = ffi.new("RECT")
ffi.C.GetWindowRect(target_hwnd, rect)
local win_width = rect.right - rect.left
local win_height = rect.bottom - rect.top

2. 捕获目标窗口画面

根据目标窗口的渲染模式选择捕获方案:

  • 普通窗口用GDI的BitBlt接口即可完成捕获,直接把目标窗口的设备上下文内容拷贝到内存缓冲区,拿到RGB像素数据
  • 全屏独占、用D3D/OpenGL渲染的游戏,需要用Windows 10+提供的Windows Graphics Capture API,或者对应渲染API的钩子方案才能捕获到有效画面

GDI捕获的核心代码片段:

ffi.cdef[[
typedef void* HDC;
typedef void* HBITMAP;
HDC GetWindowDC(HWND hWnd);
HDC CreateCompatibleDC(HDC hdc);
HBITMAP CreateCompatibleBitmap(HDC hdc, int nWidth, int nHeight);
void* SelectObject(HDC hdc, void* h);
int BitBlt(HDC hdcDest, int nXDest, int nYDest, int nWidth, int nHeight, HDC hdcSrc, int nXSrc, int nYSrc, uint32_t dwRop);
]]
-- 后续将捕获到的HBITMAP转为内存RGB像素数据即可用于渲染

3. 自建窗口渲染镜像

用LÖVE2D创建和目标窗口同尺寸的展示窗口,每帧把捕获到的像素数据转为纹理绘制即可:

-- LÖVE2D入口代码
function love.load()
    -- 创建和目标窗口同尺寸的展示窗口
    love.window.setMode(win_width, win_height, {title = "窗口镜像"})
    -- 初始化捕获模块
end
function love.update(dt)
    -- 每帧执行捕获逻辑,更新纹理数据
end
function love.draw()
    -- 绘制捕获到的画面纹理
end

注意事项

  • 高DPI屏幕下需要做DPI适配,避免捕获尺寸和实际显示尺寸不一致
  • 要实现低延迟镜像,需要将捕获帧率和目标窗口的刷新率对齐
  • 部分反作弊游戏会拦截窗口捕获请求,无法正常获取画面

内容的提问来源于stack exchange,提问作者Alin Is Great

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 10:45:03