使用Lua脚本禁用桌面合成

时间:2014-02-26 05:30:41

标签: lua dwm

我正在使用IndigoRose的Set-Up Factory来构建我的安装程序。设置工厂在安装程序的脚本部分中使用lua语言。现在,对于我的应用程序,一旦安装完成,我想运行一个脚本,如果操作系统是Windows 7,则禁用桌面分解。有没有办法可以在lua中访问dwmapi.lib来执行此操作。 是否有系统库函数来访问桌面窗口管理器?

我做了一些谷歌搜索,发现了以下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中执行此操作?

1 个答案:

答案 0 :(得分:1)

由于您没有头文件并且您想直接从Lua访问DLL(dwmapi.dll)中的函数,因此您必须尝试使用​​“外部函数接口”库。查看"C Foreign Function Interfaces" on the Lua Wiki部分,了解Alien(包装libffi),LuaJIT FFI(如果你想使用LuaJIT)和C / Invoke Lua的链接。