Skylark Editor is written in C, a high performance text/hex editor. Embedded Database-client/Redis-client/Lua-engine. You can run Lua scripts and SQL files directly.
local GWL_EXSTYLE = -20
local SWP_NOSIZE = 0x0001
local SWP_NOMOVE = 0x0002
local WS_EX_TOPMOST = 0x00000008
local bit = require("bit")
local ffi = require('ffi')
local euapi = ffi.load(ffi.os == "Windows" and "euapi.dll")
ffi.cdef[[
void* eu_module_hwnd(void);
void eu_setpos_window(void*, void*, int, int, int, int, uint32_t);
intptr_t GetWindowLongPtrW(void *hwnd, int index);
]]
local function fntop(hwnd)
local exstyle = ffi.C.GetWindowLongPtrW(hwnd, GWL_EXSTYLE)
local flags = bit.band(exstyle, WS_EX_TOPMOST)
return (flags ~= 0)
end
local hwnd = euapi.eu_module_hwnd()
if (hwnd ~= nil) then
if (fntop(hwnd) == false) then
euapi.eu_setpos_window(hwnd, ffi.cast("void *", -1), 0, 0, 0, 0, bit.bor(SWP_NOMOVE, SWP_NOSIZE))
else
euapi.eu_setpos_window(hwnd, ffi.cast("void *", -2), 0, 0, 0, 0, bit.bor(SWP_NOMOVE, SWP_NOSIZE))
end
end
这个功能让我想起以前一些国内大厂家争夺用户桌面前端的恐惧, 我没有内置这个功能的想法, 但你可以用其他方式实现. 下面是一个lua脚本, 你可以把它保存到skylark安装目录的conf子目录, 比如名称为skylark_topmost.lua
点击设置->自定义命令->设置运行路径, 在弹出来的窗口中填写, 名称: 总在最前 路径: conf/skylark_topmost.lua 保存, 之后你可以为这个功能菜单设一个快捷键, 打开conf/skylark_input.conf文件, 搜索"IDM_SET_LUAJIT_EXECUTE + 1", 在它下面添加一行:
{bit.bor(FVIRTKEY,FALT,FSHIFT), string.byte("T"), IDM_SET_LUAJIT_EXECUTE + 2},