25/05/29 21:42:09.94 0idVFWvA.net
何年も使ってたけど、どこまでがVBSの範囲で
どこまでがWSHの範囲なのか結局分からなかった
分からないまま終焉していくのか
ま、いいけどね
163:デフォルトの名無しさん
25/07/10 08:06:59.01 qdcZv+SG.net
JScript9Legacy scripting engine now enabled by default
URLリンク(techcommunity.microsoft.com)
164:デフォルトの名無しさん
25/07/11 21:16:13.41 8Jrrp3Hi.net
jscriptは永遠に不滅という事か
165:デフォルトの名無しさん
25/07/12 10:50:29.22 tq7D7WVM.net
はるか昔 JSCript で ASP のプログラム書てたらなんか1秒ずれるバグがあった。
166:デフォルトの名無しさん
25/07/12 13:17:24.06 82oECP5w.net
× VBS
○ JScript
なんで?
167:デフォルトの名無しさん
25/07/12 14:00:46.62 5xrlF3qV.net
C系のJSとC#に選択と集中するから、VB系のVBSとVB.NETはもういらない子なんだろ
168:デフォルトの名無しさん
25/07/12 15:24:01.11 S1CHvytp.net
本気でWSHを続ける気があるならPowerShellもWSHに乗せてwscript/cscriptで実行できるようにするはずだろうから
WSH自体を弄る気はもうないんだろうなあとは思う
JScriptはたまたま切り替え可能な新し目のバージョン(といってもIE最終のやつだろ?)が既にあったので延命されただけで
やっぱりそのうち捨てられるのではないかな…
169:デフォルトの名無しさん
25/07/12 21:34:50.16 ItUByElJ.net
JScript9とJScript9Legacyの違いが分からん
170:デフォルトの名無しさん
25/07/12 22:16:54.10 ytUpmijL.net
今後はあくまでLegacyとしてメンテするということの表明じゃね?
main streamじゃないんだから、いつ切られても文句は言うなよ、ということで
171:デフォルトの名無しさん
25/07/12 23:30:28.15 dVfBjDe9.net
旧EdgeのChakraエンジン「 /E:{1B7CD997-E5FF-4932-A7A6-2A9E636DA385} 」がしれっと無効化されてるのは、管理機能を含むOSのコア部分で使われてなかったりするからなんだろうか?
WSHで唯一モダンな構文が使えるエンジンだったのに...
172:デフォルトの名無しさん
25/07/15 10:50:58.19 1v3q9PKm.net
そのJScript9LegacyがChakraらしい
URLリンク(windowsforum.com)
検証求む
URLリンク(blog.macorin.net)
173:デフォルトの名無しさん
25/07/15 12:42:37.44 J6nh+lbb.net
>>172
JScript9は「IE11搭載のChakraエンジン(jscript9.dll)」で、「旧EdgeのChakraエンジン(chakra.dll)」とは別モノ
JScript9Legacyは、JScriptとの非互換性(JScript9にはWScript.Quit()がない、など)を解消しつつ既知の脆弱性を塞いだ(あるいは緩和した)バージョンのように思える
174:デフォルトの名無しさん
25/07/16 12:44:55.22 09DhhKQk.net
もうV8でええやん
COM載せるだけでしょ
175:デフォルトの名無しさん
25/07/16 15:03:42.67 8VyoLyXs.net
>>174
JSのメソッドディスパッチ自体にOLEオートメーションと互換を持たせないといけないからなあ
MS製以外のエンジンを使うなら大改造になる
176:デフォルトの名無しさん
25/08/07 11:13:25.81 dOHm8u8G.net
HTAでWScriptの標準入出力Stdin/Stdoutを使う方法はありますか?
という疑問でwebを漁ってたら、以下のコードを見つけたのですが、
これは何をしているか判りますか
URLリンク(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
の辺り。~は専ブラだとバグる
177:デフォルトの名無しさん
25/08/07 16:01:49.20 Pp4oXF33.net
意味がよくわからない
「WScript」がcscript.exeではなくwscript.exeのことなら元から標準入出力しても何も起きないけど多分そういう話ではないよね
そのソースコードは、mshta.exeを子プロセスとして起動してテキストファイルから読み込んだ内容をその子プロセスの標準入力に流してる
mshta.exeの側では標準入力から読み取った内容を実行してる
178:デフォルトの名無しさん
25/08/07 16:53:21.35 dOHm8u8G.net
元々HTAとpowershell間のプロセス間通信を考えてました
WSH(WScript)とpowershellでの通信はできていたので、
ならばHTAからWScript.Stdin/Stdout相当をどうにかして得られないかという疑問に代わりました
さてGetStandardStream(0)でStdinを得るまでは何となく判りますが
そのハンドルでReadAll()これの意味が判らない
結果的にoExecにはWScript相当?が入るようですが
179:デフォルトの名無しさん
25/08/07 17:25:58.39 Pp4oXF33.net
あー了解
で、oExecに入るのはwShell.Exec()の結果で、起動したmshta.exeのプロセスをラップしたWshScriptExecオブジェクト
oExec.StdIn.Writeでmshta.exeの標準入力に内容を書き込んでる、これがWSH側でやってること
MSのサイトですらリンク切れしまくってたけどitmediaに解説が残ってた URLリンク(atmarkit.itmedia.co.jp)
180:デフォルトの名無しさん
25/08/07 17:28:32.02 Pp4oXF33.net
GetStandardStream(0).ReadAll() を実行しているのは起動されたHTAの側で、標準入力から読み込んだ内容を実行してる
リンク先サンプルだとその内容はH.HTAで、その後は裏で起動させたIEを通じてやり取りをする…という実験っぽい
というわけでHTAで標準入出力を使うには new ActiveXObject('Scripting.FileSystemObject').GetStandardStream() だけでいいと思う
手元で確認したわけではないので違ってたらごめん
181:デフォルトの名無しさん
25/08/07 20:06:59.39 dOHm8u8G.net
>>180
WshScriptExecというのですね
色々ありがとうございます
182:デフォルトの名無しさん
25/08/07 21:37:56.02 FIb4oE/e.net
Exec メソッド
URLリンク(learn.microsoft.com)(v=msdn.10)
GetStandardStream Method
URLリンク(learn.microsoft.com)(v=vs.84)