使用Lua脚本禁用桌面合成

使用Lua脚本禁用桌面合成,lua,dwm,Lua,Dwm,我使用从IndigoRose建立的工厂来构建我的安装程序。安装工厂在安装程序的脚本部分使用lua语言。现在,对于我的应用程序,一旦安装完成,我想运行一个脚本,如果操作系统是Windows7,它将禁用桌面分解。是否有一种方法可以访问lua中的dwmapi.lib来执行此操作。 是否有访问桌面窗口管理器的系统库函数 我在谷歌上搜索了一下,找到了vbscript的以下代码 Private Const DWM_EC_DISABLECOMPOSITION As Long = 0 Private Const

我使用从IndigoRose建立的工厂来构建我的安装程序。安装工厂在安装程序的脚本部分使用lua语言。现在,对于我的应用程序,一旦安装完成,我想运行一个脚本,如果操作系统是Windows7,它将禁用桌面分解。是否有一种方法可以访问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 
Private Const DWM_EC_DISABLECOMPOSITION As Long=0
私有常量DWM_EC_ENABLECOMPOSITION,长度=1
私有声明函数DwmEnableComposition Lib“dwmapi”(uCompositionAction作为Long)作为Long
私有函数成功(hr长度)为布尔值
成功=(hr>=0)
端函数
私有函数失败(与布尔值一样长)
失败=(hr<0)
端函数
专用子表单_加载()
如果成功(DwmEnableComposition(DWM_EC_DISABLECOMPOSITION)),则
MsgBox“Vista Aero est Desactive”
其他的
MsgBox“Vista Aero n'a pas etre Desactive”
如果结束
端接头
私有子表单_queryLoad(取消为整数,卸载为整数)
MsgBox取消
MsgBox卸载模式
如果成功(DwmEnableComposition(DWM_EC_ENABLECOMPOSITION)),则
MsgBox“Vista Aero est活动”
其他的
MsgBox“Vista Aero n'a pas PUE etre active”
如果结束
端接头

如何在LUA中执行此操作???

由于您没有头文件,并且您直接希望从LUA的DLL(dwmapi.DLL)访问函数,因此您必须尝试使用“外部函数接口”库。请参阅该部分以获得指向Alien(包装libffi)、LuaJIT FFI(如果您想使用LuaJIT)和C/Invoke Lua的链接