我正在使用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中执行此操作?
答案 0 :(得分:1)
由于您没有头文件并且您想直接从Lua访问DLL(dwmapi.dll)中的函数,因此您必须尝试使用“外部函数接口”库。查看"C Foreign Function Interfaces" on the Lua Wiki部分,了解Alien(包装libffi),LuaJIT FFI(如果你想使用LuaJIT)和C / Invoke Lua的链接。