Отключение композиции рабочего стола с помощью сценариев Lua

Я использую Set-Up Factory от IndigoRose для создания своих установщиков. Фабрика установки использует язык lua ​​в разделе сценариев установщиков. Теперь для моего приложения после завершения установки я хотел бы запустить сценарий, который отключает декомпозицию рабочего стола, если операционная система Windows 7. Есть ли способ получить доступ к dwmapi.lib в lua для этого. Есть ли функция системной библиотеки для доступа к диспетчеру окон рабочего стола?

Я немного погуглил и нашел следующий код для vbscript..

Private Const DWM_EC_DISABLECOMPOSITION As Long = 0
Private Const DWM_EC_ENABLECOMPOSITION As Long = 1

Private Declare Function DwmEnableComposition Lib "dwmapi" (uCompositionAction As Long) As Long

Private Function SUCCEEDED(hr As Long) As Boolean
    SUCCEEDED = (hr >= 0)
End Function
Private Function FAILED(hr As Long) As Boolean
    FAILED = (hr < 0)
End Function

Private Sub Form_Load()
    If SUCCEEDED(DwmEnableComposition(DWM_EC_DISABLECOMPOSITION)) Then
        MsgBox "Vista Aero est Desactive"
    Else
        MsgBox "Vista Aero n'a pas pu etre Desactive"
    End If

End Sub

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    MsgBox Cancel
    MsgBox UnloadMode
    If SUCCEEDED(DwmEnableComposition(DWM_EC_ENABLECOMPOSITION)) Then
        MsgBox "Vista Aero est Active"
    Else
        MsgBox "Vista Aero n'a pas pu etre active"
    End If

End Sub 

Как я могу сделать это в LUA??


person user1375481    schedule 26.02.2014    source источник


Ответы (1)


Поскольку у вас нет файлов заголовков, и вы хотите получить прямой доступ к функциям из DLL (dwmapi.dll) из Lua, вам придется попробовать одну из библиотек «интерфейса внешней функции». Посмотрите в разделе "Интерфейсы внешних функций C" в Lua Wiki, где есть ссылки на Alien (обертывает libffi ), LuaJIT FFI (если вы хотите использовать LuaJIT) и C/Invoke Lua.

person Oliver    schedule 26.02.2014