Go 调用 Windows 的系统 API,检测是否锁屏
因为应用需要根据当前电脑是否处于活跃状态来执行不同的动作,所以需要获取电脑当前活跃的窗口判断是否处于锁屏
可以通过调用Windows 的库来执行相应的API
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| import ( "log" "syscall" )
func main() { const successCallMessage = "The operation completed successfully." user32 = syscall.NewLazyDLL("user32.dll") getForegroundWindow = user32.NewProc("GetForegroundWindow") activeWindowId, _, err := getForegroundWindow.Call()
if err != nil && err.Error() != successCallMessage { log.Println(err) } log.Println("activeWindowId:", activeWindowId) }
|
当调用成功后时,会返回三个结果,第一个是当前活跃的窗口 ID,当 ID 为 0 时,就说明处于锁屏状态;第三个参数是操作信息,如果成功内容就是The operation completed successfully.
这个函数没有入参,所以直接通过Call()调用,函数的详细信息可以参考微软提供的API GetForegroundWindow function
其他的函数调用也是一样,不同的是传入的参数和返回的结果,但调用过程是一样的
参考文章