mciSendString, перенесенный скрипт VB в скрипт CE Lua - PullRequest
0 голосов
/ 23 апреля 2020

Я создал проект, который воспроизводит видеофайл внутри границы панели (без каких-либо приложений видеоплеера), используя Cheat Engine Lua script + mciSendString winmm.dll, он работает нормально. Проблема в том, что я хочу подогнать размер видео под размер панели. У меня есть эта часть VB-скрипта:

Public Function getDefaultSize() As Size
        'Returns the default width, height the movie
        Dim c_Data As String = Space(128)
        mciSendString("where movie source", c_Data, 128, 0)
        Dim parts() As String = Split(c_Data, " ")

        Return New Size(CInt(parts(2)), CInt(parts(3)))
    End Function

, и я хочу перенести этот скрипт в CE Lua, пока:

function getDefaultSize(Size)
  local c_Data = string.rep(" ",128)  -- Space(128)
  mciSendString("where movie source", c_Data, 128, 0)

--- this part need adapting to Lua
--  Dim parts() = Split(c_Data, " ") --string
--  return  New Size(CInt(parts(2)), CInt(parts(3)))

end

Есть какие-нибудь решения?

1 Ответ

0 голосов
/ 23 апреля 2020

Если видео воспроизводится за границей панели (скажем, как panel1), то игнорируя соотношение сторон видео, вот функция для подгонки видеокадра к панели 1.

Когда видео начинает воспроизводиться:

 iLeft = 0
 iTop = 0
 newWidth = panel1.Width
 newHeight = panel1.Height
 mciSendString("put movie window at "..iLeft.." "..iTop.." "..newWidth.." "..newHeight, "", 0, 0)

При изменении границы формы / панели1:

function panel1_sizeChange()
 if playing then
    --SizeVideoWindow(panel1.getSize())
    iLeft = 0
    iTop = 0
    newWidth = panel1.Width
    newHeight = panel1.Height
    mciSendString("put movie window at "..iLeft.." "..iTop.." "..newWidth.." "..newHeight, "", 0, 0)
 end
end

Между тем проблема решена

...