*VBScriptです。
お世話になります、よろしくお願いします。
ある親画面から呼び出される子画面を作成しました。その子画面で、
タイトルを指定してメッセージボッククスを表示させようとしているのですが、
メッセージボックスのタイトルがVBSCript:(タイトル)という形になってしまいます。
どうしてこのような現象になるのか、不思議です。
VBScriptという文字列を取り除くにはどうしたらよいでしょうか。
ブラウザに表示させたHTML上のスクリプトでしょうか?
であれば、その部分は取り除けません。
呼び出し元が HTML Application(*.hta) などになっているならば、
そうしたメッセージは表示されないのですが、HTMLの場合は、
セキュリティ上の理由から、スクリプトが出しているメッセージである事を
隠すことができないよう、必ずVBScript:と表示される仕様になっています。
魔界の仮面弁士さん
お返事ありがとうございます。
>必ずVBScript:と表示される仕様になっています。
そうなんですか!?びっくりです。
親画面(*.htmlフォーム)でも同様の処理を行っていますが、メッセージボックスのタイトルは指定した通りのものが表示されており、特に「VBScript」等の文字列はありません。
どういう仕組みによるものなのでしょうか。
(.NETを使って開発したから・・・とか? うーむ。)
>> 必ずVBScript:と表示される仕様になっています。
> そうなんですか!?びっくりです。
ヘルプにも、『常に "VBScript:"が含まれ』ると明記されていますよね。
http://www.microsoft.com/japan/msdn/library/ja/script56/html/vsfctMsgBox.asp
》Microsoft Internet Explorer で MsgBox 関数が使用されている場合は、
》表示されるダイアログ ボックスのタイトルに常に "VBScript:"が含まれ、
》標準のシステム ダイアログ ボックスと区別されます。
>(.NETを使って開発したから・・・とか? うーむ。)
再現可能なコードが提示されないと、具体的な判断はできないです。
# 実は MsgBox ではなく、showModalDialogのウィンドウだったとか……
# 実は ActiveXで表示させていたとか……(WScript.Shell等)
お返事ありがとうございます。
メッセ0時ボックスは常に
MsgBox "Hello!, strMsgTitle
として表示させています。
ただ、親画面ではWScriptを多用しています。
※子画面では一箇所しか使用していません。
MsgBoxのタイトルに「vbScript:」と表記されるものとそうでないものの
相違点を検出しようとしていたのですが、うまく検出できません。
親画面のコードを適当に抜き出してMsgBoxを表示させていると
はじめ3・4度実行する間はタイトルは指定どおりものが表示されているのですが、何度か繰り返すうちに「VBScrpit:」の文字列が表示されるようになったりします。
> ただ、親画面ではWScriptを多用しています。
具体的には、どのようなコードでしょうか?
……そもそも、WScriptを使った場合って、ブラウザからの起動の場合には、
何らかの警告が出ませんか? たとえば、
『このページの ActiveX コントロールは、安全ではない
可能性があり、ページのほかの部分に影響する可能性が
あります。ほかの部分に影響しても問題ありませんか?』
とか。(セキュリティ設定の度合いなどにもよりますが)
で。もしも本当に WScript を使えるのであれば、たとえば
CreateObject("WScript.Shell").Popup "本文", 5, "タイトル", vbInformation
などとすれば、タイトルにVBScriptが含まれる事は無いはずですよ。
また、ブラウザ実行ではなく、WSH をホストとして、*.wsf や、*.vbs 等で
実行されている場合は、VBScript標準の MsgBox を使っても、タイトル部に
"VBScript:"の文字列が表示される事は無いと思います。
> うまく検出できません。
再現するソースをお持ちのみみさんですら、原因箇所を特定できないと
なると、ソースすら持っていない当方では、ほとんど答えようが無いです…。
現象を再現可能な、最低限のソースを提示することは可能ですか?
ソースの提示が無理なようであれば、なんとか自力で、その原因箇所だけでも
特定してみてください。どのような時に再現するのかさえわかれば、
何かアドバイスできる事があるかも知れませんので。
お返事ありがとうございます。
>……そもそも、WScriptを使った場合って、ブラウザからの起動の場合に>>は、
>何らかの警告が出ませんか?
IEのセキュリティの設定を変更して、警告ダイアログが出ないようにしています。
>また、ブラウザ実行ではなく、WSH をホストとして、*.wsf や、*.vbs 等で
>実行されている場合は、VBScript標準の MsgBox を使っても、タイトル部に
>"VBScript:"の文字列が表示される事は無いと思います。
確かに親画面では .vbsファイルに定義して子画面では<Script>タグの中に記述しているのですが、「これが原因か?」と考え、子画面でも.vbsファイルにコードを記述する方法に変えましたがやはりMsgBoxのタイトルはVBScriptのままです。
以下のコードは共通部品の一部です。
const strMsgTitle = "ABC"
'画面の閉じるボタン処理です。
private Sub WinClose()
ans = MsgBox( "画面を閉じます。" & vbCrLf & "よろしいですか?",vbOkCancel , strMsgTitle )
if ( ans = 1 ) then
parent.close()
End if
End Sub
やはりタイトルにVBScriptの文字はありません。
それ、本当に現象の再現するコードそのままですか?
VBScriptでは、インデントに全角空白は使えなかったような……。
> やはりタイトルにVBScriptの文字はありません。
一応、提示されたコードでサンプルを書いてみました。
http://www.ocv.ne.jp/~oratorio/junk/Sample/37/A.HTML
そちらの環境では、このコードで「VBScript:」が表示されない
状態になっている、という事なのでしょうか? もしそうであれば、
OSのバージョンとIEのバージョンを教えて下さい。m(_ _)m
変なコードを提示してしまいました。もうしわけありません。
全角スペースでなく、半角スペースが正しいです。
魔界の仮面弁士さんに作成していただいたコードではメッセージボックスのタイトルに「vbScript」
の文字がありますね。
私が コードを「.vbs」として保存して実行すると表示されません。
「.html」ファイルにしても表示されません。
XP Professional Version2002
IE 6.0
です。
ツイート | ![]() |