前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Go 语言社区】转-golang windows 判断锁屏

【Go 语言社区】转-golang windows 判断锁屏

作者头像
李海彬
发布2018-03-20 13:58:06
8920
发布2018-03-20 13:58:06
举报
文章被收录于专栏:Golang语言社区Golang语言社区
代码语言:javascript
复制
package osapi
import (
    "syscall"
    "unsafe"
    "github.com/lxn/win"
)
const (
    DESKTOP_SWITCHDESKTOP = 0x0100 // The access to the desktop
)
// get desktop locked status
func ScreenIsLocked() bool {
    // load user32.dll only once
    user32 := win.MustLoadLibrary("user32.dll")
    openDesktop := win.MustGetProcAddress(user32, "OpenDesktopW")
    closeDesktop := win.MustGetProcAddress(user32, "CloseDesktop")
    switchDesktop := win.MustGetProcAddress(user32, "SwitchDesktop")
    var lpdzDesktopPtr uintptr = uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr("Default"))) //string
    var dwFloatsPtr uintptr = 0                                                               //uint32
    var fInheritPtr uintptr = 0                                                               //boolean
    var dwDesiredAccessPtr uintptr = uintptr(DESKTOP_SWITCHDESKTOP)                           //uint32
    r1, _, _ := syscall.Syscall6(openDesktop, 4, lpdzDesktopPtr, dwFloatsPtr, fInheritPtr, dwDesiredAccessPtr, 0, 0)
    if r1 == 0 {
        panic("get desktop locked status error")
    }
    res, _, _ := syscall.Syscall(switchDesktop, 1, r1, 0, 0)
    // clean up
    syscall.Syscall(closeDesktop, 1, r1, 0, 0)
    return res != 1
}
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-02-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Golang语言社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档