• ベストアンサー

HTAで、こんなボタンが作りたい。

HTA(HTML Applications)で簡単な操作パネル的なものを作ろうと思っています。 イメージしているものは、 ・『開始』ボタンを押下で外部ファイルa.vbsを実行し、ボタン上部のス   ペースに『稼動中』と表示。 ・『停止』ボタンを押下で外部ファイルb.vbsを実行し、ボタン上部のス   ペースに『非稼動中』と表示。 ・ボタンは1つで、始めは『開始』ボタンのみ。  『開始』を押下すると『停止』に変わる。 という感じです。  ボタン2つで片方をdisableでグレーアウトさせる、でも良いかと思っています。  アドバイス等有りましたらお願い致します。贅沢を言わさせていただくと、具体的なコードと簡単で構わないので解説して頂けたら幸いです。 OS:Windows98

  • mlk
  • お礼率25% (15/59)

質問者が選んだベストアンサー

  • ベストアンサー
  • SHIMAPEE
  • ベストアンサー率75% (154/203)
回答No.2

私も勉強がてら作ってみました。Windows XP SP2で確認しました。 ----- <HTML> <HTA:APPLICATION ID="oHTA" APPLICATIONNAME="easyPanel" SCROLL="no" INNERBORDER="no" MAXIMIZEBUTTON="no" MINIMIZEBUTTON="no" SINGLEINSTANCE="yes" /> <HEAD> <TITLE>easyPanel</TITLE> <STYLE> <!-- BODY { background-color: buttonface; } --> </STYLE> <SCRIPT> var Wsh = new ActiveXObject("WScript.Shell"); // ボタンが押された function buttonRun(){ if (window.form1.button1.value == "開始"){ form1.button1.value = "停止"; document.getElementById("label1").innerHTML = "稼動中"; Wsh.Popup ("a.vbs"); //Wsh.Run ("a.vbs"); } else{ form1.button1.value = "開始"; document.getElementById("label1").innerHTML = "非稼動中"; Wsh.Popup ("b.vbs"); //Wsh.Run("b.vbs"); } } // フォームがロードされた function Window_onLoad(){ window.resizeTo(150,120); // 好みで変更して下さい window.moveTo(0,0); } </SCRIPT> </HEAD> <BODY onLoad="Window_onLoad()"> <SPAN id="label1" >非稼動中</SPAN> <FORM name="form1"> <INPUT type="button" name="button1" value="開始" onClick="buttonRun()"> </FORM> </BODY></HTML> -----

その他の回答 (1)

  • Bonjin
  • ベストアンサー率43% (418/971)
回答No.1

とりあえずサンプルコード(解説無し)。 具体的に何がわからないのか書くと回答は得やすいです。 <html> <head> <script type="text/javascript"> var shell = new ActiveXObject("WScript.Shell"); function startProcess(){ shell.run("a.vbs"); state.innerText = "稼働中"; start_button.style.display = "none"; stop_button.style.display = "inline"; } function stopProcess(){ shell.run("b.vbs"); state.innerText = "非稼働中"; start_button.style.display = "inline"; stop_button.style.display = "none"; } </script> </head> <body> <div id="state">非稼働中</div> <input type="button" id="start_button" onclick="startProcess();" value="開始" /> <input type="button" id="stop_button" onclick="stopProcess();" value="停止" style="display:none;" /> </body> </html>

関連するQ&A

  • HTAで、こんなボタンを作成したい。

    手順書にそってバッチファイルを実行しているのですが、やり忘れなどを防ぐ為 HTA+VBSで簡単な操作パネル的(ボタン型ランチャー?)なものを作ろうと思っていますが、 どう作成してよいのやら不明です。 イメージしているものは、 『(1)設定』ボタンを押下で、(1)バッチファイル実行 Msg:(1)バッチファイルが終了しましたか[OK]   Msgをクローズして →『(1)設定』ボタンの色を赤に変える※過程が分かるようにしたいため   で上記のようなボタンを15個ぐらい作成。 ※途中で再起動しても、進行過程が残るようにしたいと思うのですが、ご教授願えますでしょうか。  具体的なコードと簡単で構わないので解説して頂けましたらと思います。  以上、よろしくお願いいたします。

  • htaファイルの呼び出し

    現在業務にて必要となる資料(フォルダやExcel、URL)へのアクセスをhtaファイル(今後A.htaとする)のボタン経由で 行っております。アクセスが必要となる資料の増加に伴い、ボタン経由で別ウィンドウ(別htaファイル=今後B.htaとする)を起動する 仕組みの構築を進めております。 そこでA.htaファイル内でVBScriptでB.htaファイルを起動する仕組みを作りました。しかしながら、ファイルサーバ上に 両htaファイルを配置し、実行したところ、B.htaファイル起動時に実行するかの確認ダイアログが出力されてしまいました。 このダイアログを出力しないようにしたいのですが、良い方法はございますでしょうか。 ※尚、そもそも本構成(hta実行をVBScriptで行っている)に問題がある場合は、ご指摘頂けますと幸いです。 ■A.htaファイル ==================================================================================================================================== Function submado() Set objWShell = CreateObject("WScript.Shell") objWShell.Run "submado.hta" End Function ~~~~~~~~割愛~~~~~~~~ <td><input type="button" class="btn-primary" value="サブウィンドウ" onclick="submado()" style="WIDTH: 200px; HEIGHT: 25px"></td> ====================================================================================================================================

  • この方法で固まるのを回避できる?

    アクセスにコマンドボタンをつけて、ボタンを押すとFileSystemObjectでファイル操作をするのですが その間アクセスがフリーズというか、実行中のため動くことができません。 このような場合、 VBSで同じ操作を作り、アクセスのコマンドボタンを押下→ Shell "WScript.exe で、vbs実行 をした場合、 アクセスにコマンドボタンを押してもアクセスは固まらずに処理が実行できるのでしょうか?

  • HTA + VBScript (+ Javascript)でコントロールボックスを制御できますか?

    HTA + VBScript(+ Javascript)で「特定のファイルをイントラネット内の別PC(Server)からコピーするツール」を作成しました。イメージ的にはフォーム上の「更新ボタン」をクリックするとコピーダイアログが表示されるようなものです。 このツールを使いファイルコピー中(コピーダイアログが表示されているとき)にHTAのフォームを終了するとプロセス上にmshta.exeが残りHTAを再度実行することができない状態になります。 そこで「コピー中のみHTAフォームに付随するコントロールボックスの×ボタンを無効にする」ような機能を追加したいのですが、HTA + VBScriptでコントロールボックスの制御に介入することはできるのでしょうか? コントロールボックス自体を非表示にすることはできますが認知度の高い表現なので残したいと考えています。 また、コピー中にHTAフォームのvisibilityをhiddenにしてフォームを隠しておく方法も考えたのですが、フォーム上にコピー中であることを示すメッセージを表示したりしているのでこの案もできれば採用したくありません。 何か良い方法がありましたら教えてください。よろしくお願いします。 OS:Windows XP Pro IE:Internet Explorer

  • 一つのボタンで再生と停止を行う方法

    今、HP上で動画の再生を考えています。 再生する動画ファイル(動画.swf)のファイルサイズが5MBぐらいです。ファイルサイズが大きい為、この動画.SWFを外部ファイルとしてもう一つ再生用フレーム(テレビ.swf)を作成し、そこから動画ファイルを読み込むようにしています。 この際に、テレビ.flaで再生ボタン、停止ボタン、一番初めに戻るボタン計3つを作成しています。 一応、全てのボタンを機能さすことができました。 再生ボタンは、loadmovieで動画.swfを読み込んでいます。停止ボタンは、動画.swfをstopかけます。 一番初めに戻るボタンも_root.動画.swf.gotoPlay(1)で出来ています。 なにをしたいかというと、停止ボタンで停止したのちもう一度、停止ボタンを押すと停止部分から再生されるようにしたいのです。 停止ボタンとプレイボタンを作成すればできますが、停止ボタンで停止と再生が出来ません。 それと、もう一つ。 メモリーを再生中動かしているんですが、動かすだけはできました。しかし、このメモリーを戻したり、進めたりが出来ません。どのようにすればいいのですか? すごく、大雑把な説明ですみません! 宜しくお願いします。

    • ベストアンサー
    • Flash
  • HTAで,親ウインドウを閉じると同時に子ウインドウも閉じる

    HTAを使っています。 *.htaのファイルにjavascriptを下記のとおり書いています。 目的は,親ウインドウで「閉じる」というボタンを押すことで 親ウインドウを子ウインドウを閉じるという動作をさせることです。 概ね上手く動きますが,子ウインドウが既に閉じられている状況で実行すると,「リモートサーバマシンが存在しないか,利用できません。」とエラーになります。 WINDOWS2000では問題無く動きますが,XPだとエラーが表示されます。 どうすれば,子ウインドウの状況によらず正常に動作するでしょうか? ########################################################## <input type="button" value="終了" onclick="closeWindow()" class="tukuru"> var subWin=""; //subWinをグローバル変数として宣言 function closeWindow(){ item1.style.display=""; setTimeout("end()",2000); } function end(){ if ( subWin.closed == false ) {; if(subWin.name+''=='OpenWindow'){; subWin.close(); }; }; window.close(); }

  • 処理実行中にボタンを非活性にして待機する

    お世話になっております。 作業マシン:WINDOWS Server2008 (仮想) 開発ツール:VWD2010(VB) 使用DB:SQLServer2008R2 にて、Webアプリを開発しております。 ASP.NET開発の経験はおおよそ1ヶ月程です。 【目的】 現在、ボタン押下時に外部ファイルを実行しておりまして、 (結果が戻るまで1分くらい) その間、ブラウザの操作を制限したいと考えています。 他のボタンを押したり、×ボタンで終了したり、 戻るキーで画面遷移したり…そういった操作の禁止です。 理想は、JavaScriptのconfirmを実行させたときの様な 「親画面が一切コントロールできない」状態ですが、 ボタンの非活性化(button.enabled=False とした画面での待機)等、 でもよいかと考えています。 【現状】 実行中 待機 などのキーワードで探しますと、 AJAXというキーワードがよく目に付きます。 よく目に付くという事は現行の主流なのかと思いますが、 JavaScriptでhtmlの動きを制限する程度の経験しかない今の自分には AJAXを理解して実装するまでには時間が掛かりそうです。 【相談内容】 今回、皆様にご教授願いたい事は、 時間のかかる処理を待つ間ブラウザ操作を制限するのに 比較的簡単に実現できる方法はないか?と、 その手段を教えて頂きたいのです。 また、以下の認識が正しいか、大きな誤りがあるか、教えてください。 --------ここから--------- プロセス実行中、ボタンを非活性にして待つのは、  「JavaScriptで各ボタンのbutton.enabled=False としてから  .vbファイルのbutton_clickイベント内でプロセス実行すれば言いだけでは?」 という認識の元、 外部JSファイル内に記載したJavaScript内で、 各ボタンのEnabled="False" を記述してやろうと思っています。 (現在外部JSファイル内の関数を呼ぶのに難儀する有様ですが。。) また、表示されてるhtmlソースのボタンタグ中にenabledは (.aspxに手動で記述を追記しても)表示されていません。 これでは enabledをFalseにする記述を書いてもブラウザ表示は変らないのでは…? --------ここまで---------- 本来、これほど焦点が定まっていない状態での質問は 回答してくださる皆様にも失礼とは思いますが、 それでも自力で方針を定める事が出来ず、相談致します。 何卒よろしくお願いします。

  • コマンドプロンプトを管理者として実行する方法

    2008Serverで、コマンドプロンプトを「検索の開始ボックス」から管理者として実行する方法は分かるのですが、 「ファイル名を指定して実行」からは、同じ方法では出来ません。 「ファイル名を指定して実行」から、管理者として実行できるのでしょうか? ちなみに、「検索の開始ボックス」からは、 "cmd" と入力後、"Ctrl" と "Shift" を押しながら "Enter" を押下すると、管理者として実行されます。

  • access2010/ポップアップ/自動カウント

    access2010を使用しています。 ポップアップで『10秒後に処理を開始します。』OKボタン、cancelボタン を表示したいと考えています。その後、 ポップアップを何もボタンを押下しなければ、自動的にマクロを実行したいです。 OKボタンを押せばすぐに処理が開始されます。 cancelボタンを押すと、処理は何もしません。 10秒は正確でなくても問題ありません。 Sleep (1000)等で1秒毎にカウントダウンし、それをForで繰り返し実行すれば出来そうですが、 ポップアップを表示しているときにそれが可能でしょうか? ご教授お願いします。

  • VBScript(WHS)でWMIを使ってリモートでvbsファイルを実行したい

    サーバAから、サーバBに置いてあるvbsファイル(Apache停止が書かれている)を実行して、サーバBのApacheを停止したいのですが、うまくいきません。 サーバBで単体でそのvbsファイルを実行すると、Apacheは正常に停止します。  戻り値は、0(プロセス完了)が帰ってきていて、接続はうまくいっているようなのですが、vbsファイルが実行されていないようです。  非常に困っておりまして、どなたか教えていただけないでしょうか? vbsファイルの実行のところが間違っているのかなと思うのですが・・・(今まだ会社にいないので、会社でのソースそのままではないですが、同じような感じです) -------------------------------------------- Option Explicit Dim strComputer Dim strUser Dim strPassword Dim strBAT ' ----------------------------------- ' 環境設定 ' ----------------------------------- strComputer = "サーバーB" strUser = "username" strPassword = "password" strBAT = "c:\hoge.bat" ' ----------------------------------- ' コマンド実行 ' ----------------------------------- Dim objWbemLocator Dim objWMIService Dim objWin32_Process Dim errReturn Dim intProcessID Const WbemAuthenticationLevelPktPrivacy = 6 ' リモートに接続 Set objWbemLocator = CreateObject("WbemScripting.SWbemLocator") Set objWMIService = objwbemLocator.ConnectServer _ (strComputer, "root\cimv2", strUser, strPassword) objWMIService.Security_.authenticationLevel = WbemAuthenticationLevelPktPrivacy ' Win32_Process クラスを生成 Set objWin32_Process = objWMIService.Get("Win32_Process") errReturn = objWin32_Process.Create _ ("cmd.exe /cscript C:\tmp\ApacheStop.vbs", Null, Null, intProcessID) WScript.Quit(errReturn ) もともとの要件は、機能ごとに分けたvbsファイル(Apache停止、Windows再起動、ファイルバックアップなど)を、各サーバで実行するというものです。その制御は、ひとつのバックアップサーバーで行います。

専門家に質問してみよう