Lua中如果左键点击 ffi

我是 ffi 的新手。

基本上我正在尝试在鼠标左键单击时获取一个布尔值。

我已经研究了一些东西,发现了叫做 WM_LBUTTONDOWN 的东西。

然而,我不知道如何将其放入 ffi.cdef 中,然后获取一个布尔值。

点赞
用户1847592
用户1847592

这个程序每 1 毫秒一次地轮询鼠标按钮状态,并在按下 LMB 时退出。

local ffi = require("ffi")
ffi.cdef[[
   short GetAsyncKeyState(int vKey);
   void Sleep(int ms);
]]

local function is_key_down(vKey)
   return ffi.C.GetAsyncKeyState(vKey) < 0
end

local function sleep(ms)
   ffi.C.Sleep(ms or 1)
end

local VK_LBUTTON  = 0x01 -- 左鼠标键
local VK_RBUTTON  = 0x02 -- 右鼠标键
local VK_MBUTTON  = 0x04 -- 中间鼠标键
local VK_XBUTTON1 = 0x05 -- X1 鼠标键(后退)
local VK_XBUTTON2 = 0x06 -- X2 鼠标键(前进)

sleep(1000)
print"等待左鼠标键按下"
repeat
   sleep()
until is_key_down(VK_LBUTTON)
print"现在左鼠标键按下了"

如果你想要处理 WM_LBUTTONDOWN 消息,那将需要更加复杂的解决方案。

2021-08-26 14:29:36