aboutsummaryrefslogtreecommitdiff
path: root/src/mingwMain/kotlin/moe/yuuta/aero/WinCompat.kt
blob: 029e9a29edd8cba8bc4dc4b6173a6cc5aa9368ba (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package moe.yuuta.aero

import kotlinx.cinterop.*
import platform.windows.GetModuleHandleA
import platform.windows.GetStartupInfoA
import platform.windows.WINBOOLVar
import platform.windows._STARTUPINFOA

object WinCompat {
    val nCmdShow
        get() = memScoped {
            val startUpInfo = nativeHeap.alloc<_STARTUPINFOA>()
            GetStartupInfoA(startUpInfo.ptr)
            val nCmdShow = startUpInfo.wShowWindow
            nativeHeap.free(startUpInfo)
            return@memScoped nCmdShow.convert<Int>()
        }
    val hInstance
        get() = GetModuleHandleA(null)

    fun DwmIsCompositionEnabled(): Boolean {
        val enable = nativeHeap.alloc<WINBOOLVar>()
        platform.windows.DwmIsCompositionEnabled(enable.ptr)
        val result = enable.value
        nativeHeap.free(enable)
        return result > 0
    }
}