HTA
タイマー2017/09/25
HTAでタイマーアプリを作ってみた。
timer.htaとpop.vbsを同一のフォルダに配置しtimer.htaを起動することで使用可能。
時刻(時分)とメッセージを設定しチェックをつけると、その時刻になったらポップアップが表示される。
ポップアップを並列処理するために外部VBSを使用。
【入力画面】

【ポップアップ】

<!DOCTYPE html>
<html lang="ja">
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=9" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<title>タイマー</title>
<script type="text/vbscript">
Window.ResizeTo 310,300
</script>
<hta:application
scroll="no"
maximizeButton="no"
border="thin"
/>
<style>
div {
margin-bottom: 5px;
}
</style>
</head>
<body>
<div id="date0">
<input type="checkbox" class="cb"/>
<select class="date_h">
<option value="00" selected>00</option>
</select>
<select class="date_m">
<option value="00" selected>00</option>
</select>
<input type="text" class="message" />
</div>
<div id="date1">
<input type="checkbox" class="cb"/>
<select class="date_h">
<option value="00" selected>00</option>
</select>
<select class="date_m">
<option value="00" selected>00</option>
</select>
<input type="text" class="message" />
</div>
<div id="date2">
<input type="checkbox" class="cb"/>
<select class="date_h">
<option value="00" selected>00</option>
</select>
<select class="date_m">
<option value="00" selected>00</option>
</select>
<input type="text" class="message" />
</div>
<div id="date3">
<input type="checkbox" class="cb"/>
<select class="date_h">
<option value="00" selected>00</option>
</select>
<select class="date_m">
<option value="00" selected>00</option>
</select>
<input type="text" class="message" />
</div>
<div id="date4">
<input type="checkbox" class="cb"/>
<select class="date_h">
<option value="00" selected>00</option>
</select>
<select class="date_m">
<option value="00" selected>00</option>
</select>
<input type="text" class="message" />
</div>
<div id="date5">
<input type="checkbox" class="cb"/>
<select class="date_h">
<option value="00" selected>00</option>
</select>
<select class="date_m">
<option value="00" selected>00</option>
</select>
<input type="text" class="message" />
</div>
<div id="date6">
<input type="checkbox" class="cb"/>
<select class="date_h">
<option value="00" selected>00</option>
</select>
<select class="date_m">
<option value="00" selected>00</option>
</select>
<input type="text" class="message" />
</div>
<div id="date7">
<input type="checkbox" class="cb"/>
<select class="date_h">
<option value="00" selected>00</option>
</select>
<select class="date_m">
<option value="00" selected>00</option>
</select>
<input type="text" class="message" />
</div>
<div id="date8">
<input type="checkbox" class="cb"/>
<select class="date_h">
<option value="00" selected>00</option>
</select>
<select class="date_m">
<option value="00" selected>00</option>
</select>
<input type="text" class="message" />
</div>
<script type="text/javascript">
$(function(){
var D_MAX = 9;
var root, tar, op;
// オプションを追加
for(var i=0; i<D_MAX; i++){
// hにオプションを追加
root = $("#date" + i);
tar = root.find(".date_h");
for(var j=1; j<24; j++){
v = ("0" + j).slice(-2);
op = $("<option>").val(v).text(v);
tar.append(op);
}
// mにオプションを追加
tar = root.find(".date_m");
for(var j=1; j<60; j++){
v = ("0" + j).slice(-2);
op = $("<option>").val(v).text(v);
tar.append(op);
}
}
// 1秒毎にデータをチェックし、必要に応じてメッセージを表示
setInterval(function(){
var dd = new Date();
var now = ("0" + dd.getHours()).slice(-2) + ":" + ("0" + dd.getMinutes()).slice(-2);
for(var i=0; i<D_MAX; i++){
root = $("#date" + i);
if(root.find(".cb").prop("checked")){
var time = root.find(".date_h").val();
time = time + ":";
time = time + root.find(".date_m").val();
if(time == now){
var mes = time + "になりました。\n" + root.find(".message").val();
msgVB(mes);
root.find(".cb").prop("checked", false);
}
}
}
}, 1000);
});
</script>
<script type="text/vbscript">
Function msgVB(text)
Set objWshShell = CreateObject("WScript.Shell")
objWshShell.Run "pop.vbs """ + text + """",,False
Set objWshShell =Nothing
End Function
</script>
</body>
</html>
pop.vbs
MsgBox Wscript.Arguments(0), vbOKOnly + vbSystemModal, "タイマー通知"