golang可不可以控制window定时关机,应该如何操作
导读:关于“golang可不可以控制window定时关机,应该如何操作”的知识点有一些人不是很理解,对此小编给大家总结了相关内容,文中的内容简单清晰,易于学习与理解,具有一定的参考学习价值,希望能对大家有所帮助,接下来就跟随小编一起学习一下“go...
关于“golang可不可以控制window定时关机,应该如何操作”的知识点有一些人不是很理解,对此小编给大家总结了相关内容,文中的内容简单清晰,易于学习与理解,具有一定的参考学习价值,希望能对大家有所帮助,接下来就跟随小编一起学习一下“golang可不可以控制window定时关机,应该如何操作”吧。
下面由golang教程栏目给大家介绍golang编写一个window定时关机 ,希望对需要的朋友有所帮助!
代码如下:
package mainimport (
"flag"
"fmt"
"github.com/robfig/cron"
"time")import (
. "github.com/CodyGuo/win")var (
arg string)func init() {
flag.StringVar(&
arg, "uFlags", "shutdown", "shutdown logoff reboot")}
func main() {
flag.Parse()
c := cron.New(cron.WithSeconds())
c.AddFunc("0 40 18 * * ?", shutdown)
c.Start()
select {
}
switch arg {
case "logoff":
logoff()
case "reboot":
reboot()
case "shutdown":
shutdown()
default:
fmt.Println("您输入的参数有误.")
}
}
func Test(){
fmt.Println(time.Now())}
func logoff() {
ExitWindowsEx(EWX_LOGOFF, 0)}
func reboot() {
getPrivileges()
ExitWindowsEx(EWX_REBOOT, 0)}
func shutdown() {
getPrivileges()
ExitWindowsEx(EWX_SHUTDOWN, 0)}
func getPrivileges() {
var hToken HANDLE var tkp TOKEN_PRIVILEGES OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY, &
hToken)
LookupPrivilegeValueA(nil, StringToBytePtr(SE_SHUTDOWN_NAME), &
tkp.Privileges[0].Luid)
tkp.PrivilegeCount = 1
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED AdjustTokenPrivileges(hToken, false, &
tkp, 0, nil, nil)}
cron表达式
c.AddFunc("0 40 18 * * ?", shutdown)
以上就是关于“golang可不可以控制window定时关机,应该如何操作”的介绍了,感谢各位的阅读,希望文本对大家有所帮助。如果想要了解更多知识,欢迎关注网络,小编每天都会为大家更新不同的知识。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: golang可不可以控制window定时关机,应该如何操作
本文地址: https://pptw.com/jishu/654468.html
