• 締切済み

HTAが黙ってしまう

HTAを使ってスクリプトを書いています。 スクリプトが動いている時は画面が一切更新されない、黙ってしまうのは、ネットを見ると避けられないようです。 せめて、何らかの方法で実行状態を表示できないでしょうか。

みんなの回答

  • hitomura
  • ベストアンサー率48% (325/664)
回答No.3

Windows のスクリプト関連で困ったことがあったらこう叫ぼう。 Hey, Scripting Guy! ……というわけで、マイクロソフトのスクリプト関連のページを検索してみたら以下のようなページが見つかりました。ご参考までに。 Hey, Scripting Guy! HTA で時間のかかる処理を実行しているときにメッセージを表示したりカーソルの表示を変更したりする方法はありますか https://gallery.technet.microsoft.com/scriptcenter/1b1ca284-69cf-4c33-a77b-7edee0f515a7

remokon
質問者

お礼

返答ありがとうございます ご提示のホームページに行き、在中のコードを試しました。 しかし動作しませんでした。 残念です。

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.2

ANo1です。 タイポがありました。 m(__)m <hta:application applicationname="test")</hta:application>            ↓ <hta:application applicationname="test"></hta:application> ですね。

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

こんにちは。 よくわかってませんけれど、通常のHTMLでのアニメーションやなにかと同様に、アプリケーションに処理を一旦戻してあげれば良いのでは? 処理を必要に応じて分割しなければならなくなるので、面倒と言えば面倒ですが… ごく簡単なアニメーションの例(htaで実行してみてください) (全角空白は半角に) <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html lang="ja"> <head><title>sample</title> <meta http-equiv="Content-Style-Type" content="text/css"> <meta http-equiv="Content-Script-Type" content="text/javascript"> <hta:application applicationname="test")</hta:application> <style type="text/css"> p { margin-bottom:0.5em; } #bar { width:300px; height:20px; border:1px solid #666; border-color: #444 #DDD #DDD #444; } #bar div { width:0; height:100%; background-color:#8AE; } </style> </head> <body> <p><input type="button" value="start" onclick="hoge()"> ← Click to start <div id="bar"> <div></div> </div> <script type="text/javascript"> var hoge = (function(){  var grad = 0, tId;  var bar = document.getElementById("bar");  var max = bar.clientWidth;  bar = bar.getElementsByTagName("div")[0];  return function(){   if(!tId) tId = setInterval(fuga, 30);  }  function fuga(){   if(grad>=max){    clearInterval(tId); tId = null;    alert("PROCESS ENDED !");   }   bar.style.width = ++grad + "px";  } })(); </script> </body> </html>

remokon
質問者

お礼

返答ありがとうございます 実行して見ました。 プログレスバーですね。 私の質問に具体性が無かったです。 例えば、 for (var i=0; i < 1000; ++i) { 処理 } は時間が掛かります。”処理”に画面の変化が含まれていても、表面上、何も変わりません。 変わらなくてもいいのですが、せめてiの現在値を何らかの方法で知りたいです。 画面にiを表示するコードを書いても、画面全体の更新が止まっているので、当然表示されません。 ご提示のコードを使うと表示できるのですか。

関連するQ&A