使用Lua脚本禁用桌面合成

我正在使用IndigoRose的Set-Up Factory来构建我的安装程序。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中实现这个呢?

点赞
用户869951
用户869951

如果你没有头文件,直接想从 Lua 访问 DLL(dwmapi.dll)中的函数,你就必须尝试使用其中一个“外部函数接口”库。请查看 Lua Wiki 上的“C Foreign Function Interfaces”一节(http://lua-users.org/wiki/BindingCodeToLua),了解 Alien(包装 libffi)、LuaJIT FFI(如果要使用 LuaJIT)和C/Invoke Lua 的链接。

2014-02-26 06:15:02