#lua
#lua
Вопрос:
Я попытался отправить F13 с помощью kb.stroke(«F13»);
Ну, это не работает, отлично работает с любыми F12 и ниже.
Я пытаюсь использовать это на пользовательском пульте в унифицированном удаленном приложении, поэтому мой единственный обходной путь для know — использовать os.start для запуска ahk-скрипта, который выполняет отправку ключа, но это очень медленный подход.
Любая помощь будет оценена.
Комментарии:
1. У вас есть доступный модуль FFI, поэтому вы можете отправлять что угодно с помощью WinAPI.
Ответ №1:
local ffi = require"ffi"
ffi.cdef[[
typedef struct {
uintptr_t type;
uint16_t wVk;
uint16_t wScan;
uint32_t dwFlags;
uint32_t time;
uintptr_t dwExtraInfo;
uint32_t x[2];
} INP;
int SendInput(int, void*, int);
]]
local inp_t = ffi.typeof"INP[2]"
local function PressAndReleaseKey(vkey)
local inp = inp_t()
for j = 0, 1 do
inp[j].type = 1
inp[j].wVk = vkey
inp[j].dwFlags = j * 2
end
ffi.C.SendInput(2, inp, ffi.sizeof"INP")
end
PressAndReleaseKey(0x57) -- W
PressAndReleaseKey(0x7C) -- F13
VKeys:
https://learn.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes