アプリ版:「スタンプのみでお礼する」機能のリリースについて

HTA + VBScript(+ Javascript)で「特定のファイルをイントラネット内の別PC(Server)からコピーするツール」を作成しました。イメージ的にはフォーム上の「更新ボタン」をクリックするとコピーダイアログが表示されるようなものです。

このツールを使いファイルコピー中(コピーダイアログが表示されているとき)にHTAのフォームを終了するとプロセス上にmshta.exeが残りHTAを再度実行することができない状態になります。

そこで「コピー中のみHTAフォームに付随するコントロールボックスの×ボタンを無効にする」ような機能を追加したいのですが、HTA + VBScriptでコントロールボックスの制御に介入することはできるのでしょうか?

コントロールボックス自体を非表示にすることはできますが認知度の高い表現なので残したいと考えています。
また、コピー中にHTAフォームのvisibilityをhiddenにしてフォームを隠しておく方法も考えたのですが、フォーム上にコピー中であることを示すメッセージを表示したりしているのでこの案もできれば採用したくありません。

何か良い方法がありましたら教えてください。よろしくお願いします。

OS:Windows XP Pro
IE:Internet Explorer

A 回答 (2件)

別法です。

コピー自体は別プロセスであると割り切ってしまっては?

コピー自体(CopyHereメソッドと思われます)を別のVBSとして
保存し、ボタンのイベント処理ではRunメソッド(非同期)で、この
VBSを実行するようにします。非同期のRunメソッドはプロセス起動後
直ぐに制御を戻しますので、×ボタンでHTAを閉じてもmshta.exeが
残る可能性は殆どありません。
但し、コピーがいつ終了したかは直接確かめる方法がないので、
コピー中メッセージを表示しないか、VBSからHTA画面にSendKeysを
発行する等の方法で同期を取ります。

この回答への補足

アドバイスありがとうございます。仕組みは概ね理解しました。
時間が掛かると思いますが試してみたいと思います。

補足日時:2008/12/01 10:25
    • good
    • 0
この回答へのお礼

試験的にvbs外部ファイルを作成し試してみましたが、仰る通りHTAを閉じてもmshta.exeが残らないことを確認しました。
ありがとうございました。

お礼日時:2008/12/01 13:41

「閉じる」ボタンだけを抑止する方法は無いようです。


もし、C言語等でプログラムできるなら、画面のウィンドウハンドルを
使って制御することができます。
尚、SYSMENUを非表示にしても Alt + F4 で閉じますので、KeyDown
イベントで抑えておかないと「抜け道」が残ってしまいます。
    • good
    • 0
この回答へのお礼

やはりHTAではコントロールボックスに介入はできないのですね。。。
本職ではないのでプログラム言語は扱えないです。
現象の発生条件自体、通常使用では起こらないと思われるので仕様として残すことも考えます。
Alt + F4はとりあえずコントロールボックス制御が解決できてから考えようと思っておりました。

お礼日時:2008/11/27 18:11

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!