1 名前:デフォルトの名無しさん [2008/04/23(水) 20:00:50 ] ( ´ゝ`) 誰か詳しい情報キボンヌ ●過去スレ WSH(・∀・)スレッド! pc11.2ch.net/test/read.cgi/tech/1055075469/ WSH(・∀・)スレッド! Part 2 pc11.2ch.net/test/read.cgi/tech/1176698934/ ●関連スレ お前ら、wsh使ってますか? Part7 pc11.2ch.net/test/read.cgi/win/1190548945/ HTAをもっと流行らせる計画 pc11.2ch.net/test/read.cgi/tech/1124559962/ ★WSHでCGI★JScriptVBScript pc11.2ch.net/test/read.cgi/php/1059745064/ ●公式サイト Windows Script www.microsoft.com/japan/msdn/scripting/ ●個人サイト Windows Scripting Host homepage3.nifty.com/aya_js/wsh/index.htm Windows Scripting Host Laboratory www.roy.hi-ho.ne.jp/mutaguchi/wsh/ Windows Script Wiki winscript.s41.xrea.com/wiki/index.php
520 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 22:20:36 ] >515 Vistaは知らんが、CreateObject("Scripting.FileSystemObject") に "WScript"を付ける奴は初めて見た。 WinXP&WSH5.6ユーザーより
521 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 23:54:00 ] そうか? 視野が狭いだけだろ?
522 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 09:11:37 ] 付近とかまたアバウトな・・・
523 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 10:10:43 ] >>520 WSHのWScript.CreateObject > object.CreateObject(strProgID[,strPrefix]) と、VBSのCreateObject > CreateObject(servername.typename [, location]) は一応別物だよ つまり>>515 は「CreateObjectにWScriptを付けている」のではなく 「VBSではなくWSHのCreateObjectを使っている」という表現が正しい まあ基本的には同じ様なものなので、必要性を感じなければ使い分けなくても良いだろう 必要性を感じたら、自分で細かい仕様を調べて使い分ければ良い
524 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 22:44:44 ] 大量の文書の置換をしたいのですが、どのような形で組めばいいのでしょうか? 置換対象文書はすべて一つのフォルダのサブフォルダに入っているのでサブフォルダ内から抽出するなり再帰的に実行するなりすればよいでしょうが… 置換自体のスクリプトは以下のITPROの記事を参考に作りました。 ttp://www.atmarkit.co.jp/fwin2k/win2ktips/308strrpl/strrpl.html 後はこのスクリプトを起動するスクリプトを作成するか、読み込むファイルを抽出する部分を工夫すればいいのですが、 何か手はないでしょうか?
525 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 22:48:01 ] >>524 for
526 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 23:04:00 ] >>524 自分がフォルダ階層を辿るときはディレクトリの再帰処理を書くのが 面倒なんでこんな感じのをよく使う 以下の foo() でファイル毎の処理を書く 実際には dir の '*' はコマンドラインからパラメタで与えたりもう少しは 工夫するけど var objShell = WScript.CreateObject ("WScript.Shell"); var objFS = WScript.CreateObject ("Scripting.FileSystemObject"); function foo(filename) { WScript.Echo(filename); } var execDir = objShell.Exec("cmd /c dir /b /s /a-d *"); while (! execDir.StdOut.AtEndOfStream) { var file = execDir.StdOut.ReadLine(); if (! objFS.FileExists(file)) { continue; } foo(file.replace(objShell.CurrentDirectory, "").replace(/^\\/, "")); }
527 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 23:23:05 ] >>526 遅くなりましたが、参考にさせていただきました。 ありがとうございました。
528 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 11:56:09 ] ho
529 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:15:34 ] レジストリキーが存在するかを確認したい ttp://www.atmarkit.co.jp/fwin2k/tutor/cformwsh13/cformwsh13_01.html のサンプルCheckReg.vbsを参考にした キーの既定に空白でもなんでも値が入っていれば正常に判断できるが、 既定が(値の設定なし)だとキーが存在していても無いと判断されてしまう。 ttp://okwave.jp/qa2469915.html で同様の状態についてやりとりがあり、解決済みだと言うサンプルが置いてある(IsNullを使ったもの) …けれど、やはり同様に(値の設定なし)だとキーが存在していても判断に失敗する 既定が値の設定なしで、他にエントリもないレジストリキーの存在を 確実に確認する手段はございませんでしょうか
530 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:49:44 ] >>529 このあたりはどう? www.microsoft.com/japan/technet/scriptcenter/resources/qanda/oct04/hey1029.mspx
531 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 01:00:13 ] スクリプト センター > スクリプト一覧 > オペレーティング システム レジストリ www.microsoft.com/japan/technet/scriptcenter/scripts/os/registry/default.mspx
532 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 02:21:17 ] >>530 そこのスクリプトでも結果が同じで エントリ名が入る変数strValueNameを空白にすると strKeyPathで設定した場所(キー)の既定エントリを覗くようですが 既定エントリの値を (値の設定なし)→空白にするとexistになります (値の設定なし)に戻すとやはりnot existになります >>531 学習します
533 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 03:15:30 ] もっと他のやり方がありそうなんだけど一応 const KEY_QUERY_VALUE = &H0001 const HKEY_CURRENT_USER = &H80000001 const HKEY_LOCAL_MACHINE = &H80000002 Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv") strKeyPath = "SOFTWARE\developer\app\key" Result = objReg.CheckAccess(HKEY_CURRENT_USER, strKeyPath, KEY_QUERY_VALUE, bHasAccessRight) If Result = 0 Then Wscript.Echo "key found." ElseIf Result = 2 Then ' WBEM_E_NOT_FOUND Wscript.Echo "key not found." Else Wscript.Echo "other error." End If
534 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 03:43:06 ] >>533 これは(値の設定なし)でもキーの存在を的確に判断してくれます 大変有難いことです。感謝
535 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 16:50:11 ] WSHでOutlookの予定や仕事の本文のフォントを一括で変更できる方法ってありますか?
536 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 19:28:41 ] もしOutlookVBAでできるなら、WSHでもできるよ
537 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 21:50:15 ] WSH(使用言語はjscript)でWin32apiのLoadLibrary()ってどうやって使うんですか!?
538 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 21:55:37 ] 無理
539 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 22:03:58 ] そういうCOM使えばええがな
540 名前:デフォルトの名無しさん [2009/02/06(金) 23:01:41 ] 糞スレ晒し上げ
541 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 01:55:39 ] なるほど ありがとうございました
542 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 05:31:22 ] サービスのスタートアップの種類(自動・手動・無効など)を調べるスクリプトを書いており、 Vistaの自動と自動(遅延開始)を識別する方法を探しています。 WMIのWin32_ServiceクラスのStartModeプロパティには、両方ともAutoが設定されています。 MSDNでは他にそれらしいプロパティは見付かりませんでした。 レジストリ値を直接読んで識別するしかないのでしょうか?
543 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 05:42:58 ] ここはWSHスレです。 VB6でもRubyでもC#でもDelphiでもVBAでも使える 汎用コンポーネント(WMIなど)の話はお控え下さい。
544 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 05:55:18 ] あれま。そういう棲み分けでしたか。失礼しました。
545 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 07:05:52 ] 自動(遅延開始)は依存関係で他のサービスが立ち上がってから立ち上がるもの つまり依存するサービスを所有していればそれで判別可能
546 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 07:11:45 ] >>543 >>539 COMもVB6でもRubyでもC#でもDelphiでもVBAでも使えるから ここで話題振るのは禁止なんですよね
547 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 14:17:16 ] 複雑だと思うならつかわなきゃいいんじゃねーの? なんでアホはあるもの全部使わなきゃ気がすまねーの?
548 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 15:36:14 ] がんばれよ
549 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 19:22:53 ] がんばりまっちゅ
550 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 19:31:19 ] WSHもCOMだろ?
551 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 19:43:36 ] いいえ、WSHはCOMじゃありませんよ WMIはCOMですけど
552 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 19:54:14 ] >>545 どうしてそんなすぐ分かる嘘を付くのですか?
553 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 19:55:36 ] WSH.Echo TypeName(WSH)
554 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 20:07:58 ] >>553 いきなりどうしたの?
555 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 23:59:10 ] なるほどね
556 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 00:18:45 ] もしかしてObject=COMだと思ってるんじゃないの?
557 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 00:24:41 ] やめときゃいいのに
558 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 00:37:35 ] だよね あんなの書かなきゃ恥かかなかったのに
559 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 00:57:24 ] ぷっ
560 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 02:59:09 ] MsgBox "Object"="COM"
561 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 03:13:19 ] たしかにちがうな
562 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 03:14:34 ] MsgBox "WMI"="COM"
563 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 10:06:41 ] WSHとPowerShellはどういう関係なのでしょうか? PowerShellが使えたらWSHはもう要らないものでしょうか?
564 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 14:19:11 ] >>563 大雑把に言うと、WSHはいわゆる「スクリプト言語」からオートメーションコンポーネントをいじるためのホスト環境で VBScript, JScript, PerlScriptなど各種インタープリタが存在する。 PowerShellはPowerShellスクリプトで.NETコンポーネントをいじるためのインタープリタそのもので、オートメーションコンポーネントをいじるための機能も備えている。 WSHとPowerShelllは主な使用用途が似ているから比較されるだけで、直接な関係はない。 WSHで使えるスクリプト言語になるためにはActiveScriptというルールにのっとったインタープリタを作らなきゃダメで、 PowerShellインタープリタがもしもActiveScriptとしても実装されたら、WSHでPowerShellが使えたりもするようになるし、 逆に.NETでActiveScript相当のルールができてVBScriptやJScriptのインタープリタができたら、.NET用のWSHみたいな物ができるかもしれない。 WSHの使用用途については、PowerShellが大部分を食っていくと思われ。 しかしPowerShellはWindows XP以降でしか使えないが、WSHは9x系でも使える。 VBScriptなどPowerShell以外のスクリプト言語が使いたい場合まだWSHでないと無理。 そのあたりWSHの用途をカバーするものが別途出てきたらいらなくなると思う。
565 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 14:38:23 ] スルーしような
566 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 14:38:28 ] JRubyとかIronRubyとかIronPythonとかあって訳若芽です><
567 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 14:50:36 ] ここはWSHスレです。 IEでもHTAでもSCでも使える 汎用スクリプト言語(VBScript,JScriptなど)の話はお控え下さい。
568 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 15:03:29 ] あれま。そういう棲み分けでしたか。失礼しました。
569 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 15:10:00 ] WSH.Echoも、VB6でもRubyでもC#でもDelphiでもVBAでも使えるんですがどうしましょ?
570 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 15:10:59 ] COMは専用スレあるからスレ違いでいいけど アクティブスクリプトは専用スレあったっけ?
571 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 15:18:22 ] >>569 WSH.Echoも、IEでもHTAでもSCでも使えるけど、いいんじゃね
572 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 15:27:32 ] >>569 VBAかVB6でWSH.Echoを使うサンプルコード書いて あ、もちろんWrapper的なのを噛ますのは無しね dllやらwscやら噛ませるのは、そのホスト上でWSHオブジェクトが使えてるわけではなく そのやdllやらwsc上でWSHオブジェクトが使えてるだけだから
573 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 15:34:44 ] WSCでWSHオブジェクトが使えてるのか?
574 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 15:55:24 ] 。。。
575 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 16:18:48 ] ぷっ
576 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 16:19:24 ] ぽっ
577 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 16:21:25 ] WSHはCOMだからオブジェクト参照さえ渡せばWSCだろうとIEだろうと使えるよ
578 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 16:27:30 ] ぷっ
579 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 16:35:32 ] ActiveほにゃららってWindows版の各スクリプト言語処理系の頭に付くのは何故なんだろうって最初は不思議でした
580 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 17:02:07 ] >>572 >VBAかVB6で スレ違いだろ?
581 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 17:05:35 ] ぷっ
582 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 17:11:19 ] >>577 いいえ、WSHはCOMじゃありませんよ WMIはCOMですけど
583 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 17:30:05 ] 結局具体的には書けないんだね
584 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 18:15:05 ] 具体的に書いてやらないとわからないんだね
585 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 18:23:58 ] うん、わからないからちゃんと書いて
586 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 18:31:26 ] いやだよ
587 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 18:54:22 ] WSHは外部からCreateInstanceはできないだけで、COMじゃないわけはないだろ。
588 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 19:09:22 ] いいえ、WSHはCOMじゃありませんよ WSHはEXEですけど
589 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 19:12:17 ] ヒントだよ Set hoge=WSH hoge.Echo TypeName(hoge) これでわからないならあきらめるんだな
590 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 21:22:29 ] 実はヒントにもなってない件と 実は本人も解ってない件w
591 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 21:28:49 ] htaでWScript.Sleep使いたいんだが・・・ いや、まじで。
592 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 21:53:34 ] つかってるけど?
593 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 22:04:56 ] >>590 もそっとCOMを勉強したほうがよくないか?
594 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 22:05:48 ] fso = win32com.client.Dispatch('Scripting.FileSystemObject') folder = fso.GetFolder('C:\\') for file in folder.Files: print file.Name
595 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 22:12:18 ] >>592 どうやるの? さっさと吐け!
596 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 22:18:49 ] Set w = WScript.CreateObject("WScript.Shell") w.Popup "Ready",3,"1,2,3" w.LogEvent 1, "DaahhhHHH!"
597 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 22:21:13 ] >>596 それWScript.Sleep 3のつもり? WScript.CreateObjectでエラーになるけど?
598 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 22:24:13 ] それに WScript.ShellのPopupはGUIアプリで使うと待ちが解けないみたいよ?
599 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 22:32:57 ] >>591 >htaでWScript.Sleep使いたいんだが・・・ いや、まじで。 つかえるけど、画面が凍るのでやめとけ・・・ いや、まじで。
600 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 22:54:02 ] VBとかC#から WScriptのインスタンスを生成するにはどうすればよいですか?
601 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 00:13:39 ] outprocessserverの場合と似たようなことをやればよい ShellやProcess.Startで起こして、 そのスクリプトからWScriptオブジェクトを外部から見えるところに設定
602 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 01:40:52 ] Windows Script Host(WSH)の機能全体の話とWScriptオブジェクトと Windows Script Host Object Modelの各オブジェクトと、 WScript/CScriptコマンドが錯綜してる気がする まず、Windows Script Host Object Modelで説明されるオブジェクトは あくまで WSHの構成要素であって、WSHそのものではない。 なので、外部からWSHの構成要素の一部のオブジェクトをインスタンス化 できる、という説明は正しいが、 WSH自体を操作できる、という説明は正しくない 次に、COMをIUnknown、IDispatchのインタフェースを持ち、GUIDで 識別されるもと定義するなら、Windows Script Host Object Model に含まれるオブジェクトはすべてCOMであり、これにはWScriptも含まれる。 ただし、WScriptを除く各オブジェクトは単体で外部からインスタンス化 できるのに対して、WScriptオブジェクトは外部からインスタンス化することは できないという違いがある。 で、結局WScriptオブジェクトはWSHの環境内でのみ使用できるオブジェクトなので、 外部からは使えません。 >>601 は具体的なコードを示してほしい
603 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 02:27:18 ] .NET についてもひとことおねがいします
604 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 03:02:48 ] コード? 技術者だったらヒントから考えろ WSHからVBAの関数を呼べるだろ? VBAでsub hoge(wsh)作ってWSHから呼べ そしたらVBAからWSH使い放題 IEも同じ 関数作って呼ぶか、プロパティにセットするか HTAはWSHから呼べないから、間にIEをはさむなりしろ
605 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 03:59:15 ] 姫様ズーム・イン
606 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 04:01:26 ] ヒントだと思い込んで出してる情報が実は間違いでしたとさ
607 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 04:55:18 ] おやすみ
608 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 07:53:52 ] あるあるw
609 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 08:34:58 ] ごめん、自分には素のWindows環境で WSHからVBAを呼ぶという時点でかなりの難易度 IEからHTAを呼び出すのもできません ぜひ、具体例をお願いします
610 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 08:58:20 ] やり方を知らない人に聞いても無駄です。 無意味なヒント出されたり、自分で調べろとか 言われたりして誤魔化されるだけです。
611 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 18:20:04 ] あれでわからないならあきらめろってw無理すんなw
612 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 18:55:43 ] 予想通りの反応w
613 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 19:28:27 ] 度し難いなぁ って意味わかるかなぁ
614 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 19:46:05 ] 解るよ どういう雰囲気を作りたがってるかは 上から目線で、呆れてる様を表現し やり方を知らないから具体的な情報を出せないのではなく もう何も言う気になれないのだよという雰囲気を作りたいのですね でも、実際に知らないのはもうバレバレで 今更雰囲気作りに拘っても無意味っす
615 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 19:52:31 ] ごめんね WSHはCOMじゃないよ これでいい?
616 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 20:01:09 ] 今度は「仕方ないから大人な俺が折れてあげるよ」という雰囲気作りですか しかも論点間違ってるし 折れなくていいからさ、件の具体例出して俺等を打ちのめしてよ 打ちのめす実力が本当に有るのなら
617 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 20:18:16 ] ないよ これでいい?
618 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 20:23:24 ] まぁ「これでいい?」を付け加えることで 本当はあるけど無いことにしておくって雰囲気を作りたいんだろうけど それが負け惜しみなのは誰の目から見ても明らかだし 負け惜しみを吐くくらいのことは許してあげますかな ただ、これ以上負け惜しみ吐いて醜態は晒さないようにね
619 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 20:41:25 ] 結局出来ないのかorz wktkして待ってたのに。
620 名前:デフォルトの名無しさん [2009/02/09(月) 21:08:53 ] なんでここIDないの