小编给大家分享一下golang编写一个window定时关机的方法,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!
创新互联于2013年开始,先为郧西等服务建站,郧西等地企业,进行企业商务咨询服务。为郧西企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。代码如下:
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定时关机的方法”有了一定的了解,如果想了解更多相关知识,欢迎关注创新互联行业资讯频道,感谢各位的阅读!