【问题标题】:Disabling Desktop Composition using Lua Scripting使用 Lua 脚本禁用桌面合成
【发布时间】:2014-02-27 03:44:39
【问题描述】:

我正在使用 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 中做到这一点?

【问题讨论】:

    标签: lua dwm


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-30
      • 1970-01-01
      • 2021-04-05
      相关资源
      最近更新 更多