Ai
1 Star 0 Fork 0

phy0292/cheat-engine

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
LuaControl.pas 16.14 KB
一键复制 编辑 原始数据 按行查看 历史
Dark Byte 提交于 2020-09-10 08:23 +08:00 . forgot some changes for ceshare/lua
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595
unit LuaControl;
{$mode delphi}
interface
uses
Classes, SysUtils, lua, lualib, lauxlib, Controls, Menus, Graphics;
procedure initializeLuaControl;
procedure control_addMetaData(L: PLua_state; metatable: integer; userdata: integer );
implementation
uses luahandler, pluginexports, LuaCaller, LuaComponent, LuaClass, LuaObject;
function control_repaint(L: PLua_State): integer; cdecl;
begin
TControl(luaclass_getClassObject(L)).Repaint;
result:=0;
end;
function control_update(L: PLua_State): integer; cdecl;
begin
TControl(luaclass_getClassObject(L)).Update;
result:=0;
end;
function control_getFont(L: PLua_State): integer; cdecl;
var
c: TControl;
begin
c:=luaclass_getClassObject(L);
luaclass_newClass(L, c.font);
result:=1;
end;
function control_setFont(L: Plua_State): integer; cdecl;
var
c: tcontrol;
begin
c:=luaclass_getClassObject(L);
if lua_gettop(L)=1 then
c.Font:=lua_ToCEUserData(L, -1);
result:=0;
end;
function control_setCaption(L: Plua_State): integer; cdecl;
var
c: tcontrol;
begin
c:=luaclass_getClassObject(L);
if lua_gettop(L)>=1 then
c.Caption:=lua_tostring(L, -1);
result:=0;
end;
function control_getCaption(L: PLua_State): integer; cdecl;
var
c: TControl;
begin
c:=luaclass_getClassObject(L);
lua_pushstring(L, c.caption);
result:=1;
end;
function control_setLeft(L: Plua_State): integer; cdecl;
var
c: tcontrol;
begin
c:=luaclass_getClassObject(L);
if lua_gettop(L)=1 then //6.3+, class only so no need for >= and negative indexes
c.left:=lua_tointeger(L, 1);
result:=0;
end;
function control_getLeft(L: Plua_State): integer; cdecl;
var
c: tcontrol;
begin
c:=luaclass_getClassObject(L);
lua_pushinteger(L, c.left);
result:=1;
end;
function control_setTop(L: Plua_State): integer; cdecl;
var
c: tcontrol;
begin
c:=luaclass_getClassObject(L);
if lua_gettop(L)=1 then
c.top:=lua_tointeger(L, 1);
result:=0;
end;
function control_getTop(L: Plua_State): integer; cdecl;
var
c: tcontrol;
begin
c:=luaclass_getClassObject(L);
lua_pushinteger(L, c.top);
result:=1;
end;
function control_setPosition(L: Plua_State): integer; cdecl;
var
c: TControl;
begin
result:=0;
c:=luaclass_getClassObject(L);
if lua_gettop(L)>=2 then
begin
c.Left:=lua_tointeger(L, -2);
c.Top:=lua_tointeger(L, -1);
end;
end;
function control_getPosition(L: PLua_State): integer; cdecl;
var
c: TControl;
x,y: integer;
begin
result:=0;
c:=luaclass_getClassObject(L);
lua_pushinteger(L, c.left);
lua_pushinteger(L, c.top);
result:=2;
end;
function control_setWidth(L: Plua_State): integer; cdecl;
var
c: tcontrol;
begin
c:=luaclass_getClassObject(L);
if lua_gettop(L)=1 then
c.Width:=lua_tointeger(L, 1);
result:=0;
end;
function control_getWidth(L: Plua_State): integer; cdecl;
var
c: tcontrol;
begin
c:=luaclass_getClassObject(L);
lua_pushinteger(L, c.Width);
result:=1;
end;
function control_setHeight(L: Plua_State): integer; cdecl;
var
c: tcontrol;
begin
c:=luaclass_getClassObject(L);
if lua_gettop(L)=1 then
c.Height:=lua_tointeger(L, 1);
result:=0;
end;
function control_getHeight(L: Plua_State): integer; cdecl;
var
c: tcontrol;
begin
c:=luaclass_getClassObject(L);
lua_pushinteger(L, c.Height);
result:=1;
end;
function control_setClientWidth(L: Plua_State): integer; cdecl;
var
c: tcontrol;
begin
c:=luaclass_getClassObject(L);
if lua_gettop(L)=1 then
c.ClientWidth:=lua_tointeger(L, 1);
result:=0;
end;
function control_getClientWidth(L: Plua_State): integer; cdecl;
var
c: tcontrol;
begin
c:=luaclass_getClassObject(L);
lua_pushinteger(L, c.ClientWidth);
result:=1;
end;
function control_setClientHeight(L: Plua_State): integer; cdecl;
var
c: tcontrol;
begin
c:=luaclass_getClassObject(L);
if lua_gettop(L)=1 then
c.ClientHeight:=lua_tointeger(L, 1);
result:=0;
end;
function control_getClientHeight(L: Plua_State): integer; cdecl;
var
c: tcontrol;
begin
c:=luaclass_getClassObject(L);
lua_pushinteger(L, c.ClientHeight);
result:=1;
end;
function control_setSize(L: Plua_State): integer; cdecl;
var
c: TControl;
begin
c:=luaclass_getClassObject(L);
if lua_gettop(L)>=2 then
begin
c.Width:=lua_tointeger(L, -2);
c.height:=lua_tointeger(L, -1);
end;
result:=0;
end;
function control_getSize(L: PLua_State): integer; cdecl;
var
c: TControl;
begin
c:=luaclass_getClassObject(L);
lua_pushinteger(L, c.width);
lua_pushinteger(L, c.height);
result:=2;
end;
function control_setAlign(L: PLua_State): integer; cdecl;
var
c: TControl;
a: integer;
begin
c:=luaclass_getClassObject(L);
if lua_gettop(L)>=1 then
c.Align:=Talign(lua_tointeger(L,-1));
result:=0;
end;
function control_getAlign(L: PLua_State): integer; cdecl;
var
c: TControl;
begin
c:=luaclass_getClassObject(L);
lua_pushinteger(L, integer(c.Align));
result:=1;
end;
function control_setEnabled(L: PLua_State): integer; cdecl;
var
c: TControl;
begin
c:=luaclass_getClassObject(L);
if lua_gettop(L)>=1 then
c.Enabled:=lua_toboolean(L,-1);
result:=0;
end;
function control_getEnabled(L: PLua_State): integer; cdecl;
var
c: TControl;
begin
c:=luaclass_getClassObject(L);
lua_pushboolean(L, c.Enabled);
result:=1;
end;
function control_setVisible(L: PLua_State): integer; cdecl;
var
c: TControl;
begin
c:=luaclass_getClassObject(L);
if lua_gettop(L)>=1 then
c.Visible:=lua_toboolean(L,-1);
result:=0;
end;
function control_getVisible(L: PLua_State): integer; cdecl;
var
c: TControl;
begin
c:=luaclass_getClassObject(L);
lua_pushboolean(L, c.Visible);
result:=1;
end;
function control_setColor(L: PLua_State): integer; cdecl;
var
c: TControl;
begin
c:=luaclass_getClassObject(L);
if lua_gettop(L)>=1 then
c.Color:=Tcolor(lua_tointeger(L,-1));
result:=0;
end;
function control_getColor(L: PLua_State): integer; cdecl;
var
c: TControl;
begin
c:=luaclass_getClassObject(L);
lua_pushinteger(L, integer(c.color));
result:=1;
end;
function control_getRGBColor(L: PLua_State): integer; cdecl;
var
c: TControl;
begin
c:=luaclass_getClassObject(L);
lua_pushinteger(L, integer(c.GetRGBColorResolvingParent));
result:=1;
end;
function control_setParent(L: PLua_State): integer; cdecl;
var
c: TControl;
begin
c:=luaclass_getClassObject(L);
if lua_gettop(L)>=1 then
c.Parent:=lua_ToCEUserData(L, -1);
result:=0;
end;
function control_getParent(L: PLua_State): integer; cdecl;
var
c: TControl;
begin
c:=luaclass_getClassObject(L);
luaclass_newClass(L, c.parent);
result:=1;
end;
function control_setPopupMenu(L: PLua_State): integer; cdecl;
var
c: TControl;
begin
c:=luaclass_getClassObject(L);
if lua_gettop(L)>=1 then
c.PopupMenu:=lua_ToCEUserData(L, -1);
result:=0;
end;
function control_getPopupMenu(L: PLua_State): integer; cdecl;
var
c: TControl;
i: integer;
begin
c:=luaclass_getClassObject(L);
luaclass_newClass(L,c);
lua_pushstring(L,'PopupMenu');
lua_getProperty(L);
if lua_isnil(L,-1) then
luaclass_newClass(L, c.PopupMenu);
result:=1;
end;
function control_doClick(L: PLua_State): integer; cdecl;
var
c: TControl;
begin
result:=0;
c:=luaclass_getClassObject(L);
if assigned(c.OnClick) then
c.OnClick(c);
end;
function control_getOnClick(L: PLua_State): integer; cdecl;
var
c: tcontrol;
begin
c:=luaclass_getClassObject(L);
LuaCaller_pushMethodProperty(L, TMethod(c.onclick), 'TNotifyEvent');
result:=1;
end;
function control_setOnClick(L: PLua_State): integer; cdecl;
var
parameters: integer;
c: TControl;
f: integer;
routine: string;
lc: TLuaCaller;
// clickroutine: integer;
begin
result:=0;
c:=luaclass_getClassObject(L);
if lua_gettop(L)>=1 then
begin
CleanupLuaCall(tmethod(c.onClick));
c.onClick:=nil;
if lua_isfunction(L,-1) then
begin
f:=luaL_ref(L,LUA_REGISTRYINDEX);
lc:=TLuaCaller.create;
lc.luaroutineIndex:=f;
c.OnClick:=lc.NotifyEvent;
end
else
if lua_isstring(L,-1) then
begin
routine:=lua_tostring(L,-1);
lc:=TLuaCaller.create;
lc.luaroutine:=routine;
c.OnClick:=lc.NotifyEvent;
end;
end;
end;
function control_bringToFront(L: PLua_State): integer; cdecl;
var
control: TControl;
begin
control:=luaclass_getClassObject(L);
control.BringToFront;
result:=0
end;
function control_sendToBack(L: PLua_State): integer; cdecl;
var
control: TControl;
begin
control:=luaclass_getClassObject(L);
control.SendToBack;
result:=0
end;
function control_screenToClient(L: PLua_State): integer; cdecl;
var
control: TControl;
p: tpoint;
begin
result:=0;
control:=luaclass_getClassObject(L);
if lua_gettop(L)>=2 then
begin
p.x:=lua_tointeger(L,1);
p.y:=lua_tointeger(L,2);
p:=control.ScreenToClient(p);
lua_pushinteger(L,p.x);
lua_pushinteger(L,p.y);
result:=2;
end;
end;
function control_clientToScreen(L: PLua_State): integer; cdecl;
var
control: TControl;
p: tpoint;
begin
result:=0;
control:=luaclass_getClassObject(L);
if lua_gettop(L)>=2 then
begin
p.x:=lua_tointeger(L,1);
p.y:=lua_tointeger(L,2);
p:=control.ClientToScreen(p);
lua_pushinteger(L,p.x);
lua_pushinteger(L,p.y);
result:=2;
end;
end;
procedure control_addMetaData(L: PLua_state; metatable: integer; userdata: integer);
begin
component_addMetaData(L, metatable, userdata);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'setCaption', control_setCaption);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getCaption', control_getCaption);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'setLeft', control_setLeft);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getLeft', control_getLeft);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'setTop', control_setTop);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getTop', control_getTop);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'setPosition', control_setPosition);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getPosition', control_getPosition);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'setWidth', control_setWidth);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getWidth', control_getWidth);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'setHeight', control_setHeight);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getHeight', control_getHeight);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'setSize', control_setSize);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getSize', control_getSize);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'setAlign', control_setAlign);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getAlign', control_getAlign);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'setOnClick', control_setOnClick);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'doClick', control_doClick);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'setEnabled', control_setEnabled);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getEnabled', control_getEnabled);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'setVisible', control_setVisible);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getVisible', control_getVisible);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'setColor', control_setColor);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getColor', control_getColor);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getRGBColor', control_getRGBColor);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'setParent', control_setParent);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getParent', control_getParent);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'setPopupMenu', control_setPopupMenu);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getPopupMenu', control_getPopupMenu);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getFont', control_getFont);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'repaint', control_repaint);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'update', control_update);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'bringToFront', control_bringToFront);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'sendToBack', control_sendToBack);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'screenToClient', control_screenToClient);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'clientToScreen', control_clientToScreen);
//luaclass_addPropertyToTable(L, metatable, userdata, 'Caption', control_getCaption, control_setCaption);
//luaclass_addPropertyToTable(L, metatable, userdata, 'Top', control_getTop, control_setTop);
//luaclass_addPropertyToTable(L, metatable, userdata, 'Left', control_getLeft, control_setLeft);
//luaclass_addPropertyToTable(L, metatable, userdata, 'Width', control_getWidth, control_setWidth);
//luaclass_addPropertyToTable(L, metatable, userdata, 'Height', control_getHeight, control_setHeight);
//luaclass_addPropertyToTable(L, metatable, userdata, 'Align', control_getAlign, control_setAlign);
//luaclass_addPropertyToTable(L, metatable, userdata, 'Enabled', control_getEnabled, control_setEnabled);
//luaclass_addPropertyToTable(L, metatable, userdata, 'Visible', control_getVisible, control_setVisible);
//luaclass_addPropertyToTable(L, metatable, userdata, 'Color', control_getColor, control_setColor);
luaclass_addPropertyToTable(L, metatable, userdata, 'RGBColor', control_getRGBColor, control_setColor);
luaclass_addPropertyToTable(L, metatable, userdata, 'ClientWidth', control_getClientWidth, control_setClientWidth);
luaclass_addPropertyToTable(L, metatable, userdata, 'ClientHeight', control_getClientHeight, control_setClientHeight);
luaclass_addPropertyToTable(L, metatable, userdata, 'Parent', control_getParent, control_setParent);
luaclass_addPropertyToTable(L, metatable, userdata, 'PopupMenu', control_getPopupMenu, control_setPopupMenu);
luaclass_addPropertyToTable(L, metatable, userdata, 'Font', control_getFont, control_setFont);
luaclass_addPropertyToTable(L, metatable, userdata, 'OnClick', control_getOnClick, control_setOnClick);
end;
procedure initializeLuaControl;
begin
lua_register(LuaVM, 'control_setCaption', control_setCaption);
lua_register(LuaVM, 'control_getCaption', control_getCaption);
lua_register(LuaVM, 'control_setPosition', control_setPosition);
lua_register(LuaVM, 'control_getPosition', control_getPosition);
lua_register(LuaVM, 'control_setSize', control_setSize);
lua_register(LuaVM, 'control_getSize', control_getSize);
lua_register(LuaVM, 'control_setAlign', control_setAlign);
lua_register(LuaVM, 'control_getAlign', control_getAlign);
lua_register(LuaVM, 'control_onClick', control_setOnClick);
lua_register(LuaVM, 'control_doClick', control_doClick);
lua_register(LuaVM, 'control_setEnabled', control_setEnabled);
lua_register(LuaVM, 'control_getEnabled', control_getEnabled);
lua_register(LuaVM, 'control_setVisible', control_setVisible);
lua_register(LuaVM, 'control_getVisible', control_getVisible);
lua_register(LuaVM, 'control_setColor', control_setColor);
lua_register(LuaVM, 'control_getColor', control_getColor);
lua_register(LuaVM, 'control_setParent', control_setParent);
lua_register(LuaVM, 'control_getParent', control_getParent);
lua_register(LuaVM, 'control_setPopupMenu', control_setPopupMenu);
lua_register(LuaVM, 'control_getPopupMenu', control_getPopupMenu);
lua_register(LuaVM, 'control_getFont', control_getFont);
end;
initialization
luaclass_register(TControl, control_addMetaData);
end.
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/phy0292/cheat-engine.git
git@gitee.com:phy0292/cheat-engine.git
phy0292
cheat-engine
cheat-engine
master

搜索帮助