C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[11]: vbscriptのメソッド名


(過去ログ 58 を表示中)

[トピック内 14 記事 (1 - 14 表示)]  << 0 >>

■32745 / inTopicNo.1)  vbscriptのメソッド名
  
□投稿者/ sikuminalex (1回)-(2009/02/13(Fri) 15:22:28)

分類:[VBScript] 

vbscriptにメソッド名を付けたいんですが、どの様にしたらいいですか。
javascriptから値を渡してvbsを実行する予定。
値を渡すのにメソッド名って必要じゃない?

<vbscript--------以下>
Dim xxx
xxx = "190.190.20.244"
MsgBox ( xxx )
Set objWMIService = GetObject("winmgmts:\\.")
Set PingSet = objWMIService.ExecQuery ("Select * From Win32_PingStatus Where Address = '" & xxx & "'")

For Each Ping In PingSet

Select Case Ping.StatusCode
Case 0
MsgBox "Success"
Case 11010
MsgBox "Request Timed Out"
Case Else
MsgBox "エラー"
End Select

Next
引用返信 編集キー/
■32776 / inTopicNo.2)  Re[1]: vbscriptのメソッド名
□投稿者/ ちゅき (24回)-(2009/02/14(Sat) 14:53:19)
お世話になっております。ちゅきと申します。

微妙にどういったことがされたいのか見えてこないのですが、単に引数つけたいだけですか?

CScript hogehoge.vbs param1,param2
とか。

であれば、Wscript.Arguments辺りで調べてみると幸せになれます。


No32745 (sikuminalex さん) に返信
> vbscriptにメソッド名を付けたいんですが、どの様にしたらいいですか。
> javascriptから値を渡してvbsを実行する予定。
> 値を渡すのにメソッド名って必要じゃない?
>
> <vbscript--------以下>
> Dim xxx
> xxx = "190.190.20.244"
> MsgBox ( xxx )
> Set objWMIService = GetObject("winmgmts:\\.")
> Set PingSet = objWMIService.ExecQuery ("Select * From Win32_PingStatus Where Address = '" & xxx & "'")
>
> For Each Ping In PingSet
>
> Select Case Ping.StatusCode
> Case 0
> MsgBox "Success"
> Case 11010
> MsgBox "Request Timed Out"
> Case Else
> MsgBox "エラー"
> End Select
>
> Next
引用返信 編集キー/
■32849 / inTopicNo.3)  Re[2]: vbscriptのメソッド名
□投稿者/ sikuminalex (2回)-(2009/02/16(Mon) 17:16:24)
No32776 (ちゅき さん) に返信
JavaScriptからある値(変数)を渡してvbsで処理って事をしようとしています。

JavaScriptで得たIPアドレスをVBSに渡してPingを打つ。
Pingを打ちたいので、VBSに変数(IP)を渡してやらないといけないんです。
なので、どぉやったらJavaScriptからVBSに値を渡せるかなと。

。。。


> お世話になっております。ちゅきと申します。
>
> 微妙にどういったことがされたいのか見えてこないのですが、単に引数つけたいだけですか?
>
> CScript hogehoge.vbs param1,param2
> とか。
>
> であれば、Wscript.Arguments辺りで調べてみると幸せになれます。
>
>
引用返信 編集キー/
■32853 / inTopicNo.4)  Re[3]: vbscriptのメソッド名
□投稿者/ ちゅき (25回)-(2009/02/16(Mon) 18:33:37)
呼び出し方は?

同一HTML内ですか?
それとも別ファイルですか?

同一HTML内であれば、関数の引数にすればOKかと。(例:下記の感じで)
別ファイルで呼び出すのなら、32776のようにしてもらったら結構かと。

<html>
<body>
<script language="VBScript">
Function VbMsgBox(szStr)
VbMsgBox=MsgBox(szStr)
End Function
</script>

<script language="JavaScript">
function VBKickTest()
{
var ret = VbMsgBox("123");
}
</script >
<input type="button" name="" value="JavaScript ⇒ VBScript" onclick="VBKickTest()"/>
</body>
</html>


No32849 (sikuminalex さん) に返信
> ■No32776 (ちゅき さん) に返信
> JavaScriptからある値(変数)を渡してvbsで処理って事をしようとしています。
>
引用返信 編集キー/
■32883 / inTopicNo.5)  Re[4]: vbscriptのメソッド名
□投稿者/ ちゅき (26回)-(2009/02/17(Tue) 11:16:51)
別ファイルの方も一応投稿しておきますです

【JScript側】
var obj = new ActiveXObject("WScript.Shell");
obj.Run("CScript \"c:\\Temp\\Test.vbs\" 192.168.0.1");
obj = null;

【VBScript側】c:\temp\test.vbs
MsgBox WScript.Arguments(0)

引用返信 編集キー/
■32887 / inTopicNo.6)  Re[5]: vbscriptのメソッド名
□投稿者/ biac (52回)-(2009/02/17(Tue) 11:57:48)
biac さんの Web サイト
> 同一HTML内ですか?

これ、 HTML のお話なの?

> var obj = new ActiveXObject("WScript.Shell");

すると、 これって、 IE のデフォルトでは、 "Automation server can't create object" になるんじゃ?
少なくともインターネットゾーンのデフォルトでは、 間違いなくエラーになるはずですよ。

Web での話だとすると、 ユーザー操作に関係無く ping を打つのも無理だと思う。
もし可能だったら、 それを人気サイトに仕込むことができさえすれば DoS 攻撃が成立してしまうので、 ブラウザの脆弱性として扱われて、 修正されてしまうはず。

引用返信 編集キー/
■33204 / inTopicNo.7)  Re[5]: vbscriptのメソッド名
□投稿者/ sikuminalex (3回)-(2009/02/23(Mon) 11:00:52)
ちゅきさん
ありがとうございます。

function cmd(190.190.20.244)
Set objWMIService = GetObject("winmgmts:\\.")
Set PingSet = objWMIService.ExecQuery ("Select * From Win32_PingStatus Where Address = '"190.190.20.244"'")

For Each Ping In PingSet

Select Case Ping.StatusCode
Case 0
MsgBox "Success"
Case 11010
MsgBox "Request Timed Out"
Case Else
MsgBox "エラー"
End Select

Next
end function

上記を実行時に行1、識別子がありません。というエラーが出てしまいます。
これは、なぜでしょうか。

No32883 (ちゅき さん) に返信
> 別ファイルの方も一応投稿しておきますです
>
> 【JScript側】
> var obj = new ActiveXObject("WScript.Shell");
> obj.Run("CScript \"c:\\Temp\\Test.vbs\" 192.168.0.1");
> obj = null;
>
> 【VBScript側】c:\temp\test.vbs
> MsgBox WScript.Arguments(0)
>
引用返信 編集キー/
■33211 / inTopicNo.8)  Re[6]: vbscriptのメソッド名
□投稿者/ ちゅき (27回)-(2009/02/23(Mon) 12:19:43)
> function cmd(190.190.20.244)
???
190.190.20.244 は何者? 変数で引数でもないので、単なる文法エラーかと。

同じファイル内から呼ばれるときの引数にしたいのでしたら
Function cmd(szIPAddr)
とでもしてください。

コマンドラインから呼ばれた時の引数を取りたいのであれば、WScript.Argumentsオブジェクトを使ってください。

> Set PingSet = objWMIService.ExecQuery ("Select * From Win32_PingStatus Where Address = '"190.190.20.244"'")
この行エラー出ませんか?
'190.190.20.244'
でいいような...


No33204 (sikuminalex さん) に返信
> ちゅきさん
> ありがとうございます。
>
> function cmd(190.190.20.244)
> Set objWMIService = GetObject("winmgmts:\\.")
> Set PingSet = objWMIService.ExecQuery ("Select * From Win32_PingStatus Where Address = '"190.190.20.244"'")
>
> For Each Ping In PingSet
>
> Select Case Ping.StatusCode
> Case 0
> MsgBox "Success"
> Case 11010
> MsgBox "Request Timed Out"
> Case Else
> MsgBox "エラー"
> End Select
>
> Next
> end function
>
> 上記を実行時に行1、識別子がありません。というエラーが出てしまいます。
> これは、なぜでしょうか。
>
> ■No32883 (ちゅき さん) に返信
>>別ファイルの方も一応投稿しておきますです
>>
>>【JScript側】
>>var obj = new ActiveXObject("WScript.Shell");
>>obj.Run("CScript \"c:\\Temp\\Test.vbs\" 192.168.0.1");
>>obj = null;
>>
>>【VBScript側】c:\temp\test.vbs
>>MsgBox WScript.Arguments(0)
>>
引用返信 編集キー/
■33212 / inTopicNo.9)  Re[7]: vbscriptのメソッド名
□投稿者/ ちゅき (28回)-(2009/02/23(Mon) 12:38:46)
2009/02/23(Mon) 21:26:32 編集(投稿者)

なんとなく、VBScript自体が作成されたものではなく、コピペのような気がしてイロイロ怖いのですが、3パターン記述してみました。

1)IPアドレス決め打ち
Set objWMIService = GetObject("winmgmts:\\.")
Set PingSet = objWMIService.ExecQuery ("Select * From Win32_PingStatus Where Address = '192.168.1.1'")

For Each Ping In PingSet

Select Case Ping.StatusCode
Case 0
MsgBox "Success"
Case 11010
MsgBox "Request Timed Out"
Case Else
MsgBox "エラー"
End Select

Next

2)同一ファイル内からの呼び出し
'【呼び出し元】
MsgBox cmd("192.168.1.1")
'【呼び出し先】
function cmd(szIPAddr)
Set objWMIService = GetObject("winmgmts:\\.")
Set PingSet = objWMIService.ExecQuery ("Select * From Win32_PingStatus Where Address = '" & szIPAddr & "'")

For Each Ping In PingSet

Select Case Ping.StatusCode
Case 0
cmd = "Success"
Case 11010
cmd = "Request Timed Out"
Case Else
cmd = "エラー"
End Select

Next
end function

【他ファイルからの呼び出し】
'【呼び出し元】
CScript filenameHogeHoge.vbs "192.168.1.1"
'【呼び出し先】
szIPAddr = WScript.Arguments(0)

Set objWMIService = GetObject("winmgmts:\\.")
Set PingSet = objWMIService.ExecQuery ("Select * From Win32_PingStatus Where Address = '" & szIPAddr & "'")

For Each Ping In PingSet

Select Case Ping.StatusCode
Case 0
cmd = "Success"
Case 11010
cmd = "Request Timed Out"
Case Else
cmd = "エラー"
End Select
MsgBox cmd
Next

引用返信 編集キー/
■33244 / inTopicNo.10)  Re[8]: vbscriptのメソッド名
□投稿者/ sikuminalex (4回)-(2009/02/24(Tue) 11:20:54)
ちゅき さん

返信ありがとうございます。
まず、"190.190.20.244"ですが自PCに割り振られたIPアドレスです。
まずは、自PCにて動作チェックをしようと思いました。

function cmd(190.190.20.244)←ここに入れたのは、引数とみなして
〜省略〜("Select * From Win32_PingStatus Where Address = '"190.190.20.244"'")←ここに反映できるかなと思いました。

プログラムがどんな構成かについて申します。

まず、現在Flexを使用しております。
そして、Flexで作られるswfファイルをhtmlから呼び出してブラウザに表示させます。
画面にあるボタン(Flexで作成)を押下して、対象PCがオンラインか調べます。

その時に、いきなりvbsを呼ぶ事ができないので、まずFlexからjavascriptに変数を渡します。(ボタンクリック時にIPアドレスをjavascriptに渡す)
次に、javascriptからvbsを呼び出し、変数(IPアドレス)を渡して返却値で判断すれば良いかなという構想です。

そぉしたときに、javascriptからvbsは呼び出せるけど変数ってどの様にして渡すのかと思いまして、質問させていただきました。


分かりずらいと思いますが、失礼します。



No33212 (ちゅき さん) に返信
> 2009/02/23(Mon) 21:26:32 編集(投稿者)
>
> なんとなく、VBScript自体が作成されたものではなく、コピペのような気がしてイロイロ怖いのですが、3パターン記述してみました。
>
> 1)IPアドレス決め打ち
> Set objWMIService = GetObject("winmgmts:\\.")
> Set PingSet = objWMIService.ExecQuery ("Select * From Win32_PingStatus Where Address = '192.168.1.1'")
>
> For Each Ping In PingSet
>
> Select Case Ping.StatusCode
> Case 0
> MsgBox "Success"
> Case 11010
> MsgBox "Request Timed Out"
> Case Else
> MsgBox "エラー"
> End Select
>
> Next
>
> 2)同一ファイル内からの呼び出し
> '【呼び出し元】
> MsgBox cmd("192.168.1.1")
> '【呼び出し先】
> function cmd(szIPAddr)
> Set objWMIService = GetObject("winmgmts:\\.")
> Set PingSet = objWMIService.ExecQuery ("Select * From Win32_PingStatus Where Address = '" & szIPAddr & "'")
>
> For Each Ping In PingSet
>
> Select Case Ping.StatusCode
> Case 0
> cmd = "Success"
> Case 11010
> cmd = "Request Timed Out"
> Case Else
> cmd = "エラー"
> End Select
>
> Next
> end function
>
> 【他ファイルからの呼び出し】
> '【呼び出し元】
> CScript filenameHogeHoge.vbs "192.168.1.1"
> '【呼び出し先】
> szIPAddr = WScript.Arguments(0)
>
> Set objWMIService = GetObject("winmgmts:\\.")
> Set PingSet = objWMIService.ExecQuery ("Select * From Win32_PingStatus Where Address = '" & szIPAddr & "'")
>
> For Each Ping In PingSet
>
> Select Case Ping.StatusCode
> Case 0
> cmd = "Success"
> Case 11010
> cmd = "Request Timed Out"
> Case Else
> cmd = "エラー"
> End Select
> MsgBox cmd
> Next
>
引用返信 編集キー/
■33250 / inTopicNo.11)  Re[9]: vbscriptのメソッド名
□投稿者/ sikuminalex (5回)-(2009/02/24(Tue) 15:19:36)
HTMLに組み込んだ下記コードを実行すると、
「エラー」と「undefined」が返ってきます。


function cmd(szIPAddr){
//var ip = szIPAddr;
//alert(szIPAddr);
//execScript(ttt(szIPAddr), VBScript);
rc = ttt(szIPAddr);
alert(rc);
}

</script>

<SCRIPT LANGUAGE="VBScript" type="text/vbscript">

function ttt(szIPAddr)
Set objWMIService = GetObject("winmgmts:\\.")
Set PingSet = objWMIService.ExecQuery ("Select * From Win32_PingStatus Where Address = 'szIPAddr'")

For Each Ping In PingSet

Select Case Ping.StatusCode
Case 0
MsgBox "Success"
Case 11010
MsgBox "Request Timed Out"
Case Else
MsgBox "エラー"
End Select

Next
end function

</SCRIPT>

ちなみに、VBSCIPTのみを拡張子.vbsにて実行すると「Success」が返ってきます。
この違いはなにが考えられますか。

-ping.vbs-

Set objWMIService = GetObject("winmgmts:\\.")
Set PingSet = objWMIService.ExecQuery ("Select * From Win32_PingStatus Where Address = '190.190.20.244'")

For Each Ping In PingSet

Select Case Ping.StatusCode
Case 0
MsgBox "Success"
Case 11010
MsgBox "Request Timed Out"
Case Else
MsgBox "エラー"
End Select

Next
引用返信 編集キー/
■33269 / inTopicNo.12)  Re[10]: vbscriptのメソッド名
□投稿者/ sikuminalex (6回)-(2009/02/24(Tue) 17:14:13)
No33250 (sikuminalex さん) に返信
> HTMLに組み込んだ下記コードを実行すると、
> 「エラー」と「undefined」が返ってきます。
>
>
> function cmd(szIPAddr){
> //var ip = szIPAddr;
> //alert(szIPAddr);
> //execScript(ttt(szIPAddr), VBScript);
> rc = ttt(szIPAddr);
> alert(rc);
> }
>
> </script>
>
> <SCRIPT LANGUAGE="VBScript" type="text/vbscript">
>
> function ttt(szIPAddr)
> Set objWMIService = GetObject("winmgmts:\\.")
> Set PingSet = objWMIService.ExecQuery ("Select * From Win32_PingStatus Where Address = 'szIPAddr'")
>
> For Each Ping In PingSet
>
> Select Case Ping.StatusCode
> Case 0
> MsgBox "Success"
> Case 11010
> MsgBox "Request Timed Out"
> Case Else
> MsgBox "エラー"
> End Select
>
> Next
> end function
>
> </SCRIPT>
>
> ちなみに、VBSCIPTのみを拡張子.vbsにて実行すると「Success」が返ってきます。
> この違いはなにが考えられますか。
>
> -ping.vbs-
>
> Set objWMIService = GetObject("winmgmts:\\.")
> Set PingSet = objWMIService.ExecQuery ("Select * From Win32_PingStatus Where Address = '190.190.20.244'")
>
> For Each Ping In PingSet
>
> Select Case Ping.StatusCode
> Case 0
> MsgBox "Success"
> Case 11010
> MsgBox "Request Timed Out"
> Case Else
> MsgBox "エラー"
> End Select
>
> Next
解決済み
引用返信 編集キー/
■33280 / inTopicNo.13)  Re[6]: vbscriptのメソッド名
□投稿者/ Azulean (303回)-(2009/02/24(Tue) 23:03:19)
解決されたんでしょうか?
個人的にはbiacさんが指摘されている事柄が気にかかりますが…。

No32887 (biac さん) に返信
> すると、 これって、 IE のデフォルトでは、 "Automation server can't create object" になるんじゃ?
> 少なくともインターネットゾーンのデフォルトでは、 間違いなくエラーになるはずですよ。
>
> Web での話だとすると、 ユーザー操作に関係無く ping を打つのも無理だと思う。
> もし可能だったら、 それを人気サイトに仕込むことができさえすれば DoS 攻撃が成立してしまうので、 ブラウザの脆弱性として扱われて、 修正されてしまうはず。
引用返信 編集キー/
■33389 / inTopicNo.14)  Re[11]: vbscriptのメソッド名
□投稿者/ sikuminalex (7回)-(2009/02/27(Fri) 09:58:59)
Azuleさん

下記のように修正したところ解決しました。

<■33269 / inTopicNo.12参照>
変更前> Set PingSet = objWMIService.ExecQuery ("Select * From Win32_PingStatus Where Address = 'szIPAddr'")
変更後> Set PingSet = objWMIService.ExecQuery ("Select * From Win32_PingStatus Where Address = '" & szIPAddr & "'")

>個人的にはbiacさんが指摘されている事柄が気にかかりますが…。
インターネットオプションの「ページの設定」でスクリプトの許可をすれば可能ではないでしょうか?
見当違いなこと言ってますかね。^^;

ちなみに何で下記のようなエラーが返ってくるのですか?^^;
> すると、 これって、 IE のデフォルトでは、 "Automation server can't create object" になるんじゃ?

少なくとも、現在、PING打ててます。
イメージとして、
HTML内のボタンクリック→CMD.exe起動→「PING *.*.*.*」→何が返ってくるかを受け取る。ってかんじなんですが。

自分のPCのCMDプロンプトからならどこでもPING打てると思うのですが。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -