VB可以做到每天定时关机的程序
比如我在窗体里设置了6点关机,然后就会后台运行,然后6点关机,开机自启动安装在电脑里,每天定时自动关机,各位大神求解答.求源码!!...
比如我在窗体里设置了6点关机,然后就会后台运行,然后6点关机,开机自启动
安装在电脑里,每天定时自动关机,各位大神求解答.
求源码!! 展开
安装在电脑里,每天定时自动关机,各位大神求解答.
求源码!! 展开
3个回答
展开全部
我也是建议你用windows系统本身的计划任务来实现,兼容性最好,不用编程。
自己编程的话,技术上很简单,几乎没啥技术含量,就是像一楼说的用shell调用shutdown,也可以调用API函数来实现,只要用个Timer控件每隔一分钟循环一次,判断当前时间是否6点整(下午的六点就是18点整),是就执行关机代码即可。
但是,难点是,不管你怎么弄,这种需要开机自启动的小程序肯定会被360、管家之类的安全软件拦截的,除非你按照它们的提示去认证然后缴纳一定的保护费,否则就只能希望你的软件用户的电脑没装这些安全软件了。当然,如果只是你自己用的,你可以把你的软件加入它们的白名单。
自己编程的话,技术上很简单,几乎没啥技术含量,就是像一楼说的用shell调用shutdown,也可以调用API函数来实现,只要用个Timer控件每隔一分钟循环一次,判断当前时间是否6点整(下午的六点就是18点整),是就执行关机代码即可。
但是,难点是,不管你怎么弄,这种需要开机自启动的小程序肯定会被360、管家之类的安全软件拦截的,除非你按照它们的提示去认证然后缴纳一定的保护费,否则就只能希望你的软件用户的电脑没装这些安全软件了。当然,如果只是你自己用的,你可以把你的软件加入它们的白名单。
展开全部
能做,比较麻烦,你为何不用计划任务实现?
VB中用下面代码就可以做到强制关机
Shell "shutdown -s -f -t 0"
注册表添加自动启动(函数定义比较多,我不写出来了)
Dim AppPath As String, Res As Long, KeyHand As Long, StrValue As String
AppPath = App.Path & IIf(Len(App.Path) > 3, "\", "") & App.EXEName & ".exe"
'访问注册表查看是否已注册为自动启动
Res = RegOpenKey(HKEY_CURRENT_USER, "software\microsoft\windows\currentversion\run", KeyHand)
StrValue = String(LenB(AppPath), Chr(0))
Res = RegQueryValueEx(KeyHand, App.EXEName, 0, REG_SZ, ByVal StrValue, LenB(AppPath))
Res = RegCloseKey(KeyHand)
StrValue = Left$(StrValue, Len(AppPath)) '去掉空余字符串CHr(0)
If StrValue = AppPath Then Exit Sub '已注册为自动启动,退出保存
MsgBox " 您选择了“开机自动启动”,程序会将自动启动信息写入注册表," _
+ vbCrLf + vbCrLf + "留意安全软件的动作,请允许本程序访问、修改注册表自动启动项!", 4160, "注意!"
'fCreateShellLink "启动", App.EXEName, AppPath, "", True, "$(Programs)" '添加到自动启动
'通过注册表添加到自动启动
Res = RegCreateKey(HKEY_CURRENT_USER, "software\microsoft\windows\currentversion\run", KeyHand)
Res = RegSetValueEx(KeyHand, App.EXEName, 0, REG_SZ, ByVal AppPath, LenB(AppPath))
Res = RegCloseKey(KeyHand)
Else '删除自动启动
Res = RegCreateKey(HKEY_CURRENT_USER, "software\microsoft\windows\currentversion\run", KeyHand)
Res = RegDeleteValue(KeyHand, App.EXEName)
Res = RegCloseKey(KeyHand)
VB中用下面代码就可以做到强制关机
Shell "shutdown -s -f -t 0"
注册表添加自动启动(函数定义比较多,我不写出来了)
Dim AppPath As String, Res As Long, KeyHand As Long, StrValue As String
AppPath = App.Path & IIf(Len(App.Path) > 3, "\", "") & App.EXEName & ".exe"
'访问注册表查看是否已注册为自动启动
Res = RegOpenKey(HKEY_CURRENT_USER, "software\microsoft\windows\currentversion\run", KeyHand)
StrValue = String(LenB(AppPath), Chr(0))
Res = RegQueryValueEx(KeyHand, App.EXEName, 0, REG_SZ, ByVal StrValue, LenB(AppPath))
Res = RegCloseKey(KeyHand)
StrValue = Left$(StrValue, Len(AppPath)) '去掉空余字符串CHr(0)
If StrValue = AppPath Then Exit Sub '已注册为自动启动,退出保存
MsgBox " 您选择了“开机自动启动”,程序会将自动启动信息写入注册表," _
+ vbCrLf + vbCrLf + "留意安全软件的动作,请允许本程序访问、修改注册表自动启动项!", 4160, "注意!"
'fCreateShellLink "启动", App.EXEName, AppPath, "", True, "$(Programs)" '添加到自动启动
'通过注册表添加到自动启动
Res = RegCreateKey(HKEY_CURRENT_USER, "software\microsoft\windows\currentversion\run", KeyHand)
Res = RegSetValueEx(KeyHand, App.EXEName, 0, REG_SZ, ByVal AppPath, LenB(AppPath))
Res = RegCloseKey(KeyHand)
Else '删除自动启动
Res = RegCreateKey(HKEY_CURRENT_USER, "software\microsoft\windows\currentversion\run", KeyHand)
Res = RegDeleteValue(KeyHand, App.EXEName)
Res = RegCloseKey(KeyHand)
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
也有简单办法,仅仅给启动项传文件:
用记事本在里面写:
at 22:00 ShutDown -s -t
.txt后缀改成 .bat
直接把他复制到启动项文件夹。一切就OK
下次你要改就以记事本打开他,时间改下就好了。
你还用VB写注册表,不是拿高射炮打蚊子吗?VB语言有他自己的用途,不是狗拿耗子的事情,就好比本来是匹马,偏偏杂交成骡子来用
用记事本在里面写:
at 22:00 ShutDown -s -t
.txt后缀改成 .bat
直接把他复制到启动项文件夹。一切就OK
下次你要改就以记事本打开他,时间改下就好了。
你还用VB写注册表,不是拿高射炮打蚊子吗?VB语言有他自己的用途,不是狗拿耗子的事情,就好比本来是匹马,偏偏杂交成骡子来用
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询