I made a small VB Net project by follows a tutorial to open the windows app inside a form boundaries. I have translated the functions to control windows app to Cheat Engine Lua syntax:
f = createForm()
f.setSize(640,500)
f.Caption = 'Test Apps Inside The Boundaries'
b = createButton(f)
b.setPosition(570,460)
b.setSize(60,30)
b.Caption = 'Launch'
function SetParent(hWndChild, hWndNewParent)
executeCodeLocalEx('SetParent', hWndChild, hWndNewParent)
end
function SetWindowPos(hwnd, hWndInsertAfter, x, y, cx, cy, wFlags)
executeCodeLocalEx('SetWindowPos', hwnd, hWndInsertAfter, x, y, cx, cy, wFlags)
end
function MoveWindow(hwnd, x, y, cx, cy, repaint)
local rp
if repaint then
rp=1
else
rp=0
end
executeCodeLocalEx('MoveWindow', hwnd, x, y, cx, cy, rp)
end
function launch()
local ps1 = os.execute'calculator.exe'
sleep(1000)
--- appWin1 = ps1.MainWindowHandle --- how this?
local appWin1 = findWindow(nil,'Calculator')
SetParent(appWin1,f)
MoveWindow(appWin1, 0,0, f.Width/2, f.Height/2,true)
end
b.OnClick = launch
But the code above didn't work. The code in VB Net is below:
NeedtoCELua = [[ Private Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles button1.Click
Try
Dim ps1 As New ProcessStartInfo("notepad.exe")
ps1.WindowStyle = ProcessWindowStyle.Minimized
Dim p1 As Process = Process.Start(ps1)
Thread.Sleep(1000) ' Allow the process to open it's window
appWin1 = p1.MainWindowHandle
' Put it into this form
SetParent(appWin1, Me.Handle)
' Move the window to overlay it on this window
MoveWindow(appWin1, 0, 0, Me.Width \ 2, Me.Height, True)
Private Sub Form8_Resize(ByVal sender As Object, ByVal e As EventArgs)
If Me.appWin1 <> IntPtr.Zero Then
MoveWindow(appWin1, 0, 0, Me.Width \ 2, Me.Height, True)
End If
If Me.appWin2 <> IntPtr.Zero Then
MoveWindow(appWin2, Me.Width \ 2, 0, Me.Width, Me.Height, True)
End If
'base.OnResize(e);
End Sub
]]
How to write a proper function in CE Lua refer to VB Net function for button click as shown above and make it work?