如何确定用户的屏幕是否在 Windows 中锁定(使用 Go)?

问题描述 投票:0回答:1

如何确定 Windows 中用户的屏幕是否被锁定?我正在用 Go 编写,但我认为这更多是关于 WinAPI。

目前,我正在使用以下功能:

const DESKTOP_SWITCHDESKTOP = 0x0100

func main() {
    for range time.Tick(time.Second) {
        fmt.Println("LockDesktop = ", LockDesktop())
    }
}

func LockDesktop() bool {
    h := winApi.OpenDesktop("Default", 0, false, DESKTOP_SWITCHDESKTOP)
    defer winApi.CloseDesktop(h)

    if h != 0 {
        return !winApi.SwitchDesktop(h)
    }

    return false
}

这个功能有点作用。例如,当我按

Ctrl+Alt+Del
时,我会在控制台中看到
LockDesktop = true
。但是,如果我使用
Win+L
锁定屏幕,控制台会显示
LockDesktop = false
。仅当我再次按
Ctrl+Alt+Del
(调出密码输入屏幕)时,
LockDesktop = true
才会再次开始出现在控制台中(在 UAC 提示期间,也会显示
LockDesktop = true
)。

如何确保即使屏幕锁定(使用

LockDesktop = true
)也能返回
Win+L

go winapi screen-lock
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.