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, "タイマー通知"