トップページ⇒tech
987コメント313KB

WSH(・∀・)スレッド!

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
( ´ゝ`) 無ので立ててみた。

誰か詳しい情報キボンヌ
0002デフォルトの名無しさんNGNG
    ∧_∧
    (*´Д`)  イヤン
     / ,ノ⌒ヾ、
   ⊂⊂、___(_,つ
0003デフォルトの名無しさんNGNG
>>2 なんかかわいい。
0004デフォルトの名無しさんNGNG
>>2
(:.;゚;Д;゚;.:)ハァハァ
0005デフォルトの名無しさんNGNG
    ∧_∧
    (* ゚Д゚ )  ナニミテンダゴルァ
     / ,ノ⌒ヾ、
   ⊂⊂、___(_,つ
0006デフォルトの名無しさんNGNG
Windows Scripting Host Laboratory
http://www.roy.hi-ho.ne.jp/mutaguchi/wsh/wshtop.htm
00073NGNG
>>5
なんかコワい…
0008デフォルトの名無しさんNGNG
Windows Scripting Host
・WSH最新版DLサイト
http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=E74494D3-C4E1-4E18-9C6C-0EA28C9A5D9D
0009デフォルトの名無しさんNGNG
拡張子を.vbsにすればいいんだよね?
0010デフォルトの名無しさんNGNG
>>9
そでつ。ほかにもあるっぽいですが
0011デフォルトの名無しさんNGNG
前もWSHスレ立って需要がなくて消えたんだよな
00121NGNG
>>11
そいつは知らなかった・・・このスレ もそうなりそうな悪寒・・・
0013デフォルトの名無しさんNGNG
ウィルスを作るためのツール?
0014デフォルトの名無しさんNGNG
>>11
それをスレ立てる前に言ってくれ!





無理か。
0015デフォルトの名無しさんNGNG
とりあえず、最終目標としてはBOTもしくはウイルスを作るということでおkかな?
0016デフォルトの名無しさんNGNG
なぜ需要がなかったかというと、Win板にすでに
お前ら、wsh使ってますか? Part2
http://pc2.2ch.net/test/read.cgi/win/1022248379/
というのがあって、そっちの方が盛り上がってたから。
前も結局そっちに誘導して終わった。
0017_NGNG
http://kame.kakiko.com/hiroyuki/jaz_b01.html
0018デフォルトの名無しさんNGNG
>>15
それじゃぁ、削除対象…
0019デフォルトの名無しさんNGNG
>>16
ヽ(`Д´)ノタテルマエニイエヨ!
0020デフォルトの名無しさんNGNG
>>16
エンドユーザレベルか・・・・
まあ多分UNIX板にもシェルスクリプトのスレがあるんだろうけど。
0021デフォルトの名無しさんNGNG
    ∧_∧ ∧__∧
 _ ( ´∀`(・∀・ )__ < ネタが無いのに立てたんだね。ヴァカみたい♪
 |≡( 11 )( 121 )≡|
 `┳(__)(__) (__)(__)━┳
,..,..┴,...,...,...,....,....,.....,....,┴,,,,..
0022デフォルトの名無しさんNGNG
そういえばなつかしのI love youウイルスも.vbsだったな
0023デフォルトの名無しさんNGNG
>>21 んなさびしいこというなよぉ。
0024デフォルトの名無しさんNGNG
c.Copy(dirsystem&"LOVE-LETTER-FOR-YOU.TXT.vbs")
0025デフォルトの名無しさんNGNG
>>24
キタキタキタキタキターーーーーーーーーー

 |≡( 11 )( 121 )≡|
 `┳(__)(__) (__)(__)━┳
0026デフォルトの名無しさんNGNG
>>24 のーとんが猛り狂ったように叫び出す、に10000ぬるぽ
0027デフォルトの名無しさんNGNG
質問厨がなんかこのスレ(板)…と言い出すに 5000ぬるぽ
0028デフォルトの名無しさんNGNG
c.Copy(dirsystem&"\LOVE-LETTER-FOR-YOU.TXT.vbs")
0029デフォルトの名無しさんNGNG
そういえば、>>24のコードの意味がいまだにようわからん
003027NGNG
>>28
ああ、微妙に違ったのね。ダマサレタ!

つか、つまらんですよ。
0031デフォルトの名無しさんNGNG
>>20
だからエンドユーザレベルじゃないと需要ないんだって。
0032エンドユーザーNGNG
ごめんなさい
0033デフォルトの名無しさんNGNG
いや別にエンドユーザが悪いとかじゃなく、このスレに限らず需要無いところに立てても
悲しい結末にしか・・・
0034デフォルトの名無しさんNGNG
>>1さん、漏れもWin板あたりが妥当だと思うんですが…

http://qb.2ch.net/saku/
0035デフォルトの名無しさんNGNG
>>1
つーことで削除依頼よろすく。
過去ログに消えたスレあるかな。あれば>>13みたいなレスでぐだぐだになって消えたのがわかると思う。
0036デフォルトの名無しさんNGNG
この前、インストーラにexe作るのめんどくさかったから
WSHでファイルコピー&レジストリ登録をするスクリプト書いたら
ノトーン先生に怒られた。
こりゃ、仕事じゃ使えないわ
0037デフォルトの名無しさんNGNG
.vbs で処理しようとすると,ドロップするファイル数に限度があるようです。
回避する方法として,フォルダをドロップしようと考えていますが,
下記のどこを変えたらよいですか?

set arg=wscript.arguments
set fs=createobject("scripting.filesystemobject")
if 0<arg.count then
for each item0 in arg
set file=fs.getfile(item0)
0038デフォルトの名無しさんNGNG
前もWSHスレ立って需要がなくて消えたんだよな
0039デフォルトの名無しさんNGNG
Windows板でやるようなスレだしな。
0040山崎 渉NGNG
(^^)
0041デフォルトの名無しさんNGNG
WSHでhttpを使ってWebサーバにGETやPOSTって出来ますか?
Socketでも構いません。WinInetをラッパーした物があれば万々歳。
0042山崎 渉NGNG
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン
0043yawaNGNG
HTMLアプリケーションて結構好きだなあ
Mozillaにそれ使ったアプリなかったっけ
0044yawaNGNG
monazillaの間違え
0045デフォルトの名無しさんNGNG
sage保守
0046デフォルトの名無しさんNGNG
固定長のファイルを開いて特定の位置を参照しに行って
そのフィールドの内容が変わったらその内容をファイル
名として保存。
を出来なくなるまで繰り返すと言う構文を誰か作ってくれませんか?
0047デフォルトの名無しさんNGNG
>>46

スレの前半のほうに書いてあるがWin板のお前ら、WindowsScripting使ってますか?を利用したほうがいいのでは?
多分、向こうに書き込めば11さん辺りが作ってくれるかもしれないですよ。

現行スレは多分http://pc2.2ch.net/test/read.cgi/win/1058829737/です。
0048デフォルトの名無しさんNGNG
現在起動中のプログラムの一覧を取得する方法を教えてください
タスクマネージャで見れる程度の情報がリストにできればいいです
0049スレの終了ダイアログを開いています…NGNG
---------(begin)---------(ShutDown.js)---------(begin)---------
(WScript.CreateObject("Shell.Application")).ShutdownWindows();
---------( end )---------(ShutDown.js)---------( end )---------
0050デフォルトの名無しさんNGNG
WScript.Sleep(100000000);
0051デフォルトの名無しさんNGNG
ホシュ
0052デフォルトの名無しさんNGNG
このスレのおかげでウィルスチェックが効いてウザ杉。
読めねえ。
0053デフォルトの名無しさんNGNG
意味わからん
0054デフォルトの名無しさんNGNG
WScript.Echo("わかれ");
0055デフォルトの名無しさんNGNG
お前ら、WindowsScripting使ってますか? Part3
http://pc5.2ch.net/test/read.cgi/win/1058829737/l50
0056デフォルトの名無しさんNGNG
テキストファイルの印刷って出来ませんか?

最終的には、WWWサーバで印刷したいのですが
http://www.microsoft.com/japan/msdn/columns/server/server033099.asp
に書かれているAddPrinterConnectionやAddWindowsPrinterConnectionを使用しても、
プリンタが見つかりません。のエラーになります。
EnumPrinterConnections で取得したプリンタ名を設定しても
エラーとなります。
どなたか教えてください。
0057デフォルトの名無しさんNGNG
notepad /p
0058デフォルトの名無しさんNGNG
.batファイルよりもWSH使った方が色々出来そうだね。
0059デフォルトの名無しさんNGNG
set shell = createobject("wscript.shell")
do
ret=shell.Popup("sage",1,,0)
loop
0060デフォルトの名無しさんNGNG
    ∧ ∧
   (*・∀・*)  イヤン
     / ,ノ⌒ヾ、
   ⊂⊂、___(_,つ
0061デフォルトの名無しさんNGNG
(:.;゚;Д;゚;.:)ハァハァ
0062デフォルトの名無しさんNGNG
SendToでショートカット渡すとリンク先のファイルのあるディレクトリをExplorerで開くスクリプトってどうやって書けばいいの?
0063デフォルトの名無しさんNGNG
open
0064pakuchanNGNG
Windowsのログオン時に,パスワードをキーボードから入力しますが,これを
RS232CやUSBで接続した認証用センサ(例えば指紋センサ)による認証方式
にするための方法について調べています.
別スレで同じような質問をし,サービスプログラムの作成が必要でないかと
コメントをいただいたのですが,サービスプログラムについてもよくわかりません.
まず,サービスプログラムで可能なのか,また可能であれば作成方法について教え
ていただけないでしょうか?
0065デフォルトの名無しさんNGNG
ハードは外から買って来るんだろ?
普通ハードにSDKやソフトウェアがついてると思うが。
0066pakuchanNGNG
具体的なところでICカードを考えているんですが,リーダーの制御コマンドしか
公開されていません.
0067デフォルトの名無しさんNGNG
WindowsNT系OSはログオンにGINA APIを使う。
http://www.cisnet.or.jp/home/tsuneoka/win32tech/6.html
GINAのサードパーティ製品(SDK?)あるようだがよくらん。
あとすれ違い。
0068pakuchanNGNG
GINAについての情報有難うございました.
0069デフォルトの名無しさんNGNG
>>62
if (WScript.Arguments.length != 1) WScript.Quit();
var file = WScript.Arguments(0);
var folder = file.substr(0, file.lastIndexOf("\\"));
var shell = WScript.CreateObject("Shell.Application");
var shFolderItems = shell.NameSpace(folder).Items();
for (var i = 0; i < shFolderItems.Count; i++) {
var item = shFolderItems.Item(i);
if(item.Path == file) {
if (item.IsLink) {
var target = item.GetLink.Target;
shell.ShellExecute("explorer.exe", "/select,\"" + target.Path +"\"");
} else {
shell.ShellExecute("explorer.exe", "/select,\"" + file + "\"");
}
break;
}
}
0070デフォルトの名無しさんNGNG
VBScriptでGUIDは作れんですか?
0071デフォルトの名無しさんNGNG
すでに起動しているアプリケーション(ウィンドウ)を
ひとつだけ最小化させるWSHプログラムは組めますか?

アプリケーション名はわかりますが、
ウィンドウ名は先頭から10数文字までは固定ですが
その後ろは不定なので正規表現とかで指定になると思います
0072デフォルトの名無しさんNGNG
set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.AppActivate("Title")
WScript.Sleep 100
WshShell.SendKeys("%( N)")
0073デフォルトの名無しさんNGNG
クリップボードにStringを書き込み方法を教えてください。
0074デフォルトの名無しさんNGNG
>>72
(゚∀゚)サンクスコ
007571NGNG
>>72
この方法だと、対象アプリがすでに最小化されていたときにも
一度フォアグラウンドに引っ張ってきて、その上で最小化しますね
またSendkeyはフォアグラウンドのアプリに送られるっぽいから
対象アプリが最前面に来る前に100ms経ってしまうと
違うアプリが最小化されてしまいました
直接対象アプリにSendkeyするのってなんか方法ありましたっけ?
007672NGNG
>>75
多分無理かと。
適当にSleepの時間を調整するしかないのでは?

>>73
var str = "hoge";
var ie = WScript.CreateObject("InternetExplorer.Application");
ie.Navigate("about:blank");
while(ie.Busy){ WScript.Sleep(100); }
ie.Document.parentWindow.clipboardData.setData("text", str);
ie.Quit();

by googleの検索結果の上から3番目くらい(特殊文字の処理は省略)
一番上に出てくるやつをダウンロードしてもいいと思うけど。
007771NGNG
たまに、最前面に出てきてもアクティブにならないときもあり
そのときはsleep時間延ばしてても全然違うアプリが閉じてしまう。
むぅぅ。これ以上はWSHでは無理っぽ?
0078デフォルトの名無しさんNGNG
>>76
ありがとうございます。
調べたときにIEとか出てきて「なぜ?」って疑問も
教えてもらったclipboardDataからぐぐって
IE呼び出してるんだろうって謎も解けました。
0079デフォルトの名無しさんNGNG
>>76 とても、ためになりました。
str = "hoge"
Set ie = WScript.CreateObject("InternetExplorer.Application")
ie.Navigate("about:blank")
Do While ie.Busy = True
WScript.Sleep(100)
Loop

Dummy = ie.Document.parentWindow.clipboardData.setData("text", str)
ie.Quit()

当方、VBS派ですが、期待した動作でした。
これまで、IEが立ち上がって来るのかと思って使ってませんでした。
これまでは、VBO4WSH.EXE で、VBのClipboadObj を使えるように
してました。
便利だけど、インストールしないといけないのが面倒なんですよね。
ttp://rd.vector.co.jp/soft/win95/util/se303229.html
008079NGNG
SendKeys を使って、"~"や"%" を送ろうとしても、それぞれ、[Enter]や[Alt] に変換されてしまって、
ファイル名のダイアログボックスに、名前を上手く入力できず困っていました。

でも、Clipboard の中に SetData("~ %") しておいて、Sendkeys("^V")《貼り付け》
してしまえば、上手く行きそうな気がしてきました。
まだ試してないけど、あとでためしてみます。
問題を解くきっかけを作っていただき、ありがとうございました。
0081デフォルトの名無しさんNGNG
>>80
ttp://www.microsoft.com/japan/msdn/library/ja/script56/html/wsmthsendkeys.asp
0082デフォルトの名無しさんNGNG
CreateObjectもできて
dir /b | sortとかもできるWSHなスクリプトってないの?
VBSってすごい面倒。
0083デフォルトの名無しさんNGNG
WSHでセキュリティのイベントログを削除するスクリプトを
perlで作ったですがエラーがでて困ってます。
 # cscript script.pls
でコマンド実行すると
 # PerlScript Error: (in cleanup) Can't call method "ClearEventlog" on an undefined value
とエラーになります。
環境はWindows XPにActivePerl 5.8.4です。
どこが悪いのでしょうか。改善点をお願いします。

以下ソースです。

use Win32::OLE;

open(LOG, "eventquery.vbs /v /fo csv /l Security |");
@data = <LOG>;
close(LOG);

$strComputer = ".";
$wmi = Win32::OLE->GetObject(
"WinMgmts:{impersonationLevel=impersonate}!//" .
"$strComputer\\root\\cimv2"
);

$colLogs = $wmi->ExecNortificaitonQuery(
"Select * from Win32_NTEventLogFile where LogFileName='Security'"
);

foreach $objEvent ($colLogs) {
$objEvent->ClearEventLog();
}
008480NGNG
>>81
どうもありがとうございます。こんな仕様になっていたのですね。
clipboard でのテキスト処理も使えるし、Sendkeys も小技が利くしで、
私のやりたい事の9割方は、WSHでほとんど事足りてしまいます。
0085デフォルトの名無しさんNGNG
>>83
何やってるのか知らんけど、colLogsが配列なら$じゃなくて@colLogsなのでは?
もし配列へのポインタなら、foreachで使うところで @$colLogs にするとか。
いずれにせよスカラー値がforeachの中にあるのは気持ち悪い。

ってWSHの話じゃないじゃん・・・
008683NGNG
>>85
エラーの場所がClearEventLog()メソッド呼び出しのところなのでWSHスレッドで良いのかなと。
VBSなら ClearEventLog() でイベントログを削除出来るはずなんですけど
perlでやろうとするとエラーになるので何故かと思って。(perl使うなって話はなしで)
0087デフォルトの名無しさんNGNG
>>86 (>>83)
おまえ人の話聞いてないだろ。もっと >>85 の言ってることちゃんと考えろや。

foreach $objEvent ($colLogs) {
$objEvent->ClearEventLog();
}

$objEvent が undefined だから
# PerlScript Error: (in cleanup) Can't call method "ClearEventlog" on an undefined value
になるのは当たり前だろ。
008883NGNG
>>87
foreach の ( ) の中を @colLogs としても同じく "undefined value" とエラーがでます。
@$colLogs とすると実行は出来たのですが foreach の中の処理をしてくれません。(実行しても何も起こらない)
WMIの呼び出しが間違っているんですかね?
perlでWMI扱う情報がweb上にほとんどなく、
どうすればいいのかよくわからないので知恵を貸してください。

追加で質問なんですが、文字コード/改行コードはEUC-JP/CRLFでよろしいんですか?
008983NGNG
ちなみにwebで見つけたVBでログをクリアする方法です(バックアップする処理も含まれていますが)
perlへ移植するにはどうすればよいでしょう

----------------------------------------------------------------
Set objWMIService = GetObject("winmgmts:" _
  & "{impersonationLevel=impersonate,(Backup)}!\\" & _
     strComputer & "\root\cimv2")

Set colLogFiles = objWMIService.ExecQuery _
  ("Select * from Win32_NTEventLogFile where LogFileName='Application'")

For Each objLogfile in colLogFiles
  objLogFile.BackupEventLog("c:\scripts\" & strBackupName & _
    "_application.evt")
  objLogFile.ClearEventLog()
Next
0090デフォルトの名無しさんNGNG
>>89
SQL使える人ならできるだろ
009185NGNG
>>83
できたぞ。喜べ。
検索キーワードは「"Win32::OLE" コレクション」。
OLEの世界のコレクションはperlの世界では単なるポインタなので、
そのままではループをまわせない。
それをどうやって扱うのか?
専用のWin32::OLE::Enumモジュールを使えばいいらしい。

以下コード。

use Win32::OLE;
use Win32::OLE::Enum;

$strComputer = ".";
$objWMIService = Win32::OLE->GetObject(
 "winmgmts:{impersonationLevel=impersonate,(Backup)}!\\\\".
 "$strComputer\\root\\cimv2");
$colLogFiles = $objWMIService->ExecQuery
 ("Select * from Win32_NTEventLogFile where LogFileName='Application'");
$enum = Win32::OLE::Enum->new($colLogFiles);

while (defined($item = $enum->Next)) {
 $item->BackupEventLog("c:\\scripts\\test_application.evt");
 $item->ClearEventLog();
}
0092デフォルトの名無しさんNGNG
すげー
0093デフォルトの名無しさんNGNG
結論、VBS使え。
009483NGNG
>>91
おおぉお!ありがとうございます!感動して目の前が潤んでいます
perlのポインタの扱いについてよく理解できてませんでした。
精進します ありがとうございました
0095デフォルトの名無しさんNGNG
JScriptから、INIファイルを読みたいのですが何かいい方法はないでしょうか?
Win32APIでいうならgetPrivateProfileStringみたいなのを探しています。
よろしくお願いします。
0096デフォルトの名無しさんNGNG
素直にFSOでテキストファイル処理してもたいした手間じゃないと思うけど。
0097デフォルトの名無しさんNGNG
ウィンドウの無いプロセスを終了→起動させたいのだけど、
終了のさせ方がわかりません。ウィンドウがあれば、
>>72でできそうなんですが。
0098デフォルトの名無しさんNGNG
>>97
WMI を使う。
http://www.microsoft.com/japan/technet/scriptcenter/process/scrpcs07.mspx
009997NGNG
>>98 有難う! と言いたいのですが、WSHでないのが残念! です。
0100デフォルトの名無しさんNGNG
そいつは残念だ。
0101デフォルトの名無しさんNGNG
■ このスレッドは過去ログ倉庫に格納されています