Я сделал небольшой проект VB Net, следуя инструкциям, чтобы открыть приложение windows внутри границ формы. Я перевел функции для управления приложением windows в Cheat Engine Lua синтаксис:
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
Но приведенный выше код не сработал. Код в VB Net приведен ниже:
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
]]
Как написать правильную функцию в CE Lua Обратитесь к функции VB Net для нажатия кнопки, как показано выше, и заставьте ее работать?