中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-06 06:22
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [原创]定时重启或关闭计算机的小工具(修改版) 查看 2,393 回复 17
楼 主 [原创]定时重启或关闭计算机的小工具(修改版) 发表于 2007-04-19 15:52 ·  中国 浙江 杭州 电信
初级用户
积分 128
发帖 31
注册 2006-10-23 08:05
19年会员
UID 67855
性别 男
状态 离线
hta格式文件,截图如下:



源代码如下,保存为.hta后缀文件看效果:

<!--

/*--------------------Windows Timer---------------------------------------------

Description:一个用于定时重启或关闭计算机的小工具,适用于Windows 2K/XP/2003
Author:十一狼
Email:112183883@163.com
QQ:112183883
WebSite:http://www.w3cg.net/

-------------------------------------------------------------------------------*/

-->

<html>

<head>
<title>♀Windows系统计时器♀</title>
<meta http-equiv="content-type" content="text/html;charset=gb2312">

<hta:application
id="WTimer"
maximizebutton="No"
minimizebutton="Yes"
singleinstance="Yes"
contextmenu="Yes"
sysmenu="Yes"
version="1.0"
innerborder="No"
caption="Yes"
showintaskbar="Yes"
border="Normal"
borderstyle="Normal"
applicationname="Windows Timer"
icon="TimerIco.ico"
/>

<Style type="text/css">
<!--
* { font-family:Courier New,Arial,Sans-serif;font-size:9pt; }
body { overflow-y:hidden; }
div a:link,div a:visited { text-decoration:none;color:#000 }
div a:hover { text-decoration:underline;color:#f00 }
#footerinfo { width:100%;display:table;margin-top:5px; }
#left { float:left;width:70%; }
#right { float:right;width:29%;text-align:right;margin-right:1px; }
-->
</Style>

<Script Language="JavaScript">
<!--

$bl_Sleep=false;

function getObject($obj) {
return(document.getElementById($obj));
}

String.prototype.parseInt=function() {
return(parseInt(this));
}

function getRadioVal($name) {
$oEms=document.getElementsByName($name);
for ($i=0;$i<$oEms.length;$i++) {
if ($oEms.checked) { return($oEms.value); }
}
}

function isDeclared($varName) {
return(typeof($varName)!="undefined");
}

function chStatus($name,$status) {
$ooEms=document.getElementsByName($name);
for ($a=0;$a<$ooEms.length;$a++) {
$ooEms.disabled=$status;
}
}

function window.onload() {
$sWidth=window.screen.width;
$sHeight=window.screen.height;
$aWidth=400;
$aHeight=185;
window.resizeTo($aWidth,$aHeight);
window.moveTo(($sWidth-$aWidth)/2,($sHeight-$aHeight)/2);
document.bgColor="#d4d0c8";
getObject("StopButton").disabled=true;
getObject("left").innerHTML="提示:请选择您想要使用的功能!";
}

function Timer_Quit() {
window.close();
}

function Timer_Kernel() {
if ($bl_Sleep) {
if (isDeclared($time) && isDeclared($mod_time) && isDeclared($operation)) {
if ($time>0) {
$Oper_str="";
$Hint_str="";
$Titl_str="";
if ($operation=="rWin") {
$Oper_str="<span style=\"color:red\">提示:系统计时重启功能已启用,请注意保存!</span>";
}
else {
$Oper_str="<span style=\"color:red\">提示:系统计时关闭功能已启用,请注意保存!</span>";
}
if ($mod_time=="mod_minute") {
$tMinute=($time/60).toString().parseInt();
$tSecond=$time%60;
if ($tMinute!=0) {
if ($tSecond<10) {
$tSecond="0"+$tSecond;
}
$Titl_str="剩余时间:"+$tMinute+"分"+$tSecond+"秒";
}
else {
$Titl_str="剩余时间:"+$tSecond+"秒";
}
}
else {
$Titl_str="剩余时间:"+$time+"秒";
}
getObject("left").innerHTML=$Oper_str;
document.title=$Titl_str;
$time=$time-1;
$o=setTimeout("Timer_Kernel()",1000);
}
else {
$Flag="";
if ($operation=="rWin") {
$Flag=6; //6为重启操作系统
}
else {
$Flag=1; //1为关闭操作系统
}
OperateWin32($Flag);
getObject("left").innerHTML="<span style=\"color:red\">提示:正在执行预定操作!</span>";
document.title="正在执行预定操作";
}
}
}
}

function Timer_Stop() {
$bl_Sleep=false;
if (isDeclared($o)) { clearTimeout($o); }
getObject("time").disabled=false;
getObject("mod_time").disabled=false;
chStatus("operation",false);
getObject("StartButton").disabled=false;
getObject("StopButton").disabled=true;
getObject("left").innerHTML="提示:请选择您想要使用的功能!";
document.title="♀Windows系统计时器♀";
}

function Timer_Start() {
$bl_Sleep=true;
$nowTime="";
$time=getObject("time").value;
$mod_time=getObject("mod_time").value;
$operation=getRadioVal("operation");
if (isNaN($time) || $time=="") {
alert("请正确设定一个时间值! ");
getObject("time").select();
return;
}
else {
$time=$time.parseInt();
if ($mod_time=="mod_minute") { $time=$time*60; }
}
getObject("time").disabled=true;
getObject("mod_time").disabled=true;
chStatus("operation",true);
getObject("StartButton").disabled=true;
getObject("StopButton").disabled=false;
Timer_Kernel();
}

function OperateWin32($DownFlag) {
$OS_Pro=GetObject("WinMgmts:{(shutdown)}//./root/cimv2").ExecQuery("select * from win32_operatingsystem where primary=true");
for ($e=new Enumerator($OS_Pro);!$e.atEnd();$e.moveNext()) {
$getProcess=$e.item()
$getProcess.win32shutdown($DownFlag);
}
}

function ResponseKeyPress() {
if (event.keyCode==13) { event.keyCode=9; }
}

//-->
</Script>
</head>

<body>
<fieldset>
<table width="100%" border="1" cellpadding="4" cellspacing="3">
<form name="form1">
<tr>
<td width="25%">设定时间:</td>
<td width="75%"><input type="text" name="time" size="20" value="" onkeypress="ResponseKeyPress()" />
<select name="mod_time">
<option value="mod_minute">分钟</option>
<option value="mod_second">秒钟</option>
</select>
</td>
</tr>
<tr>
<td>功能选择:</td>
<td>
<input type="radio" name="operation" value="rWin" checked="checked" />重启
<input type="radio" name="operation" value="cWin" />关机
</td>
</tr>
<tr>
<td colspan="2" style="text-align:right">
<input type="button" name="StartButton" value=" 应用 " onclick="Timer_Start()" />
<input type="button" name="StopButton" value=" 取消 " onclick="Timer_Stop()" />
<input type="button" name="ExitButton" value=" 退出 " onclick="Timer_Quit()" />
</td>
</tr>
</form>
</table>
</fieldset>
<div id="footerinfo">
<div id="left"></div>
<div id="right">
作者:<a href="http://www.w3cg.net/" title="访问作者网志">十一狼</a>
</div>
</div>
</body>

</html>

补记:略微作了一点修改。。(4.19)

如有需要,请点击附件下载。

[ Last edited by 112183883 on 2007-4-20 at 10:57 AM ]
本帖最近评分记录 (共 3 条) 点击查看详情
评分人分数时间
bw070 +2 2007-04-20 00:03
htysm +2 2007-04-20 00:18
zh159 +9 2007-04-20 02:45
附件
♀Windows系统计时器♀.rar (5.74 KiB, 下载次数: 90)
2 发表于 2007-04-19 15:58 ·  中国 河北 保定 联通
银牌会员
★★★
积分 1,513
发帖 554
注册 2005-12-30 00:50
20年会员
UID 48180
性别 男
状态 离线
3 发表于 2007-04-19 23:38 ·  中国 安徽 蚌埠 电信
中级用户
★★
积分 292
发帖 137
注册 2007-04-03 01:59
19年会员
UID 83758
性别 男
状态 离线
貌似html和jave语言编写的
4 发表于 2007-04-19 23:56 ·  中国 安徽 蚌埠 电信
中级用户
★★
积分 292
发帖 137
注册 2007-04-03 01:59
19年会员
UID 83758
性别 男
状态 离线
挖哈哈 看了下 8错8错~回来顶一下!!!!
原来htm后缀改成hta有这种效果 学习了~~
呵呵 html还是会点 可以编程序了
谢谢了~ 学习了!

注释下:

HTA简介:HTA是HTML Application的缩写(HTML应用程序),是软件开发的新概念,直接将HTML保存成HTA的格式,就是一个独立的应用软件,与VB、C++等程序语言所设计的软件没什么差别。

[ Last edited by bw070 on 2007-4-19 at 10:58 AM ]
5 发表于 2007-04-20 00:19 ·  中国 安徽 芜湖 电信
高级用户
★★★
积分 866
发帖 415
注册 2005-12-04 11:19
20年会员
UID 46459
状态 离线
偶对HTML一窍不通,但还是加分。
欢迎你到批处理爱好者联盟QQ群:18023953
6 发表于 2007-04-20 00:22 ·  中国 安徽 芜湖 电信
高级用户
★★★
积分 866
发帖 415
注册 2005-12-04 11:19
20年会员
UID 46459
状态 离线
不过一个关机和重启的小问题,居然用这么长的代码,偶又觉得不值得,用一行代码就搞定那是最好不过的了。
欢迎你到批处理爱好者联盟QQ群:18023953
7 发表于 2007-04-20 00:36 ·  中国 广西 玉林 博白县 电信
金牌会员
★★★★
积分 3,687
发帖 1,467
注册 2005-08-08 12:00
20年会员
UID 44210
状态 离线
Originally posted by htysm at 2007-4-19 11:22:
不过一个关机和重启的小问题,居然用这么长的代码,偶又觉得不值得,用一行代码就搞定那是最好不过的了。

看看你能不能一行代码就搞定界面设置、设定时间、功能选择、倒计时显示、取消设定
8 发表于 2007-04-20 00:46 ·  中国 浙江 杭州 电信
初级用户
积分 128
发帖 31
注册 2006-10-23 08:05
19年会员
UID 67855
性别 男
状态 离线
呵呵,谢楼上各位,如楼上所说,我主要是想弄个界面,要说到功能,确实没添加啥功能,上面这个工具所具备的功能,大部份可以用很精简的VBS或BAT命令来实现,只是我这个人要么就不做,要么就做得漂亮一点,算是个凡事都趋向于完美的人吧。

有朋友说一行代码就能搞定,的确,但不知道你说的是用啥?rundll32.exe?shutdown?rundll32程序倒是可以实现,但需要对系统api有一个较深的认识,我想很多朋友可能都对那个东东不太熟悉吧。至于shutdown,只不过是对api的封装罢了,而且时间设定还不能超过600秒,也就是说十分钟,最要命的一点是2K不支持(不要告诉我说从XP上复制,呵呵,谢谢你对这个工具的关注,也多谢你的分哦)。

我习惯睡觉的时候把电脑开着,放点音乐听着睡,但郁闷的是常常听着听着就睡着了,而忘了关电脑,所以就弄了这么个小工具来帮我关机,呵呵,如果这个小东东还能为你带来那么一点点方便的话,我将深感荣幸!

[ Last edited by 112183883 on 2007-4-20 at 12:49 AM ]
9 发表于 2007-04-20 01:05 ·  中国 安徽 芜湖 电信
高级用户
★★★
积分 866
发帖 415
注册 2005-12-04 11:19
20年会员
UID 46459
状态 离线
shutdown -s -f -t 8888 -c "这个超过几小时了"
欢迎你到批处理爱好者联盟QQ群:18023953
10 发表于 2007-04-20 10:45 ·  中国 浙江 杭州 电信
初级用户
积分 128
发帖 31
注册 2006-10-23 08:05
19年会员
UID 67855
性别 男
状态 离线
谢谢楼上,学习了,我一直还以为shutdown只能设定600秒呢。
11 发表于 2007-04-20 11:18 ·  中国 广东 广州 鹏博士宽带
初级用户
★★
积分 176
发帖 78
注册 2007-04-15 10:53
19年会员
UID 85268
性别 男
状态 离线
偶下下来了,咋个用不起呢?
12 发表于 2007-04-20 11:20 ·  中国 广东 广州 鹏博士宽带
初级用户
★★
积分 176
发帖 78
注册 2007-04-15 10:53
19年会员
UID 85268
性别 男
状态 离线
以下为图片内容。
附件
未命名.JPG
13 发表于 2007-04-20 11:57 ·  中国 浙江 杭州 电信
初级用户
积分 128
发帖 31
注册 2006-10-23 08:05
19年会员
UID 67855
性别 男
状态 离线
将下面这一段从代码中删除后再试一下。

<!--

/*--------------------Windows Timer---------------------------------------------

Description:一个用于定时重启或关闭计算机的小工具,适用于Windows 2K/XP/2003
Author:十一狼
Email:112183883@163.com
QQ:112183883
WebSite:http://www.w3cg.net/

-------------------------------------------------------------------------------*/

-->
14 好用 发表于 2007-04-20 12:01 ·  中国 河北 秦皇岛 电信
初级用户
积分 68
发帖 32
注册 2007-04-01 12:12
19年会员
UID 83621
性别 男
状态 离线
想知道hta和html有什么不同啊?前面的是图形界面,后一个是网页形式,是不是还有其他区别啊!??

顶下
15 发表于 2007-04-20 12:04 ·  中国 浙江 杭州 电信
初级用户
积分 128
发帖 31
注册 2006-10-23 08:05
19年会员
UID 67855
性别 男
状态 离线
我这里很正常,截图:



你的是什么系统?
论坛跳转: