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

option explicit
on error resume next
dim objie, objwshell
set objwshell = createobject("wscript.shell")
objwshell.appactivate "microsoft internet explorer"
set objie = createobject("internetexplorer.application")
objie.width = 380
objie.height = 100
objie.navigate "about:blank"
objie.document.write "<html><head><title>終了処理</title><script language='vbscript'>" & vbcrlf
objie.document.write "option explicit" & vbcrlf
objie.document.write "function osu()" & vbcrlf
objie.document.write "dim aaa" & vbcrlf
objie.document.write "Set aaa = CreateObject('Wscript.Shell')" & vbcrlf
objie.document.write "aaa.run 'wscript ログオフ.vbs', 1, true" & vbcrlf
objie.document.write "set aaa = nothing" & vbcrlf
objie.document.write "end function" & vbcrlf
objie.document.write "</script></head>" & vbcrlf
objie.document.write "<body bgcolor='#CCCCCC' style='overflow:hidden'><form name='form1'>" & vbcrlf
objie.document.write "<input type='button' name='button1' value='ログオフ' onClick='osu()'>" & vbcrlf
objie.document.write "</form></body></html>" & vbcrlf
objie.visible = true
objie.toolbar = false
objie.statusbar = false
objie.resizable = false
set objwshell = nothing
set objie = nothing

上記のプログラムを[.vbs]という拡張子で保存。
これは、vbsファイルをクリックするとIEの画面が出て、ログオフのボタンをクリックするとログオフするというものなのですが、うまくいきません。
vbsの中にまたvbsを記述しているからでしょうか?

A 回答 (3件)

まず念のため、今回 aonagi さんがセキュリティ設定を変更した IE はセキュリティ的に見て危険な状態になっているってことだけは認識しておいてくださいね。


インターネットのどこかのページに記述されている VBScript を実行してしまう可能性があります。
そのスクリプトにはレジストリを操作するコードが書かれている可能性もあります。

> ところで、どうやったらパソコンに詳しくなれますか?

これは新たに質問したほうがいいと思います。
コンピューター [技術者向け] > プログラミング > その他(プログラミング)
あたりがいいんじゃないでしょうかね。
http://oshiete1.goo.ne.jp/c260.html
    • good
    • 0

> しかし、ボタンをクリックしたら「エラー:ActiveXコンポーネントはオブジェクトを生成できません:wscript.shell」というのがでてきました。


> これはどんなエラーなのでしょうか?

だから言ったじゃないですか。
> コードの不具合は以上ですが、インターネット オプションでのセキュリティの問題が出そうですね。
> A) 上記書き込み元 VBScript によって生成されたページ
> B) A のソースを HDD に HTML として保存して開きなおしたページ
> A= インターネットゾーン
> B= マイ コンピュータ

VBScript の下記行をコメントアウトしてもう一度実行してみてください。
objie.statusbar = false
生成された IE ウィンドウのステータスバーに「インターネットゾーン」って表示されてますよね?
つまりセキュリティが一番堅い状態で実行されているのです。
普通にどこかのページを見ててページに表示されているボタンを押すとローカルにある VBScript ファイルを実行されちゃうのって問題ですよね?
それと同じ状態だ、と IE が判断してるのです。
当方 IE 7 ですが、インターネット オプションで [セキュリティ] タブで「インターネット」を選択して [レベルのカスタマイズ] をクリック。
「スクリプトを実行しても安全だとマークされていない ActiveX コントロールの初期化とスクリプトの実行(セキュリティで保護されていない)」を「有効にする(セキュリティで保護されていない)」にしてから実行してみてください。
実行すると IE のウィンドウ上部に「現在のセキュリティ設定では、お使いのコンピュータが危険にさらされています。セキュリティの設定を変更するには、ここをクリックしてください...」という説明が出ます。
この警告の×を押してもいいですが、かろうじてウィンドウに表示されている [ログオフ] ボタンをクリックすると "ログオフ.vbs" を実行しようとします。
(ログオフ.vbs の中身による実行結果は存じません・・・)

この回答への補足

見事に実行してくれました。
全てあなたのおかげです。本当にありがとうございました。
ところで、どうやったらパソコンに詳しくなれますか?

補足日時:2006/11/29 09:53
    • good
    • 0

こういう場合はまず、うまく行った場合をイメージし、実際に生成される(事を期待する)HTML を書いてみましょう。


すると VBScript がおかしい旨のエラーが出るはずです。
んでよーく見てみると、HTML に書かれているスクリプトがおかしいことに気づきます。
HTML のルールでは ' は " の代わりに使用できますが、
VBScript のルールでは ' はコメントであり、' よりも後ろがコメントアウトされてしまいます。
すると以下のようなスクリプトが書いてあることになってしまいます。
Set aaa = CreateObject(
aaa.run
(コメントと見なされる部分は書いてません)
したがって、ブラウザでホストされる VBScript 内で使っている ' を " に変える必要があるため、書き込み元の VBScript では下記のようにします。
objIE.Document.Write "Set aaa = CreateObject(""Wscript.Shell"")" & vbCrLf
objIE.Document.Write "aaa.run ""WScript ログオフ.vbs"", 1, true" & vbCrLf

コードの不具合は以上ですが、インターネット オプションでのセキュリティの問題が出そうですね。
A) 上記書き込み元 VBScript によって生成されたページ
B) A のソースを HDD に HTML として保存して開きなおしたページ
A= インターネットゾーン
B= マイ コンピュータ
がんばってください。

この回答への補足

適確な指示ありがとうございます。
今まではファイルをダブルクリックした時点でエラーが出ていましたが、今回からは出なくなりました。
しかし、ボタンをクリックしたら「エラー:ActiveXコンポーネントはオブジェクトを生成できません:wscript.shell」というのがでてきました。
これはどんなエラーなのでしょうか?

補足日時:2006/11/28 11:39
    • good
    • 0

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