【VBScript】WSHについて話し合うスレ【JScript】 (181レス)
上下前次1-新
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
173(1): 07/16(水)12:44 ID:09DhhKQk(1) AAS
もうV8でええやん
COM載せるだけでしょ
174: 07/16(水)15:03 ID:8VyoLyXs(1) AAS
>>173
JSのメソッドディスパッチ自体にOLEオートメーションと互換を持たせないといけないからなあ
MS製以外のエンジンを使うなら大改造になる
175: 08/07(木)11:13 ID:dOHm8u8G(1/3) AAS
HTAでWScriptの標準入出力Stdin/Stdoutを使う方法はありますか?
という疑問でwebを漁ってたら、以下のコードを見つけたのですが、
これは何をしているか判りますか
外部リンク:www.roy.hi-ho.ne.jp
の
>Set oExec=wShell.Exec("MSHTA〜
>oExec.StdIn.Write fso.OpenTextFile(Left(WScript.ScriptFullName,InStrRev(WScript.ScriptFullName,"."))&"HTA").ReadAll
>oExec.StdIn.Close
の辺り。〜は専ブラだとバグる
176: 08/07(木)16:01 ID:Pp4oXF33(1/3) AAS
意味がよくわからない
「WScript」がcscript.exeではなくwscript.exeのことなら元から標準入出力しても何も起きないけど多分そういう話ではないよね
そのソースコードは、mshta.exeを子プロセスとして起動してテキストファイルから読み込んだ内容をその子プロセスの標準入力に流してる
mshta.exeの側では標準入力から読み取った内容を実行してる
177: 08/07(木)16:53 ID:dOHm8u8G(2/3) AAS
元々HTAとpowershell間のプロセス間通信を考えてました
WSH(WScript)とpowershellでの通信はできていたので、
ならばHTAからWScript.Stdin/Stdout相当をどうにかして得られないかという疑問に代わりました
さてGetStandardStream(0)でStdinを得るまでは何となく判りますが
そのハンドルでReadAll()これの意味が判らない
結果的にoExecにはWScript相当?が入るようですが
178: 08/07(木)17:25 ID:Pp4oXF33(2/3) AAS
あー了解
で、oExecに入るのはwShell.Exec()の結果で、起動したmshta.exeのプロセスをラップしたWshScriptExecオブジェクト
oExec.StdIn.Writeでmshta.exeの標準入力に内容を書き込んでる、これがWSH側でやってること
MSのサイトですらリンク切れしまくってたけどitmediaに解説が残ってた 外部リンク[html]:atmarkit.itmedia.co.jp
179(1): 08/07(木)17:28 ID:Pp4oXF33(3/3) AAS
GetStandardStream(0).ReadAll() を実行しているのは起動されたHTAの側で、標準入力から読み込んだ内容を実行してる
リンク先サンプルだとその内容はH.HTAで、その後は裏で起動させたIEを通じてやり取りをする…という実験っぽい
というわけでHTAで標準入出力を使うには new ActiveXObject('Scripting.FileSystemObject').GetStandardStream() だけでいいと思う
手元で確認したわけではないので違ってたらごめん
180: 08/07(木)20:06 ID:dOHm8u8G(3/3) AAS
>>179
WshScriptExecというのですね
色々ありがとうございます
181: 08/07(木)21:37 ID:FIb4oE/e(1) AAS
Exec メソッド
外部リンク:learn.microsoft.com
GetStandardStream Method
外部リンク:learn.microsoft.com
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.005s