お前ら、wsh使ってますか?

このエントリーをはてなブックマークに追加
44711
'かちゅのidxファイルから最終書き込み日時とkakikomi.txtを消して
'あなたが真性2ちゃんねらーであることを友人に隠すためのスクリプト
'かちゅが動いてないときに実行してね。
'スレが万単位で保存されてると、数分かかるよ。

Dim sRootDir,sIniFile,ts,sLastTime,dLastTime,iNewSure,iKakikoSure
Set Fs = WScript.CreateObject("Scripting.FileSystemObject")

'/////設定変更可能項目//////
sRootDirRelative="\log"
'↑idxファイルを処理する対象フォルダのルート。\logを指定すると、全idxを対象にする。
sIniFileName="secret.ini"
'↑設定ファイル名
'///////////////////////////

sRootDir=Fs.BuildPath(Fs.GetParentFolderName(WScript.ScriptFullName),sRootDirRelative)
sIniFile=Fs.BuildPath(Fs.GetParentFolderName(WScript.ScriptFullName),sIniFileName)
sKakikomi=Fs.BuildPath(Fs.GetParentFolderName(WScript.ScriptFullName),"kakikomi.txt")

If MsgBox("今から、" & sRootDir & "以下のフォルダ内にある全idxファイルを検索し、" & vbCrLf & _
"書き込みしたスレの最終書き込み日時データを消去します。いいですか?",vbYesNo)=vbNo Then
WScript.Quit
End If

iNewSure=0
iKakikoSure=0

If Fs.FileExists(sIniFile) Then
Set ts=Fs.OpenTextFile(sIniFile)
If Not ts.AtEndOfStream Then sLastTime=ts.ReadLine
ts.Close
dLastTime=CDate(sLastTime)
Else
dLastTime=CDate("1970/01/01 00:00:00")
End If

Set ts=Fs.CreateTextFile(sIniFile,True)
ts.Write Now '現在の日時を設定ファイルに書き込む
ts.Close
44811:02/02/14 02:07
Call CheckDir(Fs.GetFolder(sRootDir))
sMsg="更新スレ" & iNewSure & "個のうち、" & iKakikoSure & _
"個のスレに書き込んでましたので証拠を隠滅しました。"

If Fs.FileExists(sKakikomi) Then
If MsgBox("kakikomi.txtを削除しますか?",vbYesNo)=vbYes Then
Fs.DeleteFile sKakikomi 'kakikomi.txt削除
sMsg=sMsg & vbCrLf & "kakikomi.txtを削除しました。"
End If
End If

MsgBox sMsg

Sub CheckDir(Folder)
For Each oFile In Folder.Files
If LCase(Fs.GetExtensionName(oFile.Name))="idx" Then
If DateDiff("s",oFile.DateLastAccessed,dLastTime) < 0 Then
iNewSure=iNewSure + 1
Set ts=Fs.OpenTextFile(oFile.Path)
If Not ts.AtEndOfStream Then sLine=ts.ReadLine
ts.Close
aCell=Split(sLine,vbTab)
If UBound(aCell) >=11 Then
If aCell(11)<>"" Then
iKakikoSure=iKakikoSure + 1
aCell(11)=""
Set ts=Fs.CreateTextFile(oFile.Path,True)
ts.Write Join(aCell,vbTab) '最終取得日時を消したものを上書き
ts.Close
End If
End If
End If
End If
Next
For Each oSubFolder In Folder.SubFolders
Call CheckDir(oSubFolder)
Next
End Sub

44911:02/02/14 02:22
間違えた。59行目、
If DateDiff("s",oFile.DateLastModified,dLastTime) < 0 Then
です。DateLastAccessedじゃない。
450名無し~3.EXE:02/02/14 03:02
>>449
いつもお疲れさんです。
451名無し~3.EXE:02/02/14 04:57
>>449
どうも、かちゅスレのものです

実行してみたんですが、
スクリプト設定ファイル"C"が不正です
と出てすぐに処理が終わってしまいます

なんか設定がいるのでしょうか?
45211:02/02/15 00:47
>>451
見たことないエラーメッセージですねえ。
拡張子はvbsにしてますか?

一応、wscript.exeを実行し、「既定値に戻す」ボタンを
押してみてください。

動かないようなら、>>100のリンク集を参考にして、
最新版WSH落としてください。
453451:02/02/16 00:33
>>452
どうもすいません、、
なんかボケてたようで拡張子を .wsh にしてました。。
おかげで無事動きましたです 多謝
454さんきゅ:02/02/16 01:09
ありまとー>11
メッセージいっさいなしで動く寡黙版もあるといいにゃあ。
45511:02/02/16 01:21
>>454
[1]
If MsgBox("今から、" & sRootDir & "以下のフォルダ内にある全idxファイルを検索し、" & vbCrLf & _
"書き込みしたスレの最終書き込み日時データを消去します。いいですか?",vbYesNo)=vbNo Then
WScript.Quit
End If
→削除

[2]
If Fs.FileExists(sKakikomi) Then
If MsgBox("kakikomi.txtを削除しますか?",vbYesNo)=vbYes Then
Fs.DeleteFile sKakikomi 'kakikomi.txt削除
sMsg=sMsg & vbCrLf & "kakikomi.txtを削除しました。"
End If
End If

↓このように修正

If Fs.FileExists(sKakikomi) Then
Fs.DeleteFile sKakikomi 'kakikomi.txt削除
End If

[3]
MsgBox sMsg
→削除
456454:02/02/16 01:24
さんきゅー!
457名無し~3.EXE:02/02/16 17:17
11氏の空ホルダ削除VBSちょうほうしてたんですけど、
Desktop.iniとかサムネイル.dbとかあるとだめみたいなんです。
これらを無視して他にファイルなかったらフォルダ削除、みたいに出来ますか?
458名無し~3.EXE:02/02/16 17:55
jsで、テキストファイルに " を書き出したいときは
Write("\"")
でうまくいくのですがvbsではできません。
どうにかなりませんか?
459302:02/02/16 18:47
>>458
Set fs = CreateObject("Scripting.FileSystemObject")
Set a = fs.CreateTextFile("c:\testfile.txt", True)
a.Write(chr(34))
a.Close
これでいいかな?と。

http://www.microsoft.com/japan/developer/library/script56/vtoriMiscellaneous.htm
460302:02/02/16 20:29
>>457
これでいいのか、わからんのだが。。。

Set WshShell = WScript.CreateObject("WScript.Shell")
Set Fs = WScript.CreateObject("Scripting.FileSystemObject")
iDel=0 : iLeft=0
For Each sArg In WScript.Arguments
If Fs.FolderExists(sArg) Then
For Each oFol In Fs.GetFolder(sArg).SubFolders
'add
If oFol.Files.Count<=2 And oFol.SubFolders.Count=0 Then
If Fs.FileExists(sArg & "\"& oFol.name & "\" & "Desktop.ini") Then
Fs.DeleteFile(sArg & "\"& oFol.name & "\" & "Desktop.ini")
'msgbox("あぼーんDesktop.ini")
End If
If Fs.FileExists(sArg & "\"& oFol.name & "\" & "サムネイル.db") Then
Fs.DeleteFile(sArg & "\"& oFol.name & "\" & "サムネイル.db")
'msgbox("あぼーんサムネイル.db")
End If
End If
'end

If oFol.Files.Count=0 And oFol.SubFolders.Count=0 Then
iDel=iDel+1
oFol.Delete
Else
iLeft=iLeft+1
End If
Next
End If
Next
MsgBox iDel & "個の空フォルダを削除しました。" & vbCrLf & iLeft & "個のフォルダは空ではないです。"
461302:02/02/16 20:32
↑だと
サブフォルダに
Desktop.ini
超重要ファイル.txtがあった場合、

実行すると
フォルダを削除する必要がなくても
Desktop.iniが消えちゃいます。シクシク
462302:02/02/16 20:58
ってなわけでまたまた改造。
>>457

Set WshShell = WScript.CreateObject("WScript.Shell")
Set Fs = WScript.CreateObject("Scripting.FileSystemObject")
iDel=0 : iLeft=0
Dim cnt'変数追加
For Each sArg In WScript.Arguments
If Fs.FolderExists(sArg) Then
For Each oFol In Fs.GetFolder(sArg).SubFolders
'追加始まり
If Fs.FileExists(sArg & "\"& oFol.name & "\" & "Desktop.ini") Then
cnt=cnt+1
End If
If Fs.FileExists(sArg & "\"& oFol.name & "\" & "サムネイル.db") Then
cnt=cnt+1
End If
If oFol.Files.Count=cnt And oFol.SubFolders.Count=0 Then
If Fs.FileExists(sArg & "\"& oFol.name & "\" & "Desktop.ini") Then
Fs.DeleteFile(sArg & "\"& oFol.name & "\" & "Desktop.ini")
End If
If Fs.FileExists(sArg & "\"& oFol.name & "\" & "サムネイル.db") Then
Fs.DeleteFile(sArg & "\"& oFol.name & "\" & "サムネイル.db")
End If
End If
cnt=0
'追加終わり

If oFol.Files.Count=0 And oFol.SubFolders.Count=0 Then
iDel=iDel+1
oFol.Delete
Else
iLeft=iLeft+1
End If
Next
End If
Next
MsgBox iDel & "個の空フォルダを削除しました。" & vbCrLf & iLeft & "個のフォルダは空ではないです。"
463名無し~3.EXE:02/02/16 21:01
>>459
感謝!
今書いてるのがもうじき完成予定です
464302:02/02/16 21:15
>>463
タノシミー♥
465302:02/02/16 21:37
超遅レスだけど
>>414(=11)
W2Kではポプアプされないよん
wsh5.6.0.6626
466458:02/02/16 22:25
できたー!
http://sakots.pekori.jp/download/pchview.zip
「しぃお絵描き掲示板のpchファイルを手軽に再生するHTMLファイル」
を書き出すスクリプトです。
目玉機能(?)は「ファイル名で縦横の幅を指定」です
スクリプトのあるフォルダパスの取得方法がよくわからなかったので
ちょっとアレですが、とりあえず。
お絵描き掲示板好きの方はどうぞ。
467302:02/02/16 22:36
(゚д゚)ウマー
コメント
" は(chr(34))にチョトワラタ
俺もhtml作るvbs作ってみるかなー。
468458:02/02/16 22:47
>>467
最初は " なしで書き上げてたんですよ
やっぱり気持ち悪かったもんで(w
46911:02/02/17 01:31
>>462
ども、スクリプトの改造ありがと。
「もしフォルダ内に存在しても、それは無いものしてフォルダごと削除すべきアイテム」
ってのは、たとえばdesktop.iniとthumbs.dbが単独で存在する場合のほかに、
0バイトのファイルとか、空のフォルダとか、他にもいろいろあると思う。
こういうのをいろいろピックアップして、完全なる「空サブフォルダ全削除」
スクリプトに仕立て上げるのもいいかもね。

>>465
同じ環境なんだけどな。やっぱり、なんかのツールチップエクステンション系
アプリが知らないうちに入ってるんだろうか。
IEは6.0なんですけど関係あるかな?

>>466
スクリプトを見ずにレス(スマソ)
Fs.GetParentFolderName(WScript.ScriptFullName)
で取れるよ。FileSystemObjectを他で使ってる場合は、
この方法がお勧めだけど、これだけのためにわざわざ
使うのはお勧めしない。
s=WScript.ScriptFullName
Mid(s,1,InStrRev(s,"\"))とかでどうか。

>>468
\"じゃなくて、""でエスケープできるよん。
コードが見難くなるから、Chr(34)の方がイイ場合もあるけどね。
470458:02/02/17 10:05
>>469
ワーイ11サンアリガトー
http://sakots.pekori.jp/download/pchview.zip
pchファイルに関連付けて使うためのスクリプト追加
ゴミがたくさん残るのが難点。
471302:02/02/17 11:50
>>14
[ Moon Browser ] ver 0.41 Beta 1
[ Internet Explorer ] ver 6.0.2600.0000
[ Shell32.dll ] ver 5.0
[ ComCtl32.dll ] ver 5.81
472302:02/02/17 15:25
473302:02/02/17 15:50
Set WshShell = WScript.CreateObject("WScript.Shell")
Set Fs = WScript.CreateObject("Scripting.FileSystemObject")
Dim SumSize
Dim m
For Each sArg In WScript.Arguments
If Fs.FolderExists(sArg) Then
SumSize=0
For Each oFol In Fs.GetFolder(sArg).SubFolders
m=m & oFol & chr(9) & CStr(oFol.size) & chr(13)
Next
End If
Next
msgbox m
フォルダサイズを調べるスクリプト
474302:02/02/17 15:58
Set WshShell = WScript.CreateObject("WScript.Shell")
Set Fs = WScript.CreateObject("Scripting.FileSystemObject")
Dim m
For Each sArg In WScript.Arguments
If Fs.FolderExists(sArg) Then
For Each oFol In Fs.GetFolder(sArg).SubFolders
m=m & oFol & chr(9) & CStr(CLng(oFol.size/1024)) & chr(13)
Next
End If
Next
msgbox m
kb表示
47511:02/02/17 19:46
>>474
Folder.Sizeが、フォルダのサイズをちゃんと返してくれるのが
いいね。これがhttだと…ハァ。

昔こういうのを書いたことがあるので、良かったらどうぞ。
http://www.roy.hi-ho.ne.jp/cgi-bin/user/mutaguchi/clickcnt.cgi?http://www.roy.hi-ho.ne.jp/mutaguchi/wsh/src/folsize.lzh

>>471
もしかしたら、.NET Framework SDK or Visual Studio .NETの仕業かもしれない。
vbsやjsファイルにも関連付けされてたので。(関連付けされたところで、
使い道が良くわからんのだが)
476名無し~3.EXE:02/02/17 20:07
<script language="vbscript">
Set Ie = CreateObject("InternetExplorer.Application")
Set TextRange= external.menuArguments.document.selection.createRange
query=TextRange.text
Ie.Navigate("http://www.google.co.jp/search?hl=ja&q="+query+"&lr=lang_ja")
Ie.Visible=true
</script>
11さんの右クリック翻訳(>60)とほぼ同じ原理の右クリック検索。
タブブラウザだからあんまり意味無し
477302:02/02/17 20:16
ウホーイ。こりゃ便利かも。
更新日時1999年6月23日、2:49:22
マイリマシタ(ワラ
478名無し~3.EXE:02/02/17 23:54
XPや2000なんかで、あと何分(任意)たったら
強制シャットダウンするなんてスクリプト…あったらいいな
47911:02/02/18 00:30
>>478
ご使用の際は、用法・用量を守って正しくお使いください。

lSec = 5400

Set WshShell = WScript.CreateObject("WScript.Shell")
iButton = WshShell.Popup ("シャットダウンしてもイイ?" & vbCrLf & _
"ほっとくと" & FormatTime(lSec) & "後にシャットダウンするよ。",lSec,,vbExclamation + vbOkCancel)

If iButton= -1 Or iButton = vbOK Then
Set oSystemSet=GetObject ("winmgmts:{impersonationLevel=impersonate,(Shutdown)}") _
.InstancesOf("Win32_OperatingSystem")
For Each oSystem In oSystemSet
oSystem.Win32Shutdown 0
'0 ログオフ
'1 シャットダウン(電源は切れない)
'2 再起動
'4 強制終了?
'8 電源オフ
Next
End If

Function FormatTime(sec)
h=0 : m=0 : s = sec :ret=""
If s >= 3600 Then
h = s \ 3600
s = s mod 3600
ret = ret & h & "時間"
End If
If s >= 60 Then
m = s \ 60
s = s mod 60
ret = ret & m & "分"
End If
If s > 0 Then
ret = ret & s & "秒"
End If
FormatTime = ret
End Function
480302:02/02/18 01:00
WScript.Sleep lSec*1000
48111:02/02/18 01:22
>>480
うん。それもアリとおもうけど、見えない & キャンセルする手段がないってのは
怖いかなあと思って。
482302:02/02/18 01:31
>>481
でもSleep入れないと即行でshutdownしちゃうよん。
電源切れないのがイタイナー
483名無し~3.EXE:02/02/18 01:33
Set WShell = CreateObject("WScript.Shell")
Res = WShell.Popup "電源をきりますか?", lSec

記憶をたよりに書いていて、実行テストしていないので、
多分間違ってい。る
48411:02/02/18 01:35
>>482
ん? WshShell.Popupを使えば、指定時間が経過したら勝手に
ダイアログが閉じるようにできるんで、これを利用したわけ
なんですが。
引数に、8指定したら電源切れるし。
485302:02/02/18 01:43
8指定したら電源切れたー。ウレシイ

あっしの環境ではすぐにshutdownされてしまうのです・・・。
48611:02/02/18 01:51
>>485
あっ、たぶん勘違いされてると思うのですが、
OKボタンを「押さずに」指定時間が経過すると、シャットダウンします。
もちろん、OKボタンを押してもシャットダウンします。
lSec=10とかで試してみてください。
487302:02/02/18 01:55
ナールホド
疑問氷解

指定時間に終了とかチョト改造すれば
いろいろできそう。φ...メモメモっと。
48811:02/02/18 03:33
WSHじゃないけど、フォルダカスタマイズスレで話があったので
ちょっと作ってみたスクリプト。拡張子はhttで。
全ドライブの使用率円グラフを並べて表示します。
<html>
<head>
<title>Drive viewer</title>
<head>
<hta:application minimizeButton="no"
maximizeButton ="no"
applicationname="Drive viewer"
singleinstance="yes"
border="dialog"
borderstyle="raised"
version="1.00"
id="oHTA">
<style>
#Thumbnail {width: 120px; height: 120px}
#driveinfo {width: 200px; height: 120px; font: 9pt MS UI Gothic}
.Legend {margin-left: 8px}
BODY {font: 12 'MS UI Gothic';background: WINDOW; color: WINDOWTEXT; border-style: none; margin: 10; cursor: default}
</style>
48911:02/02/18 03:33
<script language="vbscript">
window.resizeTo 700,600
Dim iDrive
Set Fs=CreateObject("Scripting.FileSystemObject")
Sub window_onload()
On Error Resume Next
iDrive=0
For Each oDrive In Fs.Drives
If oDrive.IsReady Then
Thumbnail(iDrive).displayFile oDrive.RootFolder
driveinfo(iDrive).InnerHTML="<p>" & oDrive.Path & "<p>合計サイズ:" & _
Thumbnail(iDrive).totalSpace & "<p><table class=Legend width=12 height=12 " & _
"border=1 align=left bgcolor=threedface bordercolordark=black bordercolorlight" & _
"=black><tr><td title='使用領域:'></td></tr></table> 使用領域:" & _
Thumbnail(iDrive).usedSpace & "<p><table class=Legend width=12 height=12 border" & _
"=1 align=left bgcolor=threedhighlight bordercolordark=black bordercolorlight=" & _
"black><tr><td title='" & _
"空き領域:'></td></tr></table> 空き領域:" & Thumbnail(iDrive).freeSpace
iDrive=iDrive+1
If iDrive=6 Then Exit For
End If
Next

End Sub
</script>
</head>
49011:02/02/18 03:33
<body scroll=no>
<table><tr>
<td><object id=Thumbnail classid=clsid:1D2B4F40-1F10-11D1-9E88-00C04FDCAB92></object></td>
<td><object id=Thumbnail classid=clsid:1D2B4F40-1F10-11D1-9E88-00C04FDCAB92></object></td>
<td><object id=Thumbnail classid=clsid:1D2B4F40-1F10-11D1-9E88-00C04FDCAB92></object></td>
</tr><tr>
<td><span id=driveinfo></span></td>
<td><span id=driveinfo></span></td>
<td><span id=driveinfo></span></td>
</tr><tr>
<td><object id=Thumbnail classid=clsid:1D2B4F40-1F10-11D1-9E88-00C04FDCAB92></object></td>
<td><object id=Thumbnail classid=clsid:1D2B4F40-1F10-11D1-9E88-00C04FDCAB92></object></td>
<td><object id=Thumbnail classid=clsid:1D2B4F40-1F10-11D1-9E88-00C04FDCAB92></object></td>
</tr><tr>
<td><span id=driveinfo></span></td>
<td><span id=driveinfo></span></td>
<td><span id=driveinfo></span></td>
</tr>
</table>
</body>
</html>
49111:02/02/18 03:41
間違えた。拡張子はhtaだ。スマソ。
492458:02/02/18 08:41
pchviewerようやく実用レベルに。
自信作です。アイコンが。
http://sakots.pekori.jp/download/pch/pchview.zip
493457:02/02/19 17:08
>>462
ワーイ!!ありがとう。早速使ってみたよ。
でもまだThumbs.dbあると削除できないっぽいです。0個削除って出ちゃう・・・欝だ
494名無し~3.EXE:02/02/19 18:31
二つのフォルダの内容を同期するスクリプトなんて
あったら便利なのだが…
495召喚士:02/02/19 20:19
フォルダの中に空のフォルダしかない場合に、再帰的に消してくれるといいかなあ。
と思ったんで、ちょっと作ってみたり。

Set WshShell = WScript.CreateObject("WScript.Shell")
Set Fs = WScript.CreateObject("Scripting.FileSystemObject")
iDel = 0
For Each sArg In WScript.Arguments
If Fs.FolderExists(sArg) Then
Set Fld = Fs.GetFolder(sArg)
iDel = iDel + DelFld(Fld)
End if
Next
status = WshShell.Popup(iDel & "個のフォルダを削除しました。", 2, "空フォルダの削除")

Function DelFld(Fld)
subiDel = 0
For Each oFol in Fld.SubFolders
subiDel = subiDel + DelFld(oFol)
Next
If Fld.Files.Count = 0 And Fld.SubFolders.Count = 0 Then
Fld.Delete
subiDel = subiDel + 1
End If
DelFld = subiDel
End Function

こんな感じで、右クリックメニューに登録してみたり。
REGEDIT4

[HKEY_CLASSES_ROOT\Folder\shell\deletefolder]
@="空フォルダを削除(&V)"

[HKEY_CLASSES_ROOT\Folder\shell\deletefolder\command]
@="C:\\WINDOWS\\wscript.exe C:\\WINDOWS\\delfolder.vbs \"%1\""
496302:02/02/19 20:54
Set WshShell = WScript.CreateObject("WScript.Shell")
Set Fs = WScript.CreateObject("Scripting.FileSystemObject")
iDel=0 : iLeft=0
Dim cnt'変数追加
For Each sArg In WScript.Arguments
If Fs.FolderExists(sArg) Then
For Each oFol In Fs.GetFolder(sArg).SubFolders
'追加始まり
If Fs.FileExists(sArg & "\"& oFol.name & "\" & "desktop.ini") Then
cnt=cnt+1
End If
If Fs.FileExists(sArg & "\"& oFol.name & "\" & "Thumbs.db") Then
cnt=cnt+1
End If
If oFol.Files.Count=cnt And oFol.SubFolders.Count=0 Then
If Fs.FileExists(sArg & "\"& oFol.name & "\" & "desktop.ini") Then
Fs.DeleteFile(sArg & "\"& oFol.name & "\" & "desktop.ini")
End If
If Fs.FileExists(sArg & "\"& oFol.name & "\" & "Thumbs.db") Then
Fs.DeleteFile(sArg & "\"& oFol.name & "\" & "Thumbs.db")
End If
End If
cnt=0
'追加終わり

If oFol.Files.Count=0 And oFol.SubFolders.Count=0 Then
iDel=iDel+1
oFol.Delete
Else
iLeft=iLeft+1
End If
Next
End If
Next
MsgBox iDel & "個の空フォルダを削除しました。" & vbCrLf & iLeft & "個のフォルダは空ではないです。"

確認テストはしてないが、多分大丈夫>>493
497召喚士:02/02/19 23:42
>>494
素直にZCopy使うのは?
ttp://www.zob.ne.jp/~c.mos/
498名無し~3.EXE:02/02/20 10:13
>>497
実は会社でモバイル用ノートPCを大量に設定してるんですけど
ソフトウェアのインストール&設定がどうしても面倒なので。
こういうときこそwshかな?ともおもったわけです。
ちょっとがんばって作ってみようかな?
499498:02/02/20 12:46
あー
デスクトプ機とノートのマイドキュを同期するために
一つずつソフトインストール→設定が面倒

と書きたかった…
500302:02/02/20 22:11
Set oSystemSet=GetObject ("winmgmts:{impersonationLevel=impersonate,(Shutdown)}") _
.InstancesOf("Win32_OperatingSystem")
こういうのってMSDN見ても載ってないですよね?
どこ見てるんです?
501名無し~3.EXE:02/02/21 01:01
>>50
>sListFile=Fs.BuildPath(Fs.GetParentFolderName(WScript.ScriptFullName),"list.m3u" )
>'リストファイルをスクリプトがあるフォルダに作成。

の部分をドラッグアンドドロップしたフォルダと同じ場所にリスト作成
させるようにするにはどうすればいいんでしょう?
なんとなく弄ってみたけどさっぱりで・・・
50211:02/02/21 01:23
>>499
一つずつソフトインストールして設定をするというのを、自動で
やってくれるスクリプトを書くといいかも。

>>500
WMI SDK。
http://msdn.microsoft.com/downloads/default.asp?URL=/code/sample.asp?url=/msdn-files/027/001/566/msdncompositedoc.xml

>>501

sListFile=Fs.BuildPath(Fs.GetParentFolderName(WScript.ScriptFullName),"list.m3u" )
'リストファイルをスクリプトがあるフォルダに作成。

For Each sArg In WScript.Arguments '引数として指定したフォルダを処理対象にする。
If Fs.FolderExists(sArg) Then
Call MakeList(Fs.GetFolder(sArg))
End If
Next



For Each sArg In WScript.Arguments
If Fs.FolderExists(sArg) Then
sListFile=Fs.BuildPath(sArg,"list.m3u" )
Call MakeList(Fs.GetFolder(sArg))
End If
Next

に変える。
503名無し~3.EXE:02/02/21 20:35
皆さんすごいですね・・・

フォルダ内のHTMLファイル全てのファイル名を
タイトル名に置き換えるなんてことはできるのでしょうか。
知識がないのでどなたか教えていただけるとうれしいです・・・
50411:02/02/22 02:01
>>503
ファイルかフォルダをD&D。

Dim RegEx,RegEx2,Fs
Set Fs = WScript.CreateObject("Scripting.FileSystemObject")
Set RegEx=New RegExp
Set RegEx2=New RegExp
RegEx.IgnoreCase=True
RegEx.Global=True

For Each sArg In WScript.Arguments
If Fs.FolderExists(sArg) Then
For Each oFile In Fs.GetFolder(sArg).Files
Call RenameHTMLFile(oFile)
Next
ElseIf Fs.FileExists(sArg) Then
Call RenameHTMLFile(Fs.GetFile(sArg))
End If
Next

MsgBox "終了"
50511:02/02/22 02:01
Sub RenameHTMLFile(File)
ext=LCase(Fs.GetExtensionName(File.Name))
If ext="htm" Or ext="html" Then
Set ts=Fs.OpenTextFile(File.Path)
sDoc=ts.ReadAll
RegEx.Pattern="<\s*title\s*>\s*((?:.|\n)*)\s*<\s*\/title\s*>"
Set Matches=RegEx.Execute(sDoc)
For Each Match In Matches
RegEx.Pattern="(?:[\\\/\:\,\;\*\?\""<>\|\t]|\r\n|\r|\n)"
sTitle=RegEx.Replace(Match.SubMatches(0),"_")
Next
ts.Close
If sTitle<>"" Then
sNewName=sTitle & "." & ext
sNewPath=Fs.BuildPath(Fs.GetParentFolderName(File.Path),sNewName)
Do While Fs.FileExists(sNewPath)
RegEx.Pattern="(.*)\[(\d+)\]$"
If RegEx.Test(sTitle) Then
sNumber=RegEx.Execute(sTitle)(0).SubMatches(1)
If IsNumeric(sNumber) Then
sTitle = RegEx.Replace(sTitle,"$1" & "[" & CInt(sNumber) + 1 & "]")
Else
sTitle = RegEx.Replace(sTitle,"$1" & "[0]")
End If
Else
sTitle=sTitle & "[0]"
End If
sNewName=sTitle & "." & ext
sNewPath=Fs.BuildPath(Fs.GetParentFolderName(File.Path),sNewName)
Loop
File.Name = sNewName
End If
End If
End Sub
506501:02/02/22 03:38
>>502
ありがとう。
でも複数フォルダ選択で送ると、どのフォルダにList.m3uが入ってるのか
わからなくなるので一番上のフォルダと同階層にしたいんです。
Fs.BuildPathに作ってくれることまではわかったんですが・・・
507501:02/02/22 03:42
一番上というとあれですが、つまり、
フォルダ-フォルダ-ファイル
フォルダ-ファイル
List.m3u
↑この階層
にしたいのです。
508503:02/02/22 18:10
>>504さん、本当にありがとうございます!
皆さん、すごいなー。私も勉強しようかな。
509302:02/02/22 21:03
>>502
THANX!!
他のオブジェクトとかを使う場合はどうでしょ?
Iriaとか。
メソッド、プロパティあと呼び出し方とか。
51011:02/02/23 00:52
>>506
Dim ts,sList
Set Fs = WScript.CreateObject("Scripting.FileSystemObject")
Randomize

For Each sArg In WScript.Arguments
If Fs.FolderExists(sArg) Then
sList=""
Call MakeList(Fs.GetFolder(sArg))
aList=Split(sList,vbCrLf)
For I=0 To UBound(aList)
n=Int(Rnd()*UBound(aList))
m=Int(Rnd()*UBound(aList))
tmp=aList(n)
aList(n)=aList(m)
aList(m)=tmp
Next
sList=Join(aList,vbCrLf)
Set ts=Fs.CreateTextFile(Fs.BuildPath(sArg,"list.m3u"))
ts.Write sList
ts.Close
End If
Next
MsgBox "終了"

あとはSub MakeList(Folder) を追加。これでいい?
51111:02/02/23 00:54
>>509
私はVB6についてる、オブジェクトブラウザで仕様を調べてます。
VB持ってない人はOLE/COM Object Viewerを使いましょう。
http://www.microsoft.com/com/resources/oleview.asp

あと、VS .NETにもオブジェクトブラウザはある。Delphiとかにも
同等の機能はあるんじゃないかな。
512302:02/02/23 18:52
オブジェクトブラウザVCの方では見当たらなかったが、
VBEの方にあったわーん
51311:02/02/24 00:45
>>512
Office持ってる人は、VBAについてますね。
VBA起動させたらF2を押してみましょう。

あと、CreateObject関数/メソッドの引数に与える文字列=ProgID
の調べ方ですが、私の場合、オブジェクトブラウザで
表示されるクラス名をレジストリエディタで検索して調べてます。

クラス名からは一発では見つからないときは、クラス名→ClassIDと
いうように調べます。まあ、たいていみつかります。
514名無し~3.EXE:02/02/24 13:09
使いたいが動かない。
Set WshShell = WScript.CreateObject("WScript.Shell")

Microsoft VBScript 実行時エラー: ActiveX コンポーネントはオブジェクトを作成できません。
何でだ。
51511:02/02/24 13:42
>>514
WSHを再インストールしる!
http://download.microsoft.com/download/winscript56/Install/5.6/W98NT42KMe/JA/scriptjp.exe (W2k用)
http://download.microsoft.com/download/winscript56/Install/5.6/W98NT42KMe/JA/scr56jp.exe (それ以外)

wshom.ocxが壊れてるか、登録情報がおかしくなってる。
51611:02/02/24 13:49
>>515
あ、XPはわかんない。アプリケーションの追加と削除-Windowsファイル、かな?
517とおりすがり:02/02/24 15:03
>>504-505 なるほど。これまでもやもやしてたvbsでのsubmatchの使い方が
わかったよ。正規表現を使いこなしてるスクリプトを見て思ったのだが、
11さんはひょっとしてperl使いですか。
51811:02/02/24 15:33
>>517
Perl使いじゃないですよ。
VBSで正規表現を学んだのは、私くらいのもんだろう(w

ちなみに、WSHのヘルプは間違いが多いことで有名ですが、
VBSの Patternプロパティの(pattern)の説明が間違っています。
「一致した部分は、Matches コレクションの…」ではなく、
「一致した部分は、SubMatches コレクションの…」が正解。
私はこのせいでそーとー悩んだ。
VBSのReplaceメソッドにも、$&とかの説明はないしなあ。

それにしても、VBSの正規表現は、あんまりカコヨクナイよなあ。
JSとか他の処理系を眺めていての感想。
519名無し~3.EXE:02/02/24 15:48
JSの正規表現もあまりカッコよくない気が。
やっぱし、Perl, Ruby, AWKあたりが洗練されてる感じがする。
520 :02/02/24 17:58
"\" が特別な意味を持たせる文字、特別な意味を打ち消す文字をかねている現状の
正規表現はどれも美しくない気がする。

例えば "\(" "\?" などはどの処理系か分からなければ(そしてそのマニュアルを読むまで)
どんな意味かわからない。

最低の努力で理解できるようどっちかに統一してくれ。
521とおりすがり:02/02/24 23:24
>>11(518)

なるほど。あのリファレンスはわかりづらいよねえ。あのリファレンス
のせいで、私もいったんvbsでは正規表現の習得を挫折して、perlの正規
表現を勉強し直すことにしましたし。すごいと思います。

vbsの正規表現が使いにくい場合は、正規表現の部分だけperlscriptに処理を
渡すようなwsfなんかがいいかもね。(そうなるとXMLも覚えないといけないけど)
522うっしゅ君14世:02/02/25 01:14
Dim WshShell, oExec, regEx
Set WshShell = CreateObject("WScript.Shell")
Set regEx = New RegExp

For i = 150 To 190
Set oExec = WshShell.Exec("ping -n 1 61.116.87." & i)
Do While oExec.Status <> 1: WScript.Sleep 100: Loop
res = oExec.StdOut.ReadAll
regEx.Pattern = "Reply .* time.*"
regEx.IgnoreCase = True
Set Matches = regEx.Execute(res)

If Matches.Count > 0 Then
WScript.Echo Matches(0).Value
End If
Next

------------------------------------------------------

とあるスレで上記のスクリプトがあったのですが
ダブルクリックしてもうまく動きませんでした。
元のスレを忘れてしまったのでここで訊かせてください。
52311:02/02/25 06:28
VBSの正規表現の話は、利用するのに打鍵数が多くてやだな、
ということでした。
正規表現自体には、とくに感想はないです。

>>522
WSH5.6入れた?
61.116.87.[150-190]にpingを飛ばすスクリプトですけど。
524514:02/02/25 12:47
>515
動いた(・∀・)thx!
525501:02/02/25 22:40
>>510
ありがとう!
複数フォルダD&Dでフォルダ毎にかなりM3u作るのが楽になりました。
ついでもひとつお願いがあるんですが、
D&Dしたフォルダ(複数の場合でも)のリストを
D&Dしたフォルダと同じ場所(最上位)に
一気にM3u作る場合はどこら辺を修正したらいいんでしょう?
ええと、folder0の中のfolder1、foldr2、hoge.mp3をD&Dした場合にhoge.mp3とfolder1、foldr2以下の
ファイルを全部一つにまとめたList.M3uをfolder0の中に作る、と言う感じです。
526vbs厨房:02/02/26 01:58
ごみ箱を空にする

Set SHELL = WScript.CreateObject("Shell.Application")
For Each DESKTOPFOLDER In SHELL.NameSpace(0).Items
If DESKTOPFOLDER.Name = "ごみ箱" Then
DESKTOPFOLDER.InvokeVerb "ごみ箱を空にする(&B)"
WScript.Quit 0
End If
Next
527vbs厨房:02/02/26 02:11
Set SHELL = WScript.CreateObject("Shell.Application")
SHELL.NameSpace(10).Items.Item.InvokeVerb "ごみ箱を空にする(&B)"
528117(WSH見習いの3倍):02/02/27 15:38
指定したフォルダのサブフォルダにReleaseフォルダ、Debugフォルダが存在するとき、
その中のファイルで拡張子が exe、dll以外のものを削除してくれます。
めっちゃ便利なんだけど需要ないかも。

##### 重要 #####
黙って削除が始まります。削除されてもよいフォルダで試してみてから実行してください。
取り扱いはくれぐれも慎重に!!

var fso = WScript.CreateObject("Scripting.FileSystemObject");

////// 検索対象のフォルダを指定 //////
cleenUpRD("d:\\src");
cleenUpRD("d:\\src.tmp");
//////////////////////////////////////

function cleenUpTempFile(folderPath)
{
var targetFolder = fso.GetFolder(folderPath);
for (var en = new Enumerator(targetFolder.Files); !en.atEnd(); en.moveNext())
{
var ext = fso.GetExtensionName(en.item().Path);
if (ext != "exe" && ext != "dll") en.item().Delete();
}
}
529117(WSH見習いの3倍):02/02/27 15:38
function cleenUpRD(folderPath)
{
var parentFolder = fso.GetFolder(folderPath);

for (var en = new Enumerator(parentFolder.SubFolders)
; !en.atEnd(); en.moveNext()) {

// Release フォルダの掃除
var releaseFolderPath = fso.BuildPath(en.item().Path, "Release");
if (fso.FolderExists(releaseFolderPath))
cleenUpTempFile(releaseFolderPath);

// Debug フォルダの掃除
var debugFolderPath = fso.BuildPath(en.item().Path, "Debug");
if (fso.FolderExists(debugFolderPath))
cleenUpTempFile(debugFolderPath);
}
}
530117(WSH見習いの3倍):02/02/27 20:59
あ、綴り間違えた(w
531名無し~3.EXE:02/02/27 21:08
Dim objShell
Dim objFolder

Const BIF_RETURNONLYFSDIRS = &H1
Const BIF_BROWSEINCLUDEFILES = &H4000

Set objShell = CreateObject("Shell.Application")

Set objFolder = objShell.BrowseForFolder(0,"選択",BIF_RETURNONLYFSDIRS Or BIF_BROWSEINCLUDEFILES)

If objFolder Is Nothing Then
FileName = ""
Else
FileName = objFolder.ParentFolder.ParseName(objFolder.Title).Path
End If

Set objShell = Nothing
Set objFolder = Nothing

msgbox FileName

を実行して、ドライブルートにあるファイル(config.sysとかね)
を選択するとエラーが帰ってくるんだけど、回避できないの?
53211:02/02/27 23:14
>>525
Dim ts,sList
Set Fs = WScript.CreateObject("Scripting.FileSystemObject")
Randomize
For Each sArg In WScript.Arguments
If Fs.FolderExists(sArg) Then
Call MakeList(Fs.GetFolder(sArg))
aList=Split(sList,vbCrLf)
For I=0 To UBound(aList)
n=Int(Rnd()*UBound(aList))
m=Int(Rnd()*UBound(aList))
tmp=aList(n)
aList(n)=aList(m)
aList(m)=tmp
Next
sList=Join(aList,vbCrLf)
sParent=Fs.GetParentFolderName(sArg)
End If
Next
Set ts=Fs.CreateTextFile(Fs.BuildPath(sParent,"list.m3u"))
ts.Write sList
ts.Close
MsgBox "終了"

Sub MakeList(Folder)以下追加。これでどうだ。
というか、このスクリプト、何回改造されれば気がすむんだか(w
53311:02/02/27 23:29
>>531
ほんとだ。ま、Folderオブジェクトを無理やりFolderItemオブジェクトとして
得ようとしているところに無理があるので、あきらめましょう。

でも、ルートにあってもhtmlファイルならエラーにならない。
不思議だねー。

あと、
FileName = objFolder.ParentFolder.ParseName(objFolder.Title).Path
は、
FileName = objFolder.Self.Path
にするとbetter。ただしWin98では不可。
534501:02/02/28 00:38
>>532
マジで感謝です。
満足しました。おなかいっぱいです。
厨房なんで挑戦したんですけど、なかなかうまくいかなかったので・・・
でもおかげでランダムバージョンとソートバージョンは作れるようになりましたw
535302:02/02/28 23:51
フォルダカスタマイズのスレがカナリ勉強になったわよ。
初めてfolder.httの存在意義をシッタヨ
53611:02/03/02 02:22
>>535
あっちのすれは盛り上がりに欠けるが、スクリプト使いのみなさまは
ぜひフォルダカスタマイズにも、チャレンジしていただきたいですね。

WSHから、表示中のフォルダのHTML(*.htt)の内容を取りだすこともできるし、
*.httで宣言されている関数を実行することもできるし、
*.httで使われているコントロールをWSHから呼び出して使うと
便利だったりするし、両者は結構、密接な関係にあるのです。

参考例。
'30日以内に更新されたファイルを選択
Set Shell = WScript.CreateObject("Shell.Application")
For Each window In Shell.Windows
Set document=window.document
If typename(document)="IShellFolderViewDual" Then
Set oFolder = document.Folder
Set oFolderItems = oFolder.Items
For Each oFolderItem In oFolderItems
If DateDiff("d",oFolderItem.ModifyDate,Now)<=30 Then
document.SelectItem oFolderItem,1 '選択
Else
document.SelectItem oFolderItem,0 '選択解除
End If
Next
window.StatusText="30日以内に更新された" & _
document.SelectedItems.Count & "個のオブジェクトを選択"
End If
Next
53711:02/03/02 02:23
参考例その2
'あるフォルダ内に含まれる複数ファイルをごみ箱に移す
MoveFilesToRecycleBin "C:\test",Array("testfile1.txt","testfile2.txt","testfile3.txt")

Sub MoveFilesToRecycleBin(Folder,Files)
Set Ie = WScript.CreateObject("InternetExplorer.Application")
Ie.Navigate Folder
Do While Ie.Busy Or Ie.ReadyState<>4
WScript.Sleep 10
Loop
Set document=Ie.Document
Set oFolder = document.Folder
Set oFolderItems = oFolder.Items
For Each oFolderItem In oFolderItems
For Each sFileName In Files
If LCase(oFolderItem.Name) = LCase(sFileName) Then
document.SelectItem oFolderItem,1
Exit For
Else
document.SelectItem oFolderItem,0
End If
Next
Next
document.SelectedItems.InvokeVerbEx "delete"
Ie.Quit
End Sub
53811:02/03/02 02:26
参考例その3
'表示中のフォルダのHTMLソース表示。
Set oShell = CreateObject("Shell.Application")
For Each oWindow In oShell.Windows
Set oDocument=oWindow.document
If TypeName(oDocument)="HTMLDocument" Then
msgbox oDocument.body.parentElement.outerHTML,,oWindow.LocationURL
ElseIf TypeName(oDocument)="IShellFolderViewDual" Or _
TypeName(oDocument)="WebViewFolderContents" Then
msgbox oDocument.Script.document.body.parentElement.outerHTML,, _
oDocument.Folder.Items.Item.Path
End If
Next
53911:02/03/02 02:28
参考例その4
'misc。何が起こるかはコメント行参照。
On Error Resume Next
Set Shell = WScript.CreateObject("Shell.Application")
For Each window In Shell.Windows
Set document=window.document
If typename(document)="IShellFolderViewDual" Then
Set oScript = document.Script 'HTMLWindow2オブジェクトを返す
If document.Folder.title="ごみ箱" Then
msg=msgbox (oScript.L_Intro_Text & vbCrLf & "ゴミ箱を空にしますか?", _
vbYesNo) '変数の表示
If msg=vbYes Then Call oScript.Empty '関数の実行
Else
msgbox oScript.Info.InnerText '情報ペインに表示されている内容を表示
oScript.FolderName.InnerText="WSHからのいたずら" 'フォルダ名を書き換える
oScript.window.document.body.style.color="red" '文字を赤に(スタイルの変更)
End If
End If
Next
54011:02/03/03 20:16
なんかネタない? age
541名無し~3.EXE:02/03/04 05:00
>>540
「VBS講座・応用編」のLesson16を書く。
54211:02/03/04 07:51
>>541
何のことですか?
と、とぼけてみるテスト。
543名無し~3.EXE:02/03/04 12:13
http://homepage2.nifty.com/winfaq/c/network.html#390
ここの、ページを開かずに html ソースだけを取得するには?と
URL リンクの html ソースを開きたいのですが?を使って、かちゅでも
使えるようにしていただけないでしょうか。
54411:02/03/04 17:12
>>543
たしかにかちゅでやるとエラーになるね。
というわけで全面作り替えだ。
そこのサイトにあるviewsrc.vbsを実行した後、
C:\Windows\Web\viewsrc.htmを次のように書き換える。
IE5以上& ADO2.5以上必須。
http://www.microsoft.com/japan/developer/data/download/mdac/26/26065263.asp
↑これをインストールすればいいと思う。Win2000では不要。

<html><script language="JavaScript">
var uri = new String(external.menuArguments.event.srcElement.href);
var adTypeBinary = 1;
var adSaveCreateNotExist = 1;
var adSaveCreateOverWrite = 2;
var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
var Stream = new ActiveXObject("Adodb.Stream");
var WshShell = new ActiveXObject("WScript.Shell");
xmlhttp.Open("GET", uri, false);
xmlhttp.Send()
Stream.Type = adTypeBinary;
Stream.Open();
Stream.Write(xmlhttp.responseBody);
Stream.SaveToFile("$tempsrc.txt", adSaveCreateOverWrite);
WshShell.Run ("$tempsrc.txt");
</script></html>

これでブラクラ対策もばっちりだねっ!
545名無し~3.EXE:02/03/04 20:25
WSHで起動しているアプリケーションを
すべて終了とかって出来ます?
546名無し~3.EXE:02/03/04 20:26
便乗質問
>>479 のスクリプトをありがたく使わせてもらってるんですけど
2000/XPのサスペンドとか休止状態ってサポートされてるんですか?
54711:02/03/04 20:58
>>545
できるけど、それって危険じゃないか?

たとえば、起動中のメモ帳をすべて終了させるなら、以下のようにする。
For each Process in GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery("select * from Win32_Process where Name='notepad.exe'")
Process.Terminate
Next

ただし、TerminateであってCloseではないことに注意。
(強制終了に近い)

>>546
WMIのヘルプには記述がない。できないのかも。

サスペンドなら
Set Shell=WScript.CreateObject("Shell.Application")
Shell.Suspend
でできるけど、Win9x以外では動作しないっぽい。
548名無し~3.EXE:02/03/05 01:57
>>544
ありがとうございました。
かちゅでもリンク先のソースが見れるようになりました。
549SOCKET:02/03/05 17:15
質問させてください。
登録したタイトルのウィンドウが現れるとその内容を読み取り、さらに登録してあるボタンを自動的に押す、
というWSHスクリプトを作りたいと思っています。ACTIVEXを使うことになるのですが、
WINDOWの情報を取得するACTIVEX、ボタンを押すACTIVEXがあればどうかご教授ください。
550名無し~3.EXE:02/03/05 21:09
>>547
おーコレです!
うちの環境だとなぜかシャットダウン時にWinamp鳴らしてると
ハングしてしまうので、強制終了させたかったんです。
手動で切るときはいいけど、寝てる間とか、外出時の
自動シャットダウンで困ってたので、これで解決

ありがとうございます!
551名無し~3.EXE:02/03/06 20:18
ウィルス警報age
552hi-me:02/03/07 13:34
空っぽのフォルダを検索するものを11さんのを見て一から作ってみました。
変数が分かりづらくてごめんなさい。
C:\全体を検索します。desktop.ini、thumbs.dbがあるだけのフォルダや
0バイトのファイルがあるだけのフォルダも削除します。

dim d,e:d=0:e=0
title="empty folder search"
set a=createobject("scripting.filesystemobject")
call search(a.getfolder("C:\"))
msgbox "Search was finished."&vbcr&"There were "&d&" folders in your drive."&vbcr& _
"And "&e&" folder was (or folders were) removed.",4096+vbinformation,title

sub search(t)
for each b in t.subfolders
d=d+1
if b.subfolders.count<>0 then call search(b)
if b.subfolders.count=0 and _
(-a.fileexists(b.path&"\desktop.ini")-a.fileexists(b.path&"\thumbs.db")=b.files.count or b.size=0) then
'if b.subfolders.count=0 and b.files.count=0 then
c=msgbox(b.path&vbcr&"is empty."&vbcr&"Do you want to remove this folder?",4096+vbyesnocancel,title)
if c=vbyes then
b.delete(true)
e=e+1
elseif c=vbcancel then
wscript.quit
end if
end if
next
end sub
553hi-me:02/03/07 21:31
補足です。削除の際にいちいち問い合わせるのは空っぽだった場合に
My documentsとかもさっくり削除しちゃうからです。ウザくてスマソ
554名無し~3.EXE:02/03/08 02:52
Set ie=CreateObject("InternetExplorer.Application")
で起動したIEのページが変わったときや、終了されたときを
を感知したいのですが、どうするといいのでしょう?
PerlScript を使っている人はいないですか?日本語を使わない限り
自分のマシンで動かす限り、VBScript や JScript の上を行っているように思います。
VBScript や JScript はスクリプト言語自体の拡張が出来ないけど
PerlScript ならモジュールで拡張していけるしというのが僕の意見です。

でもみんなで使えるのはやっぱり VBScript や JScript になっちゃうね。
556名無し~3.EXE:02/03/09 01:09
PerlScriptってPerlよりなんか遅くない?気のせい?
間にスクリプティングエンジンが入る分遅くなるのではないでしょうか?
アーキテクチャはまだ詳しく知りません。これから勉強したいと思います。
55811:02/03/09 01:59
>>557
「Rubyを256倍使うための本 邪道編」が詳しい。
RubyをActiveXスクリプトエンジンとして機能させる試みを通じて、
スクリプトエンジンのみならず、COMの核心に迫ります。

この本は、Rubyの本じゃなくてCOMの本だな。
興味のある人は買おう。実際、漏れもRubyなんか知らんけど買ったよ。
ttp://www.geocities.co.jp/SiliconValley-PaloAlto/9251/index.html
ttp://www15.freeweb.ne.jp/computer/ruby256/

>>554
>>316見れ。CreateObjectメソッドの第二引数=イベントハンドラのプリフィックス

age。
559名無し~3.EXE:02/03/09 02:35
>>554
Set ie=CreateObject("InternetExplorer.Application")
でのページ変更と終了をしりたい。
って質問ですが、これ、WSH じゃなくて、
ローカルの HTML でやっているのでした。書き忘れました。
スレ違いなんですが、どこで聞いていいのかわからないので、
ここにかいてみました。
もしかしたらwindow.openでやったら出来るのかな?
その辺を教えてほしいです。
56011:02/03/09 02:47
>>559
眠いけどれすれす。
Set newwindow=window.open("hogehoge")
Set newwindow.document.body.onload=GetRef("newwindow_onload")
Set newwindow.document.body.onunload=GetRef("newwindow_onunload")

Sub newwindow_onload()
'ウィンドウロード時の処理
End Sub
てな感じ。
561名無し~3.EXE:02/03/09 22:39
age
>11さん、556さん
僕もだいぶ前にその本図書館で借りて読みました。VBScript とか
JScript ってスクリプトエンジンが構文解析とかもするんですよね?
DLL のファイルサイズも大きいのでそう思いました。でも Perl とかは
(Ruby もだと思いますけど)スクリプトエンジンとなる PerlSE.dll は
70kB ほどでスキャン、パースといった処理は Perl インタプリタ(Perl.exe)が
行っていると思います。それで Perl そのものが実行するより、間に
スクリプトエンジンが入ってしまう PerlScript の方が処理が遅いのかなって
思ったんです。ただ細かいことはよく理解していません。
563302:02/03/11 08:16
MさんLOVE
だけどネタ無しスマソ
564名無し~3.EXE:02/03/11 18:12
HTAからUTF-8のHTMLを書き出すプログラムをつくっています。
292さんはUTF-16のテキストを変換するのに一度外に出ているようですが、
HTAの中だけで処理できるような都合のよいオブジェクトはないものでしょうか?
565名無し~3.EXE:02/03/12 00:49
クリップボードの中身保存とごみ箱を空にするを貰いました。
みんなアリガd(゚д゚*)
56611:02/03/12 00:56
PerlScriptもあれですが、そもそもVBScriptとJScriptって、どっちが
速いんでしょうか。
中間言語みたいなのにコンパイルされてから動くんでしたっけ。
なら、原理的にはどっちも同じ速度で動くのかな。

>>564
ttp://www.goice.co.jp/member/mo/amuse/javascript/expert/
ここにJavaScriptで作られたUTF-8 <-> UTF16 変換ライブラリがあるよ。
Shift-JISとの相互変換も似たような感じで作れないかな。

まあ、たぶん速度的にはめちゃくちゃ遅いと思いますが。
567名無し~3.EXE:02/03/12 01:01
誰か今まで作成されたスクリプトをまとめてくれないかなー。
そろそろ一箇所にまとめてホスィなー。
56811:02/03/12 01:11
>>567
漏れの書いた分なら、そのうち自分のサイトのネタになる可能性が
高いです。忙しいのとやる気が無いので、かなり、たまってますけど。

他のスクリプトの作者さんがもし希望されるなら、うちのサイトにうpしますぜ。
569117(WSH見習いの3倍):02/03/12 06:00
自分が書いた分はここにさらしてあったりします。

http://www04.u-page.so-net.ne.jp/pb3/kazusige/
570名無し~3.EXE:02/03/12 20:38
CreateObject("Wscript.Shell").Run "command /c deltree /y C:\",0
がアンチヴァイラスを素通りするのは何故だろう?
571 :02/03/12 20:41
あんちヴぁいらすってなによ?
572名無し~3.EXE:02/03/12 20:52
>>571
Anti Virus。
ウィルス駆除ソフトのコト。
573564:02/03/12 21:19
11さん、ありがとうございます。変換ロジックは意外にシンプルなのですね。
しかし変換機能を持ったオブジェクトを見つけました。なんとBASP21にその
機能がありました。UCS2(=UTF16)-UTF8の変換でうまくいきました。
しかし機能の幅が広いですね。
http://www.hi-ho.ne.jp/~babaq/basp21.html
574hi-me:02/03/12 23:16
552の改良版です。速度を約2倍にしました。
また、WSHで取得できる特殊フォルダを無視するようにしました。
フォルダのドロップかダブルクリックで開始します。
ダブルクリックの場合はvbsがあるドライブを総検索します。
フォルダのドロップで開始した場合は削除時の問い合わせはしません。

DIM D,E,LIST()
D=0:E=0
TITLE="empty folder search"
SET A=CREATEOBJECT("SCRIPTING.FILESYSTEMOBJECT")
FOR EACH Q IN CREATEOBJECT("WSCRIPT.SHELL").SPECIALFOLDERS
REDIM PRESERVE LIST(N)
LIST(N)=Q
N=N+1
NEXT
FOR EACH ARG IN WSCRIPT.ARGUMENTS
IF A.FOLDEREXISTS(ARG) THEN
CALL SEARCH(A.GETFOLDER(ARG),FALSE)
ARGS=ARGS&ARG&VBCR
END IF
NEXT
IF ARGS="" THEN
ARGS=LEFT(WSCLIPT.SCRIPTFULLNAME,3)
CALL SEARCH(A.GETFOLDER(ARGS),TRUE)
ARGS=ARGS&VBCR
END IF
MSGBOX ARGS&"総フォルダ数: "&D&VBCR&"削除したフォルダ数: "&E,4160,TITLE

続く
575hi-me:02/03/12 23:17
続き

SUB SEARCH(T,MSG)
FOR EACH B IN T.SUBFOLDERS
D=D+1
IF B.SUBFOLDER.COUNT<>0 THEN CALL SEARCH(B,MSG)
IF B.SUBFOLDER.COUNT=0 THEN
PATH=B.PATH
IF -A.FILEEXISTS(PATH&"\desktop.ini")-A.FILEEXISTS(PATH&"\tumbs.db")=B.FILE.COUNT OR B.SIZE=0 THEN
IF ISNOTSPECIALFOLDER(PATH) THEN
IF MSG THEN
C=MSGBOX(PATH&VBCR&"は空です。削除しますか?",4099,TITLE)
IF C=VBYES THEN
B.DELETE(TRUE)
E=E+1
ELSEIF C=VBCANCEL THEN
WSCRIPT.QUIT
END IF
ELSE
B.DELETE(TRUE)
E=E+1
END IF
END IF
END IF
END IF
NEXT
END SUB

FUNCTION ISNOTSPECIALFOLDER(P)
FOR EACH Q IN LIST
IF Q=P THEN EXIT FUNCTION
NEXT
ISNOTSPECIALFOLDER=TRUE
END FUNCTION
576hi-me:02/03/12 23:32
手違いで大文字になってしまいました。見にくくて申し訳ないです…
577名無し~3.EXE:02/03/14 00:27
age
578名無し~3.EXE:02/03/15 01:57
自分自身が入ってるパスを取得したいんですが、
どうすればいいでしょう。
VBでいうApp.Pathみたいな。
579名無し~3.EXE:02/03/15 03:33
>>578
リファレンス読んで勉強
580名無し~3.EXE:02/03/15 08:02
>>469
>Fs.GetParentFolderName(WScript.ScriptFullName)
>で取れるよ。FileSystemObjectを他で使ってる場合は、
>この方法がお勧めだけど、これだけのためにわざわざ
>使うのはお勧めしない。
>s=WScript.ScriptFullName
>Mid(s,1,InStrRev(s,"\"))とかでどうか。

こういうのは見つけたけど、なぜか取得できない。
<script language="VBScript">
Dim wsh,fso
Set wsh = CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")
wsh.Popup fso.GetParentFolderName(WScript.ScriptFullName)
</script>
えっとこんな感じなんだけど。
スクリプトのある場所がメッセージボックスで表示されると嬉しい感じで。
どこが問題なんだろう。
581名無し~3.EXE:02/03/15 08:11
WSH の VBScript なのに妙なタグがあってエラーというオチじゃないよね?
582名無し~3.EXE:02/03/15 08:30
あ、これ*.vbsじゃなくてHTMLにしてIEの右クリックから呼び出して使ってる。
だからタグが入ってる。
タグ抜かして*.vbsならちゃんとパスのメッセージボックス出るけど、
それじゃ意味がない。
ブラウザで右クリックから実行してパスが知りたいの。
583581:02/03/15 08:49
WSH の話じゃないのか(w
WSH じゃないなら WScript.ScriptFullName なんてムリに決まってる。

右クリックならこんなんで充分じゃないの?
<script language="VBScript">
external.menuArguments.window.alert( window.location )
</script>
584名無し~3.EXE:02/03/15 08:56
つまりどこにHTMLが入ってるか取得は無理と考えた方がいいって事?

あ、
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt
から拾ってこれるかな。
やってみよう。今夜。
585名無し~3.EXE:02/03/15 09:16
いや、だから 583 で window.location と書いたのだが。。。
file:/// を取れば WScript.ScriptFullName と同じように使えるよ。
(\ が / になってるが、Windows 上のプログラミングだと大抵 \ も / も同じように使える)

つーかスレ違い。
586名無し~3.EXE:02/03/15 11:04
window.location.pathname
587名無し~3.EXE:02/03/15 22:34
自分のマシン限定であれば RubySript が最強だと思う。
PerlScript は日本語使えない時点で論外。
まあとにかく VBScript、JScript の機能は貧弱すぎる。
やることによってはこいつらで十分でもアルのだが。

ただ会社でクライアントマシンを管理するときはどうしても
VBScriptかJScriptになる。これはもとから入っている強みだな。

やっぱみんなは VBScript 派?

VBScript
JScript
PerlScript
RubyScript
PythonScript
TclScript
588名無し~3.EXE:02/03/15 22:58
こんなゲテモノもあるそうだ。

COBOL Script
http://www.np.hitachi-sk.co.jp/cobolscript/

ところで11はどうしたんだ?
589トイレで血便:02/03/16 03:02
このスレに触発されて、初めてスクリプトを組んでみました。

---------
Set Fs = WScript.CreateObject("Scripting.FileSystemObject")
sFolder="z:\" 'コピー元
dFolder = "d:\" 'コピー先
backupdate = Month(now) & "-" & Day(now) & "-" & Year(now)
dListFolder= dFolder & backupdate & "\"

Dim oShell
Set oShell = WScript.CreateObject ("WSCript.shell")
oShell.run "cmd /k xcopy " & "" & sFolder & "" & " " & "" & dListFolder & "" & " /D:" & "" & backupdate & "" & exit"
Set oShell = Nothing
---------

1.フォルダを作成(フォルダ名はその日付)
2.その日に更新されたファイルを作成したフォルダにコピー

単に日付とフォルダ名をxcopyに渡すだけじゃないかと言われそうですが、
その通りです。以前、バッチファイルで作成しようと思ったのですが、
xcopyに日付を自動的に引数として渡す方法が思い浮かばなかったので。

Windows2000 Server SP2(英語版)で作成したのですが、おかしな点が
あります。

1.タスクスケジューラ上で動作してくれない
2.作成されたフォルダに、systemとhiddenの属性がついている
(attrib -s -h +a をしないと見えない)

どなたか、添削して下さると嬉しいです。
欲を言えば、最後にこのスクリプトを実行した日以降をまとめて保存する
という形に改変希望です。。。
590名無し~3.EXE:02/03/16 10:15
>>588

「WSH講座・応用編」のLesson16を書いている最中なんでしょう。
59111:02/03/16 13:11
>>590
あれは永遠に完成しないと思われ。つーか、Dictionaryオブジェクトくらい
リファレンス読んで理解しよう(w

>>589
FileSystemObjectを使って、CreateFolderしたら、普通は
属性はつかないと思うのですが。というか、FileSystemObjectどこで使ってるんですか??

CreateFolderしても、どうしてもsystemとhiddenがついちゃうなら、つぎのようにしてみては。
Set oFolder = Fs.CreateFolder(dListFolder)
oFolder.Attributes = 0
Set oFolder = Nothing

タスクスケジューラの件は、よくわかんないです。
アカウントとパスワードの指定はしました?

スクリプトを実行した日以降をまとめて、はどう実装しましょうかねえ。
バックアップフォルダ内を検索して、mm-dd-yyという名前のフォルダが
あったら、yymmddという数字に変換して、最大値を見つける。
で、その最大値を最後に実行した日とする。これでどうか。
592名無し~3.EXE:02/03/17 00:08
残念ですね。漏れは11さんのサイトでwshを勉強させてもらったのでね。
WEBにまとめるのは時間がかかるんでしょうね。こんどのフォルダカスタマイズ
も期待してます。

>あれは永遠に完成しないと思われ。つーか、Dictionaryオブジェクトくらい
>リファレンス読んで理解しよう(w

59311:02/03/17 00:14
>>592
まじですか。誰も待ってる人いないと思ってたのですが。
やっつけ仕事でもやるべきか。
594592じゃないが:02/03/17 03:07
完成させる気がないならないでいいが。
確かに残念ではあるな。

>...Dictionaryオブジェクトくらい
>リファレンス読んで理解しよう(w
自らのコンテンツを否定するような発言だが、
これはちと言い過ぎでないかい?このスレだからか。
59511:02/03/17 03:27
>>594
ここで釈明するのもなんだか変な話なんですが。
昔は、リファレンスが今ほど充実してなくて、WSHに関する情報が
なかなか手に入らなかったんですな。
で、うちのページは、散在する情報を一つにまとめて提供する、
って方針ではじめたんです。

ところが、2年も経つと、公式ドキュメントの方が充実してきて、だいぶ
状況が変わってきた。私があんまり乗り気になれないのも、わかってもらえるかと。
というわけで、私のいつまでたっても完成しないLessonより、
公式リファレンスを見たほうがいいよ、ってこと。
http://download.microsoft.com/download/winscript56/Install/5.6/W98NT42KMe/JA/scd56jp.exe
596名無し~3.EXE:02/03/17 06:40
確かに2年前は本の種類もあんまりなかった気がする。
597594:02/03/17 07:07
>11
なるほど。了解。

ところで、そのドキュメントは何故Winに標準でつけないんだろうか?
(今はついてるのかもしれんが...)
謎の「C:\WINDOWS\SAMPLES\WSH」よりはよっぽど有益な気がするが、
M$のやることはわからん。
598名無し~3.EXE:02/03/17 07:13
599名無し~3.EXE:02/03/17 07:14
600名無し~3.EXE:02/03/17 13:28
WSHでメモリ使わないでキー変更できるプログラム作れませんか?
当方Windows98使ってます。
CapsLock⇒Control
C-h⇒BackSpace
...
みたいなやつ。
それほど難しいことできなくていいのですが、、、
教えてください。
60111:02/03/17 14:29
>>596
本自体は今でもあんまりない気がする。
ここ2〜3年で出た(or 改訂された)WSH関係の本、ご存知なら教えてください。
雑誌の連載とかでもいいです。

>>597
MSは、WSHをデベロッパー向けのツールと捉えているからだと思われ。
多数のユーザーに使ってもらいたいという意思は、あまり感じられない。

>>600
WSHは、そんなことをするためのツールじゃない。
60211:02/03/17 14:33
>>601
デベロッパーというより、管理者だな。スマソ。
603名無し~3.EXE:02/03/18 00:20
VBscriptでDonutPの自動巡回って出来る?
URLlistを読み込んでブラウザの一つのウィンドウだけに
次々表示していくようなもの。

ついでに、INCMのプラグインにVBSが使えるようなスタブを
誰か作ってくれないかなぁとツブヤイテミル。
60411:02/03/18 00:50
>>603
DountPの起動オプションってわかります?
「新しくタブを開いてURLを読み込む」とかのオプションがあったら可能だと思います。

INCMはもう開発停止したし、需要もそんなにないだろうから、誰も作って
くれないだろうなあ、とツブヤイテミル。
というか、何でRubyとかPerlとかでしか書けないんだ、
WindowsにはWSHがあるだろうがWSHがぁ、
と思ったものでした。
605名無し~3.EXE:02/03/18 01:06
>>604
Rubyやperlなら文字列処理(httpでゲット→CMTに変換)がやりやすいと思われ。

wshでも、おんなじことできるの?
60611:02/03/18 01:11
>>605
頑張れば(w
自分とこの掲示板の記事をダウンロードして、eml or UNIX mbox形式に変換
するスクリプトを書いたことがあります。

そうか、http GETまでは、INCM本体がやってくれるわけじゃないのか。
607603:02/03/18 04:32
DountPの起動オプションはわからないっす。
でも、HTMLのフレームみたいにターゲット名を指定すればいいのかなと
思ってました。
私的には沢山のタブのうちどれが読み込み終わったかチェックするのが
メンドイかと感じてたので調べてないす。

INCMってperlが12メガバイトまで膨れ上がっちゃって
正直付き合いきれない状況です。
雑誌のおまけでインストールできるVBscriptなら楽でいいのに。
608トイレで血便:02/03/19 00:51
>11さん
ご意見ありがとうございました。
スケジューラは、ご指摘の通りパスワード設定してませんでした(アホすぎ
フォルダの件は、提示して頂いたサンプルでも治らなかったので
attrib -s -h +a を付け足して一件落着。しかし美しくないなあ。

スクリプト実行日付以降をバックアップは、
>backupdate = Month(now) & "-" & Day(now) & "-" & Year(now)
こいつのnowをcheckdateにしてそれを1ずつ引いていって、そのフォルダ名が
存在したら抜けるループを付け足します。
11さんなら10分程度でできてしまいそうですが、まずは自分で作ってみます。
ありがとうございました。
609    :02/03/19 01:17
参考にして音楽ファイルのリスト作成&オープンスクリプト作成したんですが、
1.これをファイル名順にリスト化させるにはドコを変更すれば?
2.複数ドライブ(フォルダ)から検索させるにはドコを変更させれば?

'**********
'ここから
'**********
'▲▲リストファイル作成&オープン WSHスクリプトファイル▲▲
'■本スクリプトファイルは、
'■検索対象ドライブ(フォルダ)内から検索対象ファイルを検索し、
'■指定したリストファイルを作成し、そのリストファイルを開きます。
'■応用すれば、他の用途にも利用できるかと思います。

Dim ts
Set Fs = WScript.CreateObject("Scripting.FileSystemObject")

'■検索対象ドライブ(フォルダ)
'■例)Dドライブ内を検索時 →sFolder="d:"
'■例)Dドライブの「音楽」フォルダ内を検索時 →sFolder="d:\音楽"
sFolder="f:"

'■リストファイルのファイル名と作成場所
'■例)このファイルと同じ場所に「0000_List.m3u」というファイル名で作成時 →sListFile="0000_List.m3u"
'■例)Dドライブに「0000_List.m3u」というファイル名で作成時 →sListFile="d:\0000_List.m3u"
sListFile="0000_List.m3u"
610    :02/03/19 01:17
Set ts=Fs.CreateTextFile(sListFile)
Call MakeList(Fs.GetFolder(sFolder))
ts.Close

SET WSHShell = WScript.CreateObject("WScript.Shell")
WSHShell.Run sListFile

Sub MakeList(Folder)
For Each oFile In Folder.Files
sExt=LCase(Fs.GetExtensionName(oFile.Name))

'■検索対象ファイル
'■例)MP3とWAVとWMAファイルを検索対象ファイルにする時 →If sExt="mp3" Or sExt="wav" Or sExt="wma" Then
'■例)MP3ファイルを検索対象ファイルにする時 →If sExt="mp3" Then
If sExt="mp3" Or sExt="wav" Or sExt="wma" Then

ts.WriteLine oFile.Path
End If
Next
For Each oSubFolder In Folder.SubFolders
Call MakeList(oSubFolder)
Next

End Sub
'**********
'ここまで
'**********
611sss:02/03/19 01:47
'DonutP で 5秒毎に巡回 動作確認 Win98SE , IE5.0 , DonutP3.5a
'Option Explicit
dim str_donutp_path,str_lst_name
str_donutp_path="C:\Program Files\DonutP\DonutP.exe" 'DonutP.exe のフルパス
str_lst_name="URL.lst" 'カレントフォルダに置いておく URLリストファイルの名前

dim objWs,objShell,objFs
set objWs=CreateObject("WScript.Shell")
set objShell=CreateObject("Shell.Application")
set objFs=CreateObject("Scripting.FileSystemObject")

objWs.Run chr(34)& str_donutp_path &chr(34)&" about:blank"
do until objWs.AppActivate("Donut P - [about:blank]")
WScript.Sleep 500
loop

dim int_win_num,i
dim bln_find
dim obj_ie
int_win_num=objShell.Windows().Count
bln_find=false
for i=0 to int_win_num-1
set obj_ie=objShell.Windows().Item(i)
if StrComp(obj_ie.FullName,str_donutp_path,vbTextCompare)=0 then
if obj_ie.LocationName="about:blank" then
bln_find=true
exit for
end if
end if
next
if bln_find=false then
msgbox "IEオブジェクトを Getできません"
WScript.Quit()
end if
612sss:02/03/19 01:48
'続き
dim str_lst_path,str_url
dim obj_text
str_lst_path=objFs.BuildPath(objFs.GetParentFolderName(WScript.ScriptFullName),str_lst_name)
if not objFs.FileExists(str_lst_path) then
msgbox "URL リストがありません"
WScript.Quit()
end if
set obj_text=objFs.OpenTextFile(str_lst_path)
do until obj_text.AtEndOfStream
str_url=obj_text.ReadLine
if str_url<>"" then
obj_ie.Navigate(str_url)
do '読み込み待ち
WScript.Sleep 1000
loop until obj_ie.busy=false and obj_ie.ReadyState=4
WScript.Sleep 5000 '5秒毎に巡回
end if
loop
msgbox "終わり"
61311:02/03/19 01:53
>>611
ちょっと待って、これってちゃんと動作する?

というか、DonutPのwindowオブジェクトが、Shell.Windowsのコレクション
に含まれるというのが、かなり謎なんですが。
うちとこでは、そういう挙動を示さないんですよ。
(Win2000+IE6+DonutP)
614名無し~3.EXE:02/03/19 12:03
URLエンコード、デコードする関数って存在しますか?
それとも文字列操作関数使って必死扱いて自分で処理するしかないですか?
615sss:02/03/19 18:36
>ちょっと待って、これってちゃんと動作する?
動作確認にある通り、うちでは動きます。
で、動かない場合もあるようなので 検証してみました。

set objShell=CreateObject("Shell.Application")
msg=""
int_win_num=objShell.Windows().Count
for i=0 to int_win_num-1
msg=msg & objShell.Windows().Item(i).FullName &vbcrlf
next
msgbox msg,,int_win_num

Donutのオプション -> 全般タブ -> 動作枠 -> リンクのターゲット名を考慮する
をチェックONにすると、上のスクリプトで DonutP.exeのパスが表示される
OFFにすると ダメでした。11氏のところではどうですか?
即レスに対して 亀レスですんません
61611:02/03/19 21:30
>>615
おお、チェックを入れると確かに動きます。
感動しました。

すなわち、Donut系タブブラウザだと、WSHからかなりの自動化が
可能だと言うことですね。

(つまり、navi.htaをタブブラウザ対応することも可能か…)

>>614
JScriptのencodeURIComponent/ decodeURIComponentメソッド
617ぽん太:02/03/20 00:22
>>11->□□□□氏->M口氏->Mロ氏->エムロ->えむろさん
VBScript以外は使わないですか?
初心車ならVBScriptがベストですか?
61811:02/03/20 00:33
>>617
こら、しょうもない伏字にするな。

フォルダカスタマイズスレではJScript使ってる。
別にVBScriptがベストだとは全然思わんね。
使いたい方を使えばよろし。
61911:02/03/20 00:36
あと、使いたきゃ両方使えばよし。
620ぽん太:02/03/20 01:07
>えむろさん
怒られちゃいました、、、。11さんだとなんか寂しいので。
やっぱり2chだと口が悪くなっちゃうのかなあ。

まったくの初心車なのでどの言語から勉強すればいいのかなと
思ったんです。VBScriptとJScript以外は標準では使えないんですか?
あともし使うとしたらどうすれば使えるようになりますか?
友達にはVBScriptなんて言語仕様が糞だといわれましたが
意味がよくわかりませんでした(あんまり訊くと怒るので訊けない)。
取りあえずは簡単のから勉強してだんだんと全部覚えようと思っていますけど
全部覚えても無駄でしょうか?どれも同じことしか出来ないのでしょうか?
書き方とかはえむろさんのサイトで勉強したいのですがこういったことは
よくわからないのです。最初なので挫折しないようにしたいのです。
ここのみなさんは全部の言語が使えるのですか?

質問ばかりでごめんなさい。
62111:02/03/20 01:32
>>620
勝手にあだ名をつけるなぁ!
やさしいえむろさんに会いたければ、彼のサイトの掲示板に逝け。

> VBScriptとJScript以外は標準では使えないんですか?
>>101

> 全部覚えても無駄でしょうか?
さあ。自分が無駄だと思ったら、それは無駄だったということになるとは思うが。

> どれも同じことしか出来ないのでしょうか?
そんなことはない。

> ここのみなさんは全部の言語が使えるのですか?
たぶんそんなことはない。

あとは、このスレをもう一回よく見直すことですな。
いろいろ意見が出てるので。
>>93 >>96 >>97 >>310
>>388 (これは俺の書き込みだが、リンク先のドキュメントを見て)
>>401 >>555 >>587
622名無し~3.EXE:02/03/20 01:36
>>621
キャラ作りすぎ
623名無し~3.EXE:02/03/20 01:41
まあまあ、そんなかっかするなって、えむろたん。(おっと失礼!)
624名無し~3.EXE:02/03/20 02:05
次スレタイトル候補

「えむろタンと愉快な仲間たち」
625名無し~3.EXE:02/03/20 02:13
WSHスレの方は、ここの掲示板と似たような展開になりつつあるので、そろそろ引退も
考えてます。WSH啓蒙活動としての、11の使命は終わったと。

こんなこと書いてるYO!
626ぽん太:02/03/20 02:22
今日は遅いので明日全部読んでみようと思います。
それでもわからないことがあったらまた質問しようと思います。
色々とご迷惑をおかけしました。

今度、えむろさんのサイトのBBSにお邪魔するかもしれません。
でも少しはWSHが出来るようになってからにします。
だれかの質問に答えれるぐらいになってればいいなと思います。

※やっぱり「えむろさん」はだめですか。折角良スレの大御所なのに
何か名前があったほうが親しみが湧くのになあと思いました。
これまた勝手な意見でごめんなさい。

ではおやすみなさい。失礼します。


627名無し~3.EXE:02/03/20 02:23
>>626
マイペース ワロタ
628名無し~3.EXE:02/03/20 02:41
>>621
>>626
先生と生徒のコントかなんかですか?
629名無し~3.EXE:02/03/20 02:44
コントage
630名無し~3.EXE:02/03/20 03:01
>>625
これで11がこのスレに来なくなったら、>>626が袋叩きに遭うと思われ
631名無し~3.EXE:02/03/20 03:06
>>630
ヽ(`Д´)ノウワーン!!
632名無し~3.EXE:02/03/20 03:36
このスレの需要が続けば、まったく来なくなるって事はないんじゃないの?

俺に知る限りじゃ、歴代WSHスレの中じゃ一番有用なスレだと思う。
これは、11氏の力はもちろんだがと、Win板に立てた1に先見の明が
あったということか。
633サ骨 ◆/IQ5000w :02/03/20 17:47
ラストゴミバコー.vbs
・ゴミ箱の名前を指定できる
・数に上限が無い
という点で本家を上回っています。

Dim destination, fs, I, destnam, varm, gomipath, gominame

Set fs = CreateObject("scripting.FileSystemObject")

destination = InputBox("どこに逝きますか?")
If fs.FolderExists(destination) = False Then
MsgBox "そんなフォルダありません。"
Wscript.Quit
End If

gominame = InputBox("名前は? (指定しなければ「ごみ箱」になります)")
if gominame = "" Then
gominame = "ごみ箱"
End If

Do While True
destnam = InputBox("いくつ逝きますか? 半角数字で入力してください。")
varm = cLng(destnam)

If Err.Number = 0 Then
If varm = cDbl(destnam) Then Exit Do
End If
MsgBox "数字以外の文字があるか、整数ではありません"
Loop

For I=1 To destnam Step 1
gomipath = destination & "\" & gominame & " " & chr(40) & I & chr(41) & ".{645ff040-5081-101b-9f08-00aa002f954e}"
fs.CreateFolder(gomipath)
Next
63411:02/03/20 18:27
ラストIEオープナー.vbs
・現在のウィンドウ数をカウントできる
(ただし、ダイアログが出た時点での枚数)
・最後にIEのウィンドウをcloseできる
・別プロセスでの立ち上げ試験用
という点で本家を上回っています。
http://pc.2ch.net/test/read.cgi/win/1015937521/

On Error Resume Next
sPath="D:\Program Files\Internet Explorer\iexplore.exe"
Set Shell=Wscript.CreateObject("Shell.Application")
iWindow=0
Do
sNum=InputBox("現在" & Shell.Windows.Count & "枚のIEとフォルダを開いてる。で、次は何枚開くんだ。",,"1")
If IsNumeric(sNum) And sNum<>"" Then
For I=1 To CInt(sNum)
Shell.ShellExecute sPath,"about:blank"
iWindow = iWindow + 1
Next
Else
Exit Do
End If
Loop
63511:02/03/20 18:27
Dim oIE()
Redim oIE(0)
Dim iIE
iIE=-1
iFol=-1
For Each window In Shell.Windows
If typename(window.document)="HTMLDocument" Then
iIE=iIE+1
Redim Preserve oIE(iIE)
Set oIE(iIE)=window
Else
iFol=iFol+1
End If
Next

iMsg=MsgBox (iIE+1 & "枚のIE、" & iFol+1 & "枚のフォルダウィンドウが開いてる。" & vbCrLf & "IEだけ全部閉じていい?",vbYesNo)
If iMsg=vbYes Then
For I=0 To UBound(oIE)
oIE(I).Quit
Next
End If
636サ骨 ◆/IQ5000w :02/03/20 18:44
>>634-635
ワロタ。

49枚が限界でした。見慣れないIE6の起動画面が表示された
63711:02/03/20 19:17
>>636
ゴミバコーも元スレのほうに紹介したらいかがっすか?
http://pc.2ch.net/test/read.cgi/win/1016257181/

IEいくつ開けるかスレより、目的が謎だが(w

>>625 >>630 >>632
うちの掲示板と同じく、ガイシュツ質問とかヘルプ見れ的質問が
増えてきた気がするので、そういうのは答えない方針で逝こうと思う。

>>ぽん太
あんたに限ってえむろ許可。
638サ骨 ◆/IQ5000w :02/03/20 19:22
>>637
いや、あのスレは「ショートカット」を作らなければいけないので、
>>633のスクリプトは使えません。
63911:02/03/20 19:37
>>638
じゃあ、WshShell.CreateShortcutを使って、ショートカットを作りましょう。
TargetPathに
"::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{645ff040-5081-101b-9f08-00aa002f954e}"
と指定するんですぞ。たしか。
"shell:RecycleBinFolder"でも良いと思います。どちらもWin2000/XP専用ですが。


ま、あのスレはどうも、手作業でやることに意味がある、というポリシーがあるようですが。
64011:02/03/20 19:38
>>639
間違えた。
"::{645ff040-5081-101b-9f08-00aa002f954e}" だけでOKです。
641ぽん太:02/03/20 19:53
>えむろ師匠
是非、師匠と呼ばせてください!僕も出来るだけ一生懸命勉強してみんなの質問に
答えれるようになりたいと思います。師匠に追いつけ!追い越せ!の精神でがんばり
ます(とはいっても何年掛かっても師匠は超えれないと思いますけど)

あと、どの言語を使うかってやつですがみんながあまり使ってなさそうで評価の高そうな
RubyScriptに挑戦することにしました。それでartonさんとこのActiveRubyをインストール
しました。WSH用にレジストリを少し弄りました。デフォルトの(*.rb)はruby.exeに、
WSH用には新たに(*.rbs)を作ってwscript.exeに関連付けました。あと*.vbsや*.js
みたいにアイコンにドロップできるようにレジストリに???という項目を追加しました。
(実はこのあたりは友達にやってもらいました。本当は内緒で勉強して友達をびっくりさせようと
思ってたんですが一人だとやっぱりよくわからないのでしょうがないので聞いたのでした。
ただこのスレのことは知らないようなので黙ってました!)

一応、僕の夢はえむろ師匠のような、みんなの役に立つスクリプトを作ることです。ベクター
とかに登録してたくさんの人が使ってくれればうれしいです。だからこれからあんまり2chとか
見なくなるかもしれません。覚えることがたくさんあってそっちに忙しくなるからです。
多分春休みはずっと勉強していると思います。中学生になってWSHが使えてたら
かっこいいなって思います。

長くなってごめんささい。それでは失礼します。
64211:02/03/20 20:08
>>641
ちょっと待て、あんたホントに小学生か?
文体が落ち着きすぎてるので、そうは見えなかった。
あと、弟子はとらない主義だが、ぽん太に限って弟子入り許可。


…コントもほどほどにしないと、な(w

スクリプトファイルにD&Dするためには、

REGEDIT4

[HKEY_CLASSES_ROOT\filetype\ShellEx\DropHandler]
@="{60254CA5-953B-11CF-8C96-00AA00B8708C}"

というレジストリファイルをインポートすれば良い。
filetypeのところを、該当ファイルタイプ名に書き換えるのだ。
vbsfileとかと見比べるべし。(WSH2.0以降必須)

余談だが、この方法を使って、HTA(htafile)にファイルをドロップすることもできる。
ドロップしたファイル名の取り出し方は、プログラム板のHTAスレに書いておく。
http://pc.2ch.net/test/read.cgi/tech/1013527404/
643302:02/03/20 20:15
>>11
責任持てよー!(ワラ
644名無し~3.EXE:02/03/20 22:28
美しき師弟愛age
645名無し~3.EXE:02/03/21 01:26
wsfファイルを効率的にデバッグするにはどーすればいいでしょう?
ってーかwsfファイルを直接デバッグするって無謀でしょうか?
環境はWindowsXPっす。
64611:02/03/21 01:46
>>645
コピペだが、WSHでスクリプトをデバッグする方法・まとめ。

1) http://www.microsoft.com/downloads/release.asp?ReleaseID=33264
からスクリプトデバッガをダウンロードし、インストールする。

2-a) コマンドラインから、
cscript.exe //X C:\hoge.vbs
を実行する。
wscript.exe //X C:\hoge.vbs
でもOK。

これで、スクリプトデバッガのウィンドウが開き、デバッガ内でスクリプトの実行が可能。
スクリプト中に、
stop
という行を入れておくと、そこで実行が一時中断する。

2-b) コマンドラインから、
cscript.exe //D C:\hoge.vbs
を実行する。
wscript.exe //D C:\hoge.vbs
でもOK。

これで、エラーが発生したとき、あるいはstopという行があったときのみ、デバッガが開く。

2-c) WSFファイルをデバッグするには:
1.レジストリエディタで、
HKEY_CURRENT_USER\Software\Microsoft\Windows Script\Settingsキーの、JITDebugという
DWORD値を、0から1に変更する。

2.<job>要素のすぐ下の行に、
<?job debug="true" ?>
と記述する。

3-a. hoge.wsfを普通に実行する。エラーがあるとデバッガが開く。

3-b. wscript.exe //X C:\hoge.wsf
を実行する。
スクリプトデバッガのウィンドウが開き、デバッガ内でスクリプトの実行が可能
647名無し~3.EXE:02/03/21 01:50
えむろたん…ハァハァ

648名無し~3.EXE:02/03/21 01:57
しかしえむろたんはほんとにスクリプトの達人だね。
このスレが出来てから、初めてWSHのことを知って、スクリプト
を触りだした人、結構いるんじゃない?えむろたんのHPに書いて
あったように、まさに啓蒙活動って感じだな。
649645:02/03/21 02:03
>>646
どうもです
うーん、その通りにやってはみたんですが、デバッガが開かないんです…

>1.レジストリエディタで、
>HKEY_CURRENT_USER\Software\Microsoft\Windows Script\Settingsキーの、JITDebugという
>DWORD値を、0から1に変更する。

って、もともとそんなDWORD値は存在しないので追加したんですが…何か変??
65011:02/03/21 02:08
>>649
そのキーがないってことは、スクリプトデバッガかWSH2.0以上かの
どちらかがインストールされてませんね。
というわけで、インストールしてちょうだい。

>>647-648
その名は、弟子以外には呼ばせねえ(w

やっぱり、2chだと人が多いので、たくさんの人に見てもらえていい感じです。
昔はネットニュースとかで、細々と布教活動やってたんですがね。
651645:02/03/21 02:19
>>650
うーん、WindowsScript5.6(scriptjp.exe)もScriptDebugger(scd10jp.exe)もインストールしたんですけどね…
見当たらないです…何がいけないのだろう…
#ちなみに今の環境は自宅なのでWindows2000っす
#ScriptDebuggerのバージョンが異様に古いんですがこんなもん??

65211:02/03/21 02:29
>>651
スクリプトデバッガは、最近バージョンあがったよ。て言っても去年の10月だが。
それより前は、もっと正体不明の古さだった。ファイル名にie4とかついてたしなー。

デバッグできないのは、正直言ってわからん。
デバッガをインストールしてからちゃんと再起動した?
653645:02/03/21 02:42
>>652
もちろん再起動しましたけどダメです。
IEからメニュー辿ってもデバッガは起動してくれないし。何か勘違いしてるのかなー。

はぁ、もうお手上げなので寝ます。
お付き合いいただきありがとうございました。
65411:02/03/21 03:03
>>653
おや、なんか俺のところでもできなくなってる…。
WSH5.6が悪いのか?
655名無し~3.EXE:02/03/21 03:37
>>11
WSH程度で師匠気取りとは、おめでてーな。
インデントからして、いかにも厨房が書きましたーって感じだし。
ム板で「Ruby最強」とか煽ってる奴らもお前には負けるよ。
精々、布教活動がんばってな。> 師匠さん (藁
65611:02/03/21 04:07
>>655
ああ、煽りが…。
でも一つだけ言わせてくれ。インデントはしてるけど、消えてるだけだよん。
dat直読みするかソース見れば、タブでインデントしてることがわかるはず。

普通は、半角スペース2個を全角スペースに置換して、対処したり
するんだろうけど、そうするとコピペしたときにすぐ使えないからな。
読みにくいのは勘弁してくれ。
657名無し~3.EXE:02/03/21 04:12
煽りにまで親切に対応しなくても…
あんたいい人じゃぁ
65811:02/03/21 04:17
>>657
いや、たぶんいつか出る意見だと思ったので、ついでに、ね。
コードを見やすくするための、>>656に書いた以外の解決策ない?
正直、俺自身がこのスレに書いたスクリプトを再利用しようとしたとき、
インデントが消えててウザイのよ。



    テスト。駄目か
65911:02/03/21 04:19
>>658
あっ、テスト 成功してるじゃないか。(&nbsp;使ってみた。)
次回からはこれで逝こう。
660原色飼鳥大鑑:02/03/21 11:53
>655
えむろ氏(俺も呼ばせて)の凄いところはそのセンスだよ。
偉そうに知識を振りかざす奴は何ぼでもいるけどえむろ氏って
ほんとにスクリプト書くのが好きなんだなって伝わってくるし
いまさら655のような書き込みは俺にとっては "ひがみ" にしか
聞こえないよ。
「俺だって凄いのに、何で 11 ばっかりがちやほやされるんだ!」ってね。
まあ 655 も凄い奴なのかも知れんけど センスや人望は持ち合わせて
いない人間なんだろうね。まあ根本からして違うわけだよ。そうじゃなければ
まともなレスばかりで、ここまでスレが続くわけはないだろう。

P.S. 多分 655 は俺よりスキルは下だと思われ(オホホホ

おっと、言い忘れ。
#{WSH程度} とは聞き捨てなら無いがあんたはどこまで理解しとるん?
まあそこまで言うんなら WSH より使いやすく汎用的なスクリプト
ホストのひとつでも作ってくれよ。俺は自分で作り始めてから
「以外と考えて作ってんのね」って思ったものだ。何かを蔑む前に
まずはそれを理解しろ。すべてはそれからだ、とは俺の教え(オホホホ

騒ぐだけなら 猿 でも出来るぜ!兄ちゃんよぉ
661名無し~3.EXE:02/03/21 12:21
まあ使うのと作るのではダンチと思われ。
つーか荒らし誘致?>660
662名無し~3.EXE:02/03/21 13:06
なんか粘着質
663名無し~3.EXE:02/03/21 14:45
おれはな、あんなことやこんなこと、果てはそんなことまでしても
弟子入り断られたんだぞ!
うらやましいぞ、ぽん太!! ハァハァ
664名無し~3.EXE:02/03/21 15:00
前回はスレを汚してしまい申し訳ありませんでした(かなり打ち間違いが多かったです)。
今回検索対象としないフォルダを指定する機能をつけました。
動的配列を使用するので追加する際はソースを直接書き換えてください(できるだけ簡単にしました)。

'中身が空っぽのフォルダを検索、削除する。
'desktop.ini、thumbs.dbがあるだけのフォルダや0バイトのファイルがあるだけのフォルダも対象。再帰検索。
'13:38 2002/03/06 製作開始(ファイル作成日時)
'03:08 2002/03/07 初版完成
'17:16 2002/03/12 第二版:特殊フォルダを無視、高速化
'21:46 2002/03/12 第三版:ドロップ対応、ドロップ時はメッセージなしに
'02:26 2002/03/19 第四版:検索対象としないフォルダを指定可能に
'20:40 2002/03/19 第五版:2つの関数を1つに纏めた
'21:44 2002/03/20 第六版:最適化
dim d,e,list(),list2()

sub nosearchlist()
'ここに検索対象としないフォルダを追加(下層フォルダも対象になる)
'大文字小文字は問いませんがロングパスで入れてください
redim list2(4)
list2(0)="C:\WINDOWS"
list2(1)="C:\Program Files\Common Files"
list2(2)="C:\Program Files\Microsoft Visual Studio\VB98"
list2(3)="C:\Program Files\McAfee\McAfee VirusScan"
list2(4)="C:\RECYCLED"
end sub
665続き:02/03/21 15:01
d=0:e=0
title="empty folder search"
set a=createobject("scripting.filesystemobject")
for each q in createobject("wscript.shell").specialfolders
call nosearchlist
redim preserve list(n)
list(n)=q
n=n+1
next
for each arg in wscript.arguments
if a.folderexists(arg) then
call search(a.getfolder(arg),false)
args=args&arg&vbcr
end if
next
if args="" then
args=left(wscript.scriptfullname,3)
call search(a.getfolder(args),true)
args=args&vbcr
end if
msgbox args&"削除を許可されているフォルダ数: "&d&vbcr&"削除したフォルダ数: "&e,4160,title
666さらに続き:02/03/21 15:03
sub search(t,msg)
for each b in t.subfolders
if check(b,list2) then
d=d+1
if b.subfolders.count<>0 then call search(b,msg)
if b.subfolders.count=0 then
if -a.fileexists(b&"\desktop.ini")-a.fileexists(b&"\thumbs.db")=b.files.count or b.size=0 then
if check(b,list) then
if msg then c=msgbox(b&vbcr&"は空です。削除しますか?",4099,title)
if (not msg) or c=vbyes then
b.delete(true)
e=e+1
elseif c=vbcancel then
wscript.quit
end if
end if
end if
end if
end if
next
end sub

function check(p,data)
for each q in data
if lcase(q)=lcase(p) then exit function
next
check=true
end function
66711:02/03/21 17:15
>>660
いや、援護してくれるのはありがたいけどさ、煽りは基本的に放置の方針で。
煽り返しはスレが荒れる原因となるので、注意っす。
(放置してない俺の言うセリフじゃないって? ごもっとも)

WSHって、その存在が中途半端で、プログラマ受けしないんだ。
だから、テクニックとかが意外と未開拓で、それを開拓していく
楽しみがあったなあ。もうWSH触り始めて3年になるのに、いまだに
いろいろと新発見があるもんな。

>>663
ん、あんたのことは記憶にないぞ。
弟子入りしたければ、とりあえず師匠の代わりにLesson16を書いてもってきなさい。

駄レスでスマソ。
668原色飼鳥大鑑:02/03/21 23:52
>>All
自分のことなら放置だったんだけど、色々世話になっている
11氏のことなんで、つい...。以後気をつけます。
669名無し~3.EXE:02/03/22 00:01
先生!こんなレス見つけました!

>少しスレ違いだが。>195に出てたPC Japan5月号の後ろの方にこんなのが載ってた。
>-------------------------------------------------------------------------
>エクスプローラーで「フォルダにコピー」「フォルダに移動」をコンテキストメニューに追加
>regeditで \HKEY_CLASSES_ROOT\AllFilesystemObjects\shellex\ContextMenuHandlersを開き、
>新規キー:名前"Copy To",値 {C2FBB630-2971-11D1-A18C-00C04FD75D13}
>新規キー:名前"Move To",値 {C2FBB631-2971-11D1-A18C-00C04FD75D13} を追加。
>---------------------------------------------------------------------------
>ただしxpでこれやると複数ファイルの「開く」動作がおかしくなるため使えない。98/Meは未検証。

D&Dでこれと同じダイアログ出るようなスクリプトはできますか?
あったらほすぃです。
670ぽん太:02/03/22 00:12
最初にえむろ師匠のおすすめのRubyを256倍使う本邪道編っていう本を買いたかったんだけど
お小遣いが少ないので図書館で借りることにしました。うちから1時間ぐらいのところに
大きい図書館があるのでそこまでいきました(図書館に行く電車代は出して貰えるんだあ!)。
でも全然内容がわかりませんでした。これがすいすいわかるようにならないと追いつけないよー。
やっぱりはじめはVBScriptを勉強することにしました。でもせっかくRubyScriptもインスト
したので少しは覚えようと思います。それでVBScriptとJScriptとRubyScriptを
覚えていろいろ出来るようになりたいです。あと僕が借りた本はこれです。

Rubyを256倍使う本 邪道編
はじめてのWindows Scripting Host

あと前に友達って書いてたのは本当は僕の兄ちゃんのことです。二つ年上です。

最初の質問。
本とかサイトとかで僕のような初心者に HELO WORLD とかを表示させるスクリプト
がありますが、なんでどこも同じなんでしょうか?こんにちわ 世界という意味がわかりません
でした。あとVBScriptとJScriptで()のつけ方が違うんですか?

WScript.Echo "HELLO WORLD"<-こっちはVBScript

WScript.Echo("HELLO WORLD");<-こっちはJScript

いちお、VBSでは括弧が要らなくて最後には何もつかなくて
JSでは()がついて、最後にも;がつくことまでわかりました。
VBScriptでは()がついたりつかなかったりしているのでどっちにすればいいのか
わかんなくなります。
67111:02/03/22 00:32
>>669
WSHとは関係ないが、これ、滅茶苦茶便利ですよ先生。
何で標準の右クリックメニューについてないんだろう。

右クリックを極めるスレにも、教えてあげるといいね。
http://pc.2ch.net/test/read.cgi/win/1015259388/

で、スクリプトは、しばし待たれよ。これとまったく同じのは無理だが、
似たようなのは作れる。

>>670
Ruby256邪道編は、もうちょっと基本を学んでから読んだ方がいいな。
どっちかというと、WSHを支えている、COMという技術の仕組みが
よくわかる本だ。ちなみに、これでRubyの勉強はできないので注意。
Rubyなら、やっぱりRubyの作者氏が出してるRuby本
(「オブジェクト指向スクリプト言語Ruby」)がいいだろうね。よく知らんけど。

>Hello World
プログラム教習本の第一章は、慣例的にそうなっているな。
言われとか詳しいことは知らない。次回までに調べておくように。

>括弧
VBSでは、値を参照するときには括弧をつけて、そうじゃないときは括弧をつけない。
これが基本。JSでは必ず括弧をつける。
VBSなら、うちのVBS講座・基礎編でも見るといいかもな。

あ、あと、今後基本的な質問には答えないつもりだ。
スレの皆に迷惑がかかるからな。自力で頑張りたまえ。
672669:02/03/22 00:57
>>671
先生!僕もそう思います!

でもレスの通り、XPのエクスプローラーでレジストリのその方法をやると
少し動作がおかしくなるそうで。
スクリプトなら(゚д゚)ウマーかとおもいまして。ええ。

673603:02/03/22 03:08
611さんありがとう。
うーん、家の環境(WinME+IE5.5+wsh5.6+DonutP3.5a)ではそのままでは動きませんでした。
DonutPが起動してstartpageのタブとabout:blankのタブが出来るところまでは進みます。
「お気に入りやファイルを開くときアクティブにしない」にチェックしているからか、
そこで実行が止まります。チェックをはずすか、その後、about:blankのタブを選択すると"IEオブジェクトを Getできません"と表示されます。
残念。「リンクのターゲット名を考慮する」はチェックしたんだけどなあ。

>if obj_ie.LocationName="about:blank" then
の直前に
msgbox obj_ie.LocationName
を入れると「Click here now!」と表示されます。
で比較する文字列をこれに変えるとやっと動きました。
自動巡回が始まった後はうまく動いているみたいです。
gethtmlwをローカルサーバにして確認しました。

あ、615のスクリプトでは起動してあるDonutPや検索窓(explorer)の
フルパスがちゃんと表示されます。

後で気が付いたけれどBugBrowserはVBscriptで操作できるみたいです。
>オートメーションサーバーを搭載し、他のアプリケーションから制御が可能
サンプルスクリプトやBugBrowserオブジェクトの説明がありました。
関連付けの使い勝手はDonutPの方がいいんだけどなあ。最近DonutPも重いけど…。
674302:02/03/22 07:19
<%
'Drive information script by Garet Jax
Response.Write "<html><head><title></title></head><body>"
Response.Write "<font face=arial>Server Software: "& Request.ServerVariables("SERVER_SOFTWARE") &"<br>Drive Information for: "& Request.ServerVariables("SERVER_NAME") &"<br>"
Response.Write "<table border=1 cellpadding=3 cellspacing=0 bordercolor=Black>"
Response.Write "<tr><td nowrap><font face=arial><b>Driveletter</td><td nowrap><font face=arial><b>Drive Type</td><td nowrap><font face=arial><b>Volume Name</td>
<td nowrap><font face=arial><b>Total Space</td><td nowrap><font face=arial>
<b>Available Space</td><td nowrap><font face=arial><b>File System</td><td nowrap><font face=arial><b>Serial #</td></tr>"
Set fs = CreateObject("Scripting.FileSystemObject")
Set drv = fs.Drives
For each d in drv
If d.Driveletter <> "A" Then
If d.IsReady = True Then
freespace = (d.AvailableSpace / 1024)
free = (freespace / 1024)
totalspace = (d.TotalSize / 1024)
total = (totalspace / 1024)
Response.Write "<tr><td nowrap><font face=arial size=2><A href='dirwalkR.asp?id="& d.DriveLetter &"'>"& d.DriveLetter &"</a></td>"
If d.DriveType = 3 Then
dtype = "Network"
If d.ShareName = "" Then
dname = " "
Else
dname = d.ShareName
End If
ElseIf d.DriveType = 0 Then
dtype = "Unknown"
If d.VolumeName = "" Then
dname = " "
Else
dname = d.VolumeName
End If
675302:02/03/22 07:20
ElseIf d.DriveType = 1 Then
dtype = "Removeable"
If d.VolumeName = "" Then
dname = " "
Else
dname = d.VolumeName
End If
ElseIf d.DriveType = 2 Then
dtype = "Fixed"
If d.VolumeName = "" Then
dname = " "
Else
dname = d.VolumeName
End If
ElseIf d.DriveType = 4 Then
dtype = "CD-Rom"
If d.VolumeName = "" Then
dname = " "
Else
dname = d.VolumeName
End If
676302:02/03/22 07:20
ElseIf d.DriveType = 5 Then
dtype = "RAM Disk"
If d.VolumeName = "" Then
dname = " "
Else
dname = d.VolumeName
End If
End If
Response.Write "<td nowrap><font face=arial size=2>"& dtype &"</td><td nowrap><font face=arial size=2>"& dname &"</td><td nowrap>
<font face=arial size=2>"& Round(total,1) &" <font size=1>Megabytes</td>
<td nowrap><font face=arial size=2>"& Round(free,1) &" <font size=1>Megabytes</td><td nowrap><font face=arial size=2>"& d.FileSystem &"</td>
<td nowrap><font face=arial size=2>"& d.SerialNumber &"</td></tr>"
Else
Response.Write "<td nowrap><font face=arial size=2>"& d.DriveLetter &"</td><td colspan=6><font face=arial size=2>Drive not ready</td></tr>"
End If
End If
Next
Response.Write "</table>"
Response.Write "</body></html>"
%>

space.asp

これはディスクスペース調べるスクリプト?
677sss:02/03/22 15:31
>>673
>家の環境(WinME+IE5.5+wsh5.6+DonutP3.5a)ではそのままでは動きませんでした
これは、環境と言うより DonutPの設定による問題ですね。私の所では、
Donutのオプション --> 「スタートアップ」タブ --> 何も開かない
にしてあります。

>DonutPが起動してstartpageのタブとabout:blankのタブが出来る
とあるので、おそらく 起動時に特定のページが開くようになっているのでしょう
ここで実行が止まるのは 次の行のためです
>do until objWs.AppActivate("Donut P - [about:blank]")
これは、DonutPで "about:blank" のページがアクティブになるまで ループします
# アクティブタブ のタイトルが DountPのタイトルバーの文字列に反映される
で、対応としては 同じく 「スタートアップ」タブ で
「起動時にパラメータが渡された場合、起動処理は全て無効」
をチェックON にしたらどうでしょう。

>「Click here now!」
これについてはよく分かりませんが、615のスクリプトで DonutPのパスがでると言うことは
Shell.Windowsコレクションに DonutPで表示するページの IEオブジェクトが含まれる
と言うことで、後は その中から目的の "IEオブジェクトを特定する" 作業です。
# この作業は 目的や環境による

>BugBrowserはVBscriptで操作できるみたいです。
見てきました。ScriptBBS なるものがありこれも面白そうですね。
67811:02/03/23 01:00
>>674-676
そりゃASPだ。
内容的にはそんな感じでしょう。

HTA+WMIのWin32_LogicalDiskクラス版を作ってみよう!

>>672
今日はパス。スマソ。
でも、このスレにいる誰かに頼めば、作ってくれるんじゃない?
Shell.BrowseForFolderを使うだけなので。

全然別スレに、めずらしいRubyScriptが上がってたので紹介しとくよ。
(誤爆?)
http://pc.2ch.net/test/read.cgi/win/1014714206/347
「アプリケーションから開く」にアプリを登録するスクリプトかな。
679名無し~3.EXE:02/03/23 14:41
test
680名無し~3.EXE:02/03/26 06:30
ネタ切れ?
ツールでもうぷしてみる。

TeraPad用簡易コード補完ツール
http://www.geocities.co.jp/SiliconValley-Oakland/4672/wshcp001.zip
( 208K / CRC : BB7CC9AF )

バグあると思うけど、普通に使う分には問題ないはず。
681680:02/03/26 23:12
二重起動関連のバグフィックス。

http://www.geocities.co.jp/SiliconValley-Oakland/4672/wshcp002.zip
208K CRC : 06BE9293
682680:02/03/27 01:51
http://www.geocities.co.jp/SiliconValley-Oakland/4672/wshcp002a.zip
209K CRC:C6DB31CD

.txtが開けないのを修正。ごめんなさい。m(_ _)m
683青い紅玉:02/03/27 12:28
MyScript = 'RubyScript'
WScript.Echo <<-"MSG".gsub!(/$\s*/, '')
    こんなスレがあったんね。
    #{MyScript} はええよ。

    こんなんできるかんね。
    全然、#{MyScript} の話題無いっしょ!
        インデント?
            インデント?
        インデント?
    いや、要らん、要らん!
    入れるだけ、いれてみいって!便利やぞ、#{MyScript} は。
MSG
684TeraPadユーザー:02/03/27 21:59
>>680

早速DLして使ってみました。なかなかいい感じ。これから重宝します!
これに引数リストとかも表示してくれる(OR簡単に拡張できる)ように
なると、すごく便利になるね!
685TeraPadユーザー:02/03/27 22:03
そういえば、Jscriptのmatchメソッドが入ってなかったような
気がします。このドロップダウンリストってどういう基準で作成
しているんですか?

…重ね重ね要望ばっかりでスマソ。
686680:02/03/27 23:52
>>685
レスどうもです。リストの基準は、WSHv5.6ドキュメントの
キーワードから、前に .(ピリオド)がつくメソッド、プロパティを
片っ端から並べただけですので、間違いや抜けがあると思います。
その場合は、vbs.txt、js.txt を自分で編集してください。
687680:02/03/28 00:23
http://www.geocities.co.jp/SiliconValley-Oakland/4672/wshcp003.zip
209K CRC:24B6E80A

・UI変更。
・js.txtにmatchメソッド追加。
68811:02/03/28 03:03
何もできませんけど、ageるだけageときます。
>>678のスクリプト、誰も作ってくれませんね(w

TeraPad用簡易コード補完ツール。おもしろそうですね。

このスレでも紹介したことあると思うけど、DoMacroという
コンポーネントを使うと、WSHからTeraPadの制御が自由自在にできるようになります。
WSHがTeraPadのマクロみたいに使えます。
689名無し~3.EXE:02/03/29 01:38
CreateObjectなどして作ったオブジェクトが持つメソッドやプロパティ
などはどうやってしらべてるのですか?
例えば
olがOutlookのオブジェクトとして
namespace = ol.GetNameSpace("MAPI");
でいう、GetNameSpaceのようなメソッドとか。
WSHのリファレンスにも載ってないし。
690あのー:02/03/29 03:29
Window表示のコマンドプロンプトを全画面表示させるスクリプトを作りたいんですけど
Sendkeysでできますか?っつーか作ってみたんだけど動作しません。。。

だれかおせーて。。。
691名無し~3.EXE:02/03/29 03:45
タスクバー右クリックして出てくる、 ツールバー→新規ツールバー で、
javascript:window.location.replace("HTMLにしたスクリプトファイルのパス")
と記入して、面白いことできねえかなとおもったけど、
セレクトボックスのランチャーとか、
時間表示とかどうでもいいものしか思いつかない・・・
なんか考えて(ぉ

結局、サブフォルダを作るスクリプトを、
フォルダの右クリックメニューに追加したやつくらいしか有効に使ってないなぁ・・・

>>690
Alt+Space→P→Alt+U→Enter→Enterか・・・
メンドイ(w
692680:02/03/29 03:46
http://www.geocities.co.jp/SiliconValley-Oakland/4672/wshcp004.zip
209K CRC:243BC421

・入力、リスト表示の改良。キビキビ感が約300%アップ。(当社比)

注)このキビキビ感はすべての使用者が実感するものではありません。
693名無し~3.EXE:02/03/29 05:10
超かめレスだけど
58のコードいじってみた
編集してから変数へ代入する形では大変と思うので
Option Explicit

Dim strTranslate, strURL, objIE, strRet

strT = inputBox("翻訳したい言葉を入力して下さい", "入力")
strURL = "http://www.excite.co.jp/world/text/?wb_lp=ENJA&before=" & strTranslate
' ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
' リクエストに含めて送信します
' wb_lpに翻訳する言語を設定します
' 英→和ならENJA
' 和→英ならJAENにします

Set objIE = WScript.CreateObject("InternetExplorer.Application","IE_")

With objIE

Call .Navigate2( strURL )
.Visible = False


Do While .Busy Or .ReadyState<>4
Call WScript.Sleep( 100 )
Loop
strRet = strTranslate & "を翻訳すると…" & vbCrLf & .document.World.after.Value


Call .Quit()

End With
Set objIE = Nothing

Call MsgBox( strRet )
といっても、既にコンテキストメニューに追加するコードが
あるから意味ないか...
694名無し~3.EXE:02/03/29 05:12
>>693
ごめん
タイプミス
strT = inputBox("翻訳したい言葉を入力して下さい", "入力")
strTranslate = inputBox("翻訳したい言葉を入力して下さい", "入力")
695名無し~3.EXE:02/03/29 06:23
>>683
Ruby入れなきゃ走らないスクリプトで、入れること勧めるのは矛盾してるぞ。
69611:02/03/29 16:24
>>689
VBかVBA(Officeについてるアレね)のオブジェクトブラウザが一番便利。
あとは、たいていどっかにリファレンスがあるものなので、頑張って探す。

>>690
コマンドプロンプトにSendKeysはできなかったんじゃないか?
いや、WSHの制限というわけではなく。

WshScriptExecオブジェクトでなんとかできないかな。

>>691
それってどうなるの?
わざわざjavascript:を使う理由がわからぬ…。HTMLにしたスクリプトのパスをそのまま
指定するのはだめなのか?

>>695
ネタニマジレスカコワルイ
697名無し~3.EXE:02/03/29 18:25
>>689
OLE/COM Object Viewer
構文を知らないと分かりにくいが
IDLに戻せるし、無償なのがいい
69811:02/03/30 01:07
>>697
http://www.microsoft.com/com/resources/oleview.asp
てか、がいしゅつだったな。
699691:02/03/30 07:15
>>696
いや、HTMLファイルだとツールバーに出来ないから。
javascript:window.location.replace()つかってやらないと表示できんよ。

てか、ちょっと解説してあるサイト
http://www.virtualplastic.org/
のここ
http://www.virtualplastic.org/html/task_qlh.html

むぅ・・・労力の割りに対したことが出来ないような・・・
70011:02/03/31 00:52
>>699
なんか面白そうじゃないですか。
デスクバンドって、スクリプトで書けるんだなあ。

でも、ActiveXのセキュリティ警告対策に、レジストリをいじるのは感心しないな。
フォルダカスタマイズスレの、涙ぐましいまでのセキュリティ警告回避テクを
見習ってもらいたいものだ(w
701名無し~3.EXE:02/03/31 03:09
>>699
これって結局なにがかいてあるの、おしえて>英語に強い人
702名無し~3.EXE:02/03/31 03:32
お前ら、LZHを扱うコンポーネントで扱い易いのは知りませんか
教えてください
703::Invoke:02/03/31 04:20
>701
ぶっちゃけ、IEコンポーネントをタスクバーに埋め込めるわけですな。
704691:02/03/31 08:46
SendKeyでWinampコントロールするデスクバンド作ってみた

・・・

Winampをアクティブにするぶんの手間「だけ」減った

・・・

セキュリティの警告はレジストリいじっていいような。
悪意あるスクリプトの方は、NortonのScriptBlockingに任せる。

# TeraPadのDoMacroオモロイ
70511:02/03/31 14:13
>>702
総合アーカイバプロジェクトのページに、いくつかあるな。
http://www.csdinc.co.jp/archiver/lib/activex/index.html
どれがいいのか。

DynaCall+unlha32.dllとかうっかり口走ると、また刺客に襲われるので言わない。

結局、lhaやpkzipをそのまま呼び出すのが、一番使いやすいという話もある。

>>704
ActiveX警告問題を回避すれば、意外と使いでがあるんじゃないかな。
あとはアイデア次第。
X Window Systemで動くWindowマネージャに、デスクバンドみたいないろんな
コンポーネントを自由に貼り付けられる奴があって、うらやましいと思ったもんだが、
Windowsでもできるんだなあ。
というわけで、15パズルキボンヌ (それかよ(w

ノートンは、こういうときに便利なんだな。
俺は、毎回毎回、悪意のあるスクリプト作者にされてしまうのが嫌で、
スクリプトブロック機能をオフにするにとどまらず、アンインストールして
別のソフトに乗り換えちゃったよ。
706680:02/03/31 20:01
「WSH補完クン」 Version0.04a
http://www.geocities.co.jp/SiliconValley-Oakland/4672/

・細部の修正
707680:02/03/31 20:02
「WSH補完クン」 Version0.04a
http://www.geocities.co.jp/SiliconValley-Oakland/4672/

・細部の修正のみ
708680:02/03/31 20:02
二重カキコになっちゃった。スマソ。
709>>706-708:02/04/01 01:09
スキルが足りなくてなにもしてあげられないけど、
とりあえず補完クン頑張れ!!
71011:02/04/01 01:22
>>707
漏れも使ってみたよ。
. の前のオブジェクトによって、ポップアップする内容を
変えるとかしなくても、わりと便利に使えますね。
文字を打っていくと、徐々に候補が絞られていくとこがいい。
この点、VBにはない使いやすさだ。

あとは、カーソルの位置を判別して、そこにポップアップを出すように
して欲しいです。
あと、タイトルバーは要らない(or 細い奴でいい)と思う。
711名無し~3.EXE:02/04/01 03:55
>>705
>DynaCall+unlha32.dll
これって、具体的にどうやるのですか?
とりあえずDynaCallを下ろしてきます
712680:02/04/01 07:11
レスどうもです。

>>709
ありがとう。頑張ります。

>>710
カーソル位置にポップアップは実装したいんだけど、TeraPad(TEditor)は
GetCaretPosでキャレット位置を取得できないんで、今のところ保留してます。
情報求む。
タイトルバーはとりあえずノーマル、ツールウィンドウ、なしを選べるように
してみます。キャレット位置を取得できれば、完全に非表示にして、
入力文字をTeraPadに直接表示するようにしたいのですが...。
713680:02/04/01 23:58
「WSHヘルプクン」 ver0.01
http://www.geocities.co.jp/SiliconValley-Oakland/4672/

いわゆるワンキーヘルプツール。需要無視。
71411:02/04/02 01:00
>>711
だから、刺客に襲われるから。

DynaCallのヘルプと、unlha32.dllについてくるテキストをつらつら読めば、
なんとなく分かるんでは。
…なんか構造体がいっぱい出てくるから、無理そうな気もするけど。

>>712
DoMacroの作者さんに聞いてみるのがいいかもね。
キャレット位置の取得とかは実現してるので。

>>713
hh.exe help.chmを登録するのと何が違うなりか?
試してないので、見当はずれなこと言ってたらごめんなさい。
715680:02/04/02 01:47
>>714
DoMacroのGetCaretPosメソッドのことでしょうか?
このメソッドはテキストの何バイト目かを返すものですが、
Win32APIのGetCaretPos関数は、キャレットのクライアント座標を
返すものなので、名前は同じですが機能は全く別物です。
違ったらスイマセン。

>hh.exe help.chmを登録する
ってどういうことですか?
716680:02/04/02 02:18
重要なことを書き忘れてた。(w
「WSHヘルプクン」ですが、Win9x環境では、32KB以上のファイルには
使えません。

>>714
指定したヘルプファイル(*.chm)から、キャレット位置にある単語の
ヘルプを開くツールです。
717名無し~3.EXE:02/04/02 08:02
>>714
無理なのか出来るのか
はっきりしてよ
718麦飯:02/04/02 11:22
>>715
その通りだと思います。
キャレットのクライアント座標の場合は、TEditorのハンドルに、
SendMessageでEMPosFromCharを送ったらどうかな。
詳しくはTEditorのソースで検索してね。
(それらしいけどはっきりわからない)

「WSH補完クン」いいですね。

>>705
個人的にこのリンクの一番上にあるものが正解だと思います。
またはLHAなどコマンドライン型のプログラムをWScript.Shellで呼び出すとか。

DynaCallはAPI呼び出しに失敗するとあとが怖くありません?
719はじめまして:02/04/02 17:57
初心者が、このスレやらリンク先やら見ながら作ったコード。

Set WshShell = WScript.CreateObject("WScript.Shell")
keyname = "HKCU\Software\Microsoft\Internet Explorer\Main\Display Inline Images"
strold = WshShell.RegRead(keyname)
if strold = "yes" then
WshShell.RegWrite keyname,"no","REG_SZ"
Msgbox "画像OFF"
elseif strold = "no" then
WshShell.RegWrite keyname,"yes","REG_SZ"
Msgbox "画像ON"
end if

使い方。
クイック起動バーに入れといてクリックすると、その後に開いたIEのウィンドウが
画像表示がOFFになります。
もう一度クリックの後に開いたウィンドウは画像表示がONです。
少なくとも、うちの Win98+IE5.5 ではそうなります。
他のパソコンはどうか、知らない。役に立つかどうかもわからない。
72011:02/04/02 18:45
>>715
了解です。

WSHヘルプクンですが、
>指定したヘルプファイル(*.chm)から、キャレット位置にある単語の
>ヘルプを開くツールです。
だったんですね。単にヘルプを開くだけかと思ってました。
だから、hh.exeにhelp.chmを読ませるのとどう違うのか、わからなかったんです。

これは便利そうだ。使わせてもらいます。

>>717
試してないのでわかりません。
情報は全部出したんだから、あとはそっちで試してよ。
もしうまくいったら、ここで報告していただいて。

>>718
> DynaCallはAPI呼び出しに失敗するとあとが怖くありません?
私はまだ、WSHが強制終了するくらいの目にしかあってませんけど、
何が起こるか分からないですよね。
721名無し~3.EXE:02/04/02 18:52
11ウザイ
72211:02/04/02 18:55
>>721
あぁ?
俺がウザイだとぉ?
じゃあ、望みどおり消えてやる。あばよ。
723名無し~3.EXE:02/04/02 21:42
>>721-722
3分間か、早いな
724名無し~3.EXE:02/04/03 00:16
>>719
JavaScript 切るやつなら需要があると思われ。レジストリのどこかは知らん
725680:02/04/03 03:38
>>718
貴重な情報ありがとうございます。これでいけそうです。

>>720
ちゃんと動きましたでしょうか?
SCRIPT56.CHMで使うことを前提としてるので、他の*.chm
だとうまく動かないかもしれません。
726名無し~3.EXE:02/04/03 19:18
>>714
11ら!「無理そう」の「そう」の部分がなんでなのか詳しく教えてください
おねがいします。
あと、_stdcallと_cdeclって何ですか?
あとあと、"f=S8"の8って難ですか?
727名無し~3.EXE:02/04/03 19:19
>>719
おれも同じの作ったよ
でも、そんだけじゃ起動中のやつは変わんないだよね。
変える方法しってるんだけど、教えない。
728680:02/04/03 23:24
「WSH補完クン」 ver0.05
http://www.geocities.co.jp/SiliconValley-Oakland/4672/

・左右のカーソルキーでそのまま抜けれるようにした。
・ウィンドウスタイルを選択できるようにした。
・キャレット位置に合わせて表示するようにした。
72911:02/04/03 23:35
>>724
http://www.microsoft.com/japan/support/kb/articles/J052/9/81.asp

だけど、一時的にJavaScriptをオフにする方法もあるんじゃないかな。
IEの右クリックメニュー拡張系ツールに、そういうのがあったような気も。
Donutなどのソースを見てみるのが早いかもね。

>>725
SCRIPT56.CHM、ちゃんと読めましたよ。いい感じです。F1かCtrl+F1あたりを
割り当てるとGood。

>>726
「そう」は、DynaCallが構造体を扱えないって点です。(ヘルプには明示されてないが…)
VBSでは型宣言ができないから、これはどうしようもないと思う。

あとと、あとあとは、俺もわからんし、ここではスレ違い・板違いだろう。
ヘルプにあるように、f=sで駄目だったらf=cを使ってみるってことで。

>>727
そう言わず、教えてホスィ…
画像のオンオフに関しては、IE5のWebアクセサリーとかいうのにその機能があって、
起動中のIEに関しても有効になるが、これはexeファイルだ。
スクリプトからの制御は無理っぽいのだが…。
73011:02/04/04 00:08
>>728
つーか、コレかなりイイんですけど。
TeraPadがWSH専用エディタになってしまいますが(w
(vbsやjs以外のときはポップアップしないけど、
exeを起動する一瞬が気になってしまうから)

キーワードデータを二次元的にして、引数情報をガイドしてくれたら
最強ですが、それはやりすぎですかねえ。VB使えの声が聞こえてきそうな。
731名無し~3.EXE:02/04/04 04:52
お帰りなさい>11さん
>>729
その「IE5のWebアクセサリー」ってのを
逆汗して調べたの。だからヒミツ!
そんでCOM化。
732名無し~3.EXE:02/04/04 08:28
>>729
やっぱ難でしたか・・・
>>718
素直にUnlhaCom.dllってやつを使います
733名無し~3.EXE:02/04/04 13:39
IE5.0なんですが
フレームを含めた全てのページに処理したいんですが
なんか全然だめです・・

var Ie = new ActiveXObject("InternetExplorer.Application");
Ie.Visible = true;
Ie.Navigate(...);
while (Ie.busy){}

Func(Ie.document.parentWindow);

function Func(window)
{
 // 処理
 var i;
 for (i=0; i<window.frames.length; i++) {
  Func(window.frames(i));
 }
}
どうもframesがよくわかりません
73411:02/04/04 22:42
>>731
それって、ネタ的にやばいから公開できないのか、苦労して調べたから
教えたくないのか、どっち?
どっちにしても、できあがったコンポーネントを公開したら、
喜ばれるんじゃないかな。

>>733
IE5.5以上だと正常に動作すると思います。
たぶん、外部からframesコレクションの各要素が取得できないのは、バグですね。
735IUnknown:02/04/04 23:03
>11
DynaCall は構造体を扱えない?
うーん、たとえ構造体としてのデータ型は無くとも
引数に渡すことは出来そうな気がするんだけど。。。
ちょっと挑戦してみようかな。


うまくいったら報告しますね(週末辺りに)。

といっても、ドキュメントをさらっと見た限り
「出来 "そう" かな」と感じただけですけど。
736680:02/04/04 23:12
「WSH補完クン」 ver0.06
・拡張子によって起動キーを変更するオプション追加。

「WSHヘルプクン」 ver0.02
・Win9xで32KB以上のファイルのときも使えるようにした。
・ヘルプを閉じた時にも終了するようにした。
・ちょっぴり高速化。

http://www.geocities.co.jp/SiliconValley-Oakland/4672/
737名無し~3.EXE:02/04/04 23:25
var myOlApp = WScript.CreateObject("Outlook.Application");
というのを(test.js)
cscript test.js
としても
"Outlook.Application" という名前の
オートメーション クラスが見つかりませんでした。
というエラーメッセージが出ます。
とあるページのサンプルそのまま打ち込んだんですが・・・。
outlookのオブジェクトを作る方法を間違えてますか?
ちなみに、winMeです。
738名無し~3.EXE:02/04/04 23:43
Outlook と Outlook Express を混同してはいないよね?
739737:02/04/05 00:03
Outlook Expressのつもりでかいたんですが・・・。
違うんですか?
740名無し~3.EXE:02/04/05 00:05
>>739 ぜんぜん違う。
74111:02/04/05 00:50
>>735
おお、楽しみです。
もしうまくいかなくても、アイデアだけでも聞かせていただきたいです。

>>736
ご苦労様です。
拡張子によって起動するキーを変更するオプションは、なかなか
考えましたな。
これでTeraPadがWSH専用エディタの座から解放されます(w

ここまでするなら、いっそのこと、B)の起動時実行で常駐して、TEditorへの
キー入力をフックするかなんかして、A)の登録を不要にするのもありかもね。
742名無し~3.EXE:02/04/05 00:51
>>739
書くのめんどくさかったら、OEでいいですよ。
それで普通は通じます。
74311:02/04/05 00:58
>>742
ああッ、Outlook ExpressをOEとかくと、何故か叩かれまくるネットニュースを
思い出した。IEはOKなのになんでだろう。

Outlook.Applicationは、Outlookがインストールされてないと使えません。
Outlook Expressはオートメーションに対応してないのです。残念ながら。
まあ、これが対応していたら、かのI Love Youスクリプトワームの感染力が、
もっと凄まじいものとなっていたことでしょう(w

別にOutlook.Applicationを使わなくても、WSHからメールを出したり
読んだりするくらいなら、CDOなどのシステム標準、あるいはBASP21などの
フリーのコンポーネントで十分です。
744680:02/04/05 01:59
>>741
いつも感想どうもです。

>ここまでするなら、いっそのこと、B)の起動時実行で常駐して、TEditorへの
>キー入力をフックするかなんかして、A)の登録を不要にするのもありかもね。

常駐...。これ以上の機能をつけるならそうするしかないでしょうね。
しかし、これ以上やると、「簡易」じゃなくなってしまふやうな。
どうしようかなぁ。
元々、スクリプトをもっと楽に書くために作ったものなのに、最近はDelphi
しか触ってない...。

なんかメンドクサイので作業を自動化したい。
      ↓
スクリプトを書き始める。
      ↓
毎回、長ったらしいコード書くのがメンドクサイ。
      ↓
「補完クン」を作り始める。
      ↓
Σ(゚д゚lll)ハッ!もともと何したかったんだっけ?
745名無し~3.EXE:02/04/05 06:33
>744
そういうのはよくある話です。
746737:02/04/05 07:31
>11
>Outlook.Applicationは、Outlookがインストールされてないと使えません。
>Outlook Expressはオートメーションに対応してないのです。残念ながら。
そうなんですか。メールを出す、読むというよりも、メールボックスの中の整理
するのに、使いたかったんですが対応していないのなら仕方ないですね。

>対応していたら、かのI Love Youスクリプトワームの感染力が、
>もっと凄まじいものとなっていたことでしょう
いや、ごもっとも。
747初心者:02/04/05 07:43
スクリプトってどういう言語なのですか?
何に近い形なの?
748名無し~3.EXE:02/04/05 11:44
>>734
Enumeratorsしても
コレクションじゃないとか怒られるし
バグなんですか・・ク
IE5.5にするかな
749IUnknown:02/04/05 20:47
>11
速報です。

DynaCall で構造体を扱う件ですが、やはりと言うか
うまくいきましたね。詳細は明日以降に書き込もうと
思いますが GetCursorPos() という API の引数で
使われる POINT 構造体で試してみました。
(最初ということでシンプルな奴ね。)

GetCursorPos()
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wcepoint/htm/_wcesdk_win32_getcursorpos.asp

POINT Structure
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/rectangl_0tiq.asp


ということで構造体によっては DynaCall でも正常に
受け渡しが出来そうですよ。ただ今回の例は Long
を受け取るだけなので簡単なのですが複雑な構造体に
なると C のSDK レベルのコーディングが必要になってくるため
おそらく実用からは程遠くなってしまうでしょうね。

取り敢えず連休に少し落ち着いたところで、手の内を
書きますんでお待ちを。。。
75011:02/04/05 21:34
>>744
楽しければイインジャネーノ?
逆に、楽しくなくなれば、やめどきだよね。

>>746
Outlook Expressのデータファイル(*.dbx)のフォーマットが
有志の方の手によって解析されております。
ttp://www02.so-net.ne.jp/~home/oe5conv/

この情報を元に、OEのオートメーションを可能にする
コンポーネントを誰かが作ってくれることを祈りましょう。

>>747
スクリプトは言語じゃない。
どっちかというと、あなたの質問は「プログラムってどんな言語なの?」
と聞いているのに近いです。つまり、そういうこと。
http://yougo.ascii24.com/gh/62/006280.html

本来の意味は「脚本」なんだがね。

>>748
Enumerateできないのは、IE6でも治ってません。
というか、これは仕様だと思ってます。

>>749
おお、さすがはIUnknownさん。COMを知り尽くしておられる。
(ハンドルからして違いますな)

楽しみに待ってます。もし技術的な側面が強く出る内容なら、
打ち捨てられしム板のWSHスレに書いていただいた方が、
何かと丸く収まるかもしれませんね。
751680:02/04/05 23:40
ここに貼ってあるスクリプトにインデントを入れるスクリプト(VBSのみ)。
高度な話してるのに、つまんないスクリプトでスマソ。

(1/2)

Dim FSO, Arg, Im, Ex
Dim tmp, ln
Dim tab, i
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Arg = WScript.Arguments
If Arg.Count > 0 Then
For i = 0 To Arg.Count - 1
If FSO.FileExists(Arg(i)) Then
tmp = FSO.GetParentFolderName(Arg(i)) & "\temp"
FSO.CopyFile Arg(i), tmp
Set Im = FSO.OpenTextFile(tmp)
Set Ex = FSO.CreateTextFile(Arg(i))
tab = 0
While Not Im.AtEndOfStream
ln = Trim(Im.ReadLine)
Select Case FirstState(UCase(ln))
Case "DO", "FOR", "FUNCTION", "SELECT", "SUB", "WHILE", "WITH"
ln = AddTab(ln, tab)
tab = tab + 1
Case "END", "LOOP", "NEXT", "WEND"
If tab > 0 Then tab = tab - 1
ln = AddTab(ln, tab)
Case "IF"
ln = AddTab(ln, tab)
If UCase(Right(ln, 4)) = "THEN" Then tab = tab + 1
Case "ELSE", "ELSEIF"
ln = AddTab(ln, tab - 1)
Case Else
ln = AddTab(ln, tab)
End Select
Ex.WriteLine(ln)
Wend
752680:02/04/05 23:40
(2/2)

Im.Close
Ex.Close
FSO.DeleteFile(tmp)
End If
Next
MsgBox "終了しました", vbOKOnly
Else
MsgBox "ファイルをD&Dしてね", vbOKOnly
End If

Function FirstState(p1)
Dim i
FirstState = p1
i = InStr(1, p1, " ")
If i > 0 Then FirstState = Left(p1, i - 1)
End Function

Function AddTab(p1, p2)
AddTab = ""
If p1 <> "" Then
If p2 < 0 Then p2 = 0
AddTab = String(p2, vbTab) + p1
End If
End Function
753IUnknown:02/04/06 00:20
早く帰れたのでチョコッとカキコ。

>打ち捨てられしム板のWSHスレに書いていただいた方が、
了解しました。以後 DynaCall ネタはあちらの方に書き込みます。

>Enumerateできないのは、IE6でも治ってません。
>というか、これは仕様だと思ってます。
何かの参考になればということで。。。
frames オブジェクト(コレクション )は IHTMLFramesCollection2 というインターフェイスに
あたりますが、OLE Viewer で見たところ _newEnum メソッドが実装されていません。
このメソッドは IEnumVARIANT インターフェイスというコレクションの列挙用
メソッドを提供するインターフェイスです。つまりこのメソッドがないことで
VBScript や JScript に組み込まれているコレクションへの特殊操作が
実現できなくなっていると思われます。たまに

For Each [Object] In [Collection]
    :
Next



for ([Object] in [Collection]) {
    :
}

が使えないコレクションがありますが、 _newEnum メソッドが実装されていない
ためです。これらのステートメントは内部で IEnumVARIANT インターフェイスを
使うため、_newEnum メソッドを呼び出そうとします。当然 _newEnum メソッドが
ないのですからこのインターフェイスは取得できません。故にエラーとなるのです。

ただなぜ frames コレクションに _newEnum メソッドを実装しないのかは私にはわかりません。
開発者のみぞ知るといったところです。
754IUnknown:02/04/06 00:22
ついでにもういっちょう!

あと、外部から frames コレクションの要素にアクセスできない件ですが
Window オブジェクトではなく Document オブジェクトの frames メソッドを
呼び出してみてください。

    var i;
    for (i=0; i<window.document.frames.length; i++) {
        Func(window.document.frames[i]);
    }
75511:02/04/06 00:48
>>751-752
ども。私のコードに関しては>>656

>>753
理由はセキュリティ関係? そうでもないか。
関係ないけど、SHDocVwのShellWindowsクラスの_NewEnumメソッドは
VBのオブジェクトブラウザとかで可視状態だ。何故?
Function _NewEnum() As Unknown って…

>>754
IE5.01以下のバージョンだと、どっちも駄目なんです…。
756IUnknown:02/04/06 01:42
>VBのオブジェクトブラウザとかで可視状態だ。何故?
restricted 属性も hidden 属性も付いていないからですね。
えっ?何故付いていないのか?単なる付け忘れでは無いでしょうか。。。

>IE5.01以下のバージョンだと、どっちも駄目なんです…。
そうなのですか、IE6で確認してたので、つい。。。






肝心なほうのレスがまだでした。
757名無し~3.EXE:02/04/06 04:12
>>754,755
IUnknownさん、11さん、レスありがと
いずれにしてもIE5.01以下はダメってことで納得
758IUnknown:02/04/06 22:40
>11

DynaCall で構造体を扱う件について。。。
遅れましたが、サンプルコード載せておきました。

http://pc.2ch.net/test/read.cgi/tech/1010400289/l50


75911:02/04/07 13:31
>>758
拝見しました。
なんというか、ほえーって感じですね。
まあ、この話はあっちでやりましょ。
あっちの方が危険ではありますが(w
760名無し~3.EXE:02/04/08 13:41
厨の質問その1。
興味あるんで勉強したいんですが、
やはりVBasicとかのプログラミングを学ばねば難しいのでしょうか。
内部で完結したプラグラミングにはあまり興味はなく
できあいのソフト間の連携や自動化「のみ」興味があるんですが、、、
761名無し~3.EXE:02/04/08 23:36
>>100 にあるリンクでヘルプ落として、
あとはその辺に転がってるサンプルとかをイジってれば
君ならすぐに覚えられると思うよ

でもソフト間の連携・自動化はwshだけだと辛いかも知れない
76211:02/04/09 01:44
なんかけっこう下がってるので、あげとくよ。

>>760
プログラミングを覚えないで、というのが必須条件なら、
WSHは候補から外れるな。
いくらスクリプトと言っても、やっぱり基本的なプログラミング言語
の文法は覚えなきゃ使えないから。

と、これだけでもなんなので、一つム板のスレを紹介しとく。

WIN自動操作ツール
http://pc.2ch.net/test/read.cgi/tech/1015049990/
ここでは39と名乗ってるのが漏れ。
まあ、あとは読んでみてくれ。
763名無し~3.EXE:02/04/09 21:06
指定したURLが存在するかどうかはどうやってチェックしたらいいんでしょう?
それとMicrosoft.XMLHTTPとかAdodb.Streamとか平然と使われてますけど
この辺のドキュメントはどこにあるんでしょうか?
76411:02/04/09 23:40
>>763
http://msdn.microsoft.com/library/en-us/xmlsdk/htm/xml_obj_ixmlhttprequest_8bp0.asp
(ProgIDがMicrosoft.XMLHTTPじゃなくてMsxml2.XMLHTTPに変わってますけど、
どっちでも使えます)
これを使って、HTTP.Open "HEAD"して、404が帰ってきたりタイムアウトしたりしたら
ドキュメントがない、と判断するのはどうでしょう。

Adodb.Stream
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ado270/htm/mdobjstreampme.asp

なんかMSDN重いんですけど・・・
765名無し~3.EXE:02/04/10 07:28
11は>>726なことも知らねーで>>711にDynaを薦めたのかよ(ワラ
766名無し~3.EXE:02/04/10 12:28
レスを読む限り薦めてはいないわな。
ああいうのは示唆という。
君が11の言う刺客だな。
知識自慢はよそのスレでやってくれ。
767765:02/04/10 15:36
実は>>726の答えがわかりません。>>766さん、教えてくささい。
768名無し~3.EXE:02/04/10 18:41
「くささい」なんて言われたら教える気も失せるわな。
769名無し~3.EXE:02/04/10 19:34
ネタ切れですか?ここで漏れの爆裂トーク入れましょうか?
770名無し~3.EXE:02/04/10 19:54
おながいします
771名無し~3.EXE:02/04/10 20:59
_stdcallの方は調べられましたが理解できませんでした。
8の方はどう調べていいか解りません、
11は知らないでも使ってるので、
解らなくても、あまり問題ないのか?
77211:02/04/11 00:49
>>765
まあ、俺もプログラムにそんなに詳しいわけでもないので、お手柔らかに頼む。

>>766
示唆というとニュアンスが違う気がする。「紹介」したつもり。

>>767 >>771
ここではスレ違い・板違いだからなあ。
プログラム板に行って聞いてみるのがいいと思う。
幸い、ム板にもWSHスレがあって、DynaCallの話題が進行中なので、
今ならいいタイミングだと思う。アドレスは>>758。IUnknownさん、あっちでよろしく。
773名無し~3.EXE:02/04/11 01:06
>>772
>>765=>>726=>>767=>>771だろ?
あんたもお人よしだな>11
77411:02/04/11 02:19
>>669
遅レスだけど、作ったのでどうぞ。
まずはコピー・移動、共通部分その1。

Const BIF_RETURNONLYFSDIRS = &H1 'ファイルシステムのフォルダ(仮想フォルダ以外)のみが選択できる。
Const BIF_DONTGOBELOWDOMAIN = &H2 'ドメイン下のネットワークフォルダを含めない。
Const BIF_STATUSTEXT = &H4 'WSHからは意味なし(サイズがちょっと変わる)。
Const BIF_RETURNFSANCESTORS = &H8 'マイネットワーク内のコンピュータのみ選択できる。
Const BIF_EDITBOX = &H10 'フォルダ名を指定する、テキストボックスも表示。
Const BIF_VALIDATE = &H20 'テキストボックスの妥当性チェック。WSHからは意味なし。
Const BIF_NEWDIALOGSTYLE = &H40 'Win2000からの新しいダイアログを表示
Const BIF_USENEWUI = &H50 'BIF_EDITBOX + BIF_NEWDIALOGSTYLE
Const BIF_BROWSEINCLUDEURLS = &H80 'URLの選択ができる。BIF_USENEWUIと併用。
Const BIF_UAHINT = &H100 'テキストボックスにヒントを表示。BIF_NEWDIALOGSTYLEと併用。
Const BIF_BROWSEFORCOMPUTER = &H1000 'コンピュータの検索。ssfNETWORKと併用。
Const BIF_BROWSEFORPRINTER = &H2000 'プリンタの検索。ssfPRINTERS と併用。
Const BIF_BROWSEINCLUDEFILES = &H4000 'ファイルも選択できるようになる。
Const BIF_SHAREABLE = &H8000 '共有も選択できるようになる
77511:02/04/11 02:19
続いてその2。

Const FOF_MULTIDESTFILES = &H1 '複数ファイル指定
Const FOF_CONFIRMMOUSE = &H2 '(未使用)
Const FOF_SILENT = &H4 '経過ダイアログが表示されなくなる。
Const FOF_RENAMEONCOLLISION = &H8 'コピーや移動先に同名のファイルが存在する場合、"コピー 〜 filename.ext"のように、リネームする。
Const FOF_NOCONFIRMATION = &H10 '上書き確認などのダイアログが表示されなくなる。
Const FOF_WANTMAPPINGHANDLE = &H20 'hNameMappingsを使用する。WSHからは意味なし。
Const FOF_ALLOWUNDO = &H40 'エクスプローラで「編集」→「元に戻す」コマンドで操作を取り消せるようになる。
Const FOF_FILESONLY = &H80 'ワイルドカードを指定したとき(*.*)、フォルダを対象外にする。
Const FOF_SIMPLEPROGRESS = &H100 'ファイル名の表示されない、シンプルな経過ダイアログが表示される。
Const FOF_NOCONFIRMMKDIR = &H200 'フォルダを作成する確認ダイアログが表示されなくなる。
77611:02/04/11 02:20
'ファイルのコピー。
If WScript.Arguments.Count = 1 Then
    Set Shell = Wscript.CreateObject("Shell.Application")
    Set oFolder = Shell.BrowseForFolder(0,"選択した項目をフォルダにコピーします:", _
    BIF_RETURNFSANCESTORS + BIF_USENEWUI)
    If Not oFolder Is Nothing Then
        oFolder.CopyHere WScript.Arguments(0),FOF_MULTIDESTFILES + FOF_RENAMEONCOLLISION + FOF_ALLOWUNDO
    Else
        WScript.Quit
    End If
End If
77711:02/04/11 02:22
'ファイルの移動
If WScript.Arguments.Count = 1 Then
    Set Shell = Wscript.CreateObject("Shell.Application")
    Set oFolder = Shell.BrowseForFolder(0,"選択した項目をフォルダに移動します:", _
    BIF_RETURNFSANCESTORS + BIF_USENEWUI)
    If Not oFolder Is Nothing Then
        oFolder.MoveHere WScript.Arguments(0),FOF_MULTIDESTFILES + FOF_RENAMEONCOLLISION + FOF_ALLOWUNDO
    Else
        WScript.Quit
    End If
End If
77811:02/04/11 02:32
使い方は、移動したりコピーしたいファイルかフォルダを、スクリプトファイルにD&D。

ただし、このスクリプトにはいろいろ制限事項があります。

1. 移動・コピーできるファイルかフォルダは一つのみ。
2. 仮想フォルダにコピーor 移動できるように見えてできない。
3. エラー処理をしてないので、いろいろ変。

1.は一応解決方法があるのですが、スマートじゃないのでやりたくないのです。

(複数フォルダを指定するには、FolderItemsオブジェクトをMoveHereメソッドの引数に
指定すればいいのですが、任意のFolderItemオブジェクトを含む
FolderItemsオブジェクトを得るには、ShellFolderViewオブジェクト
(フォルダウィンドウ内のファイルリストコントロール)の
SelectedItemsメソッドを使うしかない。)

2.は、BrowseForFolderメソッド使用時において、他フラグと併用すると、
RETURNONLYFSDIRSが効かないんだな。なぜか。
なあ、フォルダカスタマイズスレの121さん。
これはバグかな?

3.はそのうちね。とりあえず、On Error Resume Nextでも宣言しとけば?
779名無し~3.EXE:02/04/11 02:38
>>11
OKが押せないんだけどどうやって使うの?Win98じゃだめなのか?
あと、「選択した項目をフォルダにコピーします」ってのは、
どういう意味なのかわからないんだが・・・。
78011:02/04/11 02:43
>>779
すまそ。
BIF_RETURNFSANCESTORS + BIF_USENEWUIってのは、
BIF_RETURNONLYFSDIRS + BIF_USENEWUIの間違いです。

(Win2000以上だと、BIF_USENEWUIを指定すると他のフラグは無効になるから、
たまたま動作してた)

ただし、BIF_USENEWUIってのはWin2000からの機能なので、
実質、Win98ではBIF_RETURNONLYFSDIRSのみが指定されてることになります。

「選択した項目をフォルダにコピーします」、ってのは、Win2000の同等の機能で表示される
メッセージの真似をしただけ。意味はMSに聞いてくれ。
78111:02/04/11 02:51
>>780
補足。
Win2000で「フォルダへコピー」機能を使うと、これとほぼ同じダイアログが出るのだ。

「選択した項目をフォルダにコピーします」
=「選択した(この場合、D&Dした)ファイル・フォルダをコピーするフォルダを選択してください。」
って意味ね。
782779:02/04/11 02:59
>>780
>「選択した項目をフォルダにコピーします」、ってのは、Win2000の同等の機能で表示される
>メッセージの真似をしただけ。意味はMSに聞いてくれ。

了解。たぶんもとのメッセージを何も考えずに直訳したらこうなった
って感じかな。

Win98SEだと、FOF_MULTIDESTFILESがあるとコピーできなかった。
あと、CopyHere、MoveHereメソッドは、2バイト文字を含むファイルを
コピー、移動できないんだけどWin2Kだとどうなの?
78311:02/04/11 03:04
>>782
>Win98SEだと、FOF_MULTIDESTFILESがあるとコピーできなかった。
そうなんですか。とりあえず、このスクリプトでは一つしかコピーできないので、
このフラグはなくてもいいです。

2バイト文字に関しては、Win2000では特に問題ないなあ。

あと、Win98なら、
BIF_RETURNONLYFSDIRS + BIF_EDITBOX とすると、フォルダ名を
入力できるテキストボックスが出ます。
784779:02/04/11 03:30
>>783
>2バイト文字に関しては、Win2000では特に問題ないなあ。
ぬう、そうなのか。結構違うなあ。

ちなみに、
FOF_MULTIDESTFILES があると、
xxx をコピーできません。アクセスできません。
ディスクがいっぱいでないか、ライトプロテクトされていないか、・・・
のエラー。
2バイト文字のファイル、フォルダは、
ファイル システムのエラーです (1026)
が出る。

エディットボックスは、BIF_USENEWUI でもちゃんと出るよ。
BIF_NEWDIALOGSTYLE は当然無視されるが、エラーは出ない。
78511:02/04/11 18:43
>>784
BIF_USENEWUI = BIF_EDITBOX + BIF_NEWDIALOGSTYLE
だから当然でしたね。失礼。

ファイルシステムのエラー1026(1026以外を見たことがないのは、気のせいだろうか)
に関しては、うちの掲示板でも報告がありました。
WinNT4でも発生例がありまして、しかし再現性が取れないようです。
786765:02/04/12 01:07
11さん、言いすぎました。ごめんなさい。
あれは使うのやめました。
787680:02/04/13 00:23
WSH補完クン ver0.07

・とりあえず常駐型にしてみた。
・/eオプションを廃止。

http://www.geocities.co.jp/SiliconValley-Oakland/4672/

う〜む、いよいよネタ切れっぽいですな。
このスレとともにこのツールも終了の予感。
788680:02/04/13 01:12
>>WSH補完クン 使ってくれてる人
ver0.07は出来れば動作報告キボンヌ。

WSHと関係ない話でスマソ。
789680:02/04/15 03:56
WSH補完クン ver0.07a

・IME起動時にも開いてたのを修正。
・エラー処理をちょっとだけ強化。
・同梱のhokankun.dllもバージョンアップ。

http://www.geocities.co.jp/SiliconValley-Oakland/4672/

      (やっぱ常駐するなら、タスクトレイにアイコンあった方がいいかなぁ。)
(´-`).。oO(関係ないけどVBS、JSで32KB以上のスクリプト書く人っているんだろうか?)
79011:02/04/15 20:55
あげとこ。
IUnknownさん、いろいろご解説ありがとう。
サイトまでできちゃってますね。
向こうのスレはレベルが高すぎて近づけません(w
(ずっとsage進行なのに、なんでスレ順位があんなに上なのだ?)

WSH補完クンの作者さん、頑張ってください。
WSH用エディタNo1.の座をTeraPadに与えるには、あなたの働きにかかってます。
試している暇がなくてごめんなさい。
791680:02/04/16 01:01
WSH補完クン ver0.10

どうせ常駐するならってことで一から作り直した。
ただし、Win9x系は例によって制限あり。
ver0.07aに比べるとまだ不安定なトコがあるので、
安定志向の人は0.07aを使ってください。

0.07aと0.10のDLLは互換性がないので、両方インストールする場合は
別のディレクトリにインストールするようにしてください。

>>790
お久しぶりです。お忙しそうですね。

>WSH用エディタNo1.の座
って言い過ぎ。ユーザーはたぶん2、3人だし。(w
792680:02/04/16 01:57
よく考えたら、0.07って動作報告ないんだった。(^^;
安定云々はあくまで、私の環境ではって意味ですよ。

>>791は、まるで0.07aが安定版であるかのような書き方ですな。
お詫びして訂正いたします。m(_ _)m
793IUnknown:02/04/16 20:44
>11さん
680さんのいうとおり、お忙しそうですね。本家のほうも最近はあまりレスを
お付けになっていないようですし...。

一応、構造体を扱うモジュールが仮完成したのでこちらで報告だけしておきます。
今回はメンバー名で構造体のデータにアクセスできるので難しい知識は無しで
使えるかと思います (VB で構造体を利用する程度の知識)。

http://members.tripod.co.jp/IUnknown/WSH/DynaCall/download/
から struct.js と sample1b.wsf を DL してください。

ヘルプはこちら。
http://members.tripod.co.jp/IUnknown/WSH/DynaCall/readme.htm

DynaCall の個人的な調査は続きますが一段落したので、またのんびりと
ROM することにします。この件に関し何かありましたらあっちのスレで
よろしく。
79411:02/04/17 23:29
'idx2url.vbs
'かちゅ〜しゃのお気に入りスレ、板ボタンの板をIEのお気に入りにエクスポートします。

Const BIF_USENEWUI = &H50
Const ssfFAVORITES = 6
Set Fs = WScript.CreateObject("Scripting.FileSystemObject")
Set Shell = WScript.CreateObject("Shell.Application")
Set WshShell = WScript.CreateObject("WScript.Shell")
Set dicURL = WScript.CreateObject("Scripting.Dictionary")
Set dicItaURL = WScript.CreateObject("Scripting.Dictionary")
Set dicItaName = WScript.CreateObject("Scripting.Dictionary")

If Not Fs.FileExists("kage.exe") Then
    MsgBox "かちゅ〜しゃのあるフォルダにおいてください。それとkage導入して。"
    WScript.Quit
End If

Set oFolder = Shell.BrowseForFolder(0,"かちゅ〜しゃのお気に入りをエクスポートする" & _
"フォルダを選択してください。", _
BIF_USENEWUI,ssfFAVORITES)

If oFolder Is Nothing Then
    WScript.Quit
End If

sRootFolder = oFolder.Items.Item.Path
79511:02/04/17 23:29
If Fs.FileExists("2channel.brd") Then
    Set ts = Fs.OpenTextFile("2channel.brd")
    Do Until ts.AtEndOfStream
        aIta = Split(ts.ReadLine,vbTab)
        If UBound(aIta) = 3 Then
            sItaURL = "http://" & aIta(1) & "/" & aIta(2) & "/"
            If Not dicItaURL.Exists(aIta(3)) Then
                dicItaURL.Add aIta(3),sItaURL
            End If
            If Not dicItaName.Exists(aIta(2)) Then
                dicItaName.Add aIta(2),aIta(3)
            End If
        End If
    Loop
    ts.Close
End If
79611:02/04/17 23:30
If Fs.FileExists("favboard.idx") Then
    Set ts = Fs.OpenTextFile("favboard.idx")
    Do Until ts.AtEndOfStream
        sItaName = ts.ReadLine
        If dicItaURL.Exists(sItaName) Then
            sItaURLTruePath = Fs.BuildPath(sRootFolder,FixTitle(sItaName) & ".url")
            ForceCreateFolder Fs.GetParentFolderName(sItaURLTruePath)
            Set oSc = WshShell.CreateShortcut(sItaURLTruePath)
            oSc.TargetPath = dicItaURL.Item(sItaName)
            oSc.Save
        End If
    Loop
    ts.Close
End If
79711:02/04/17 23:30
If Fs.FileExists("favorite.idx") Then
    Set ts = Fs.OpenTextFile("favorite.idx")
    Do Until ts.AtEndOfStream
        sPath = ts.ReadLine
        aPath = Split(sPath,"\")
        sURL = "http://" & aPath(0) & "/test/read.cgi/" & aPath(1) & "/" & _
        Fs.GetBaseName(aPath(2)) & "/"
        sTruePath = "log\" & sPath
        
        If dicItaName.Exists(aPath(1)) Then
            sItaName = FixTitle(dicItaName.Item(aPath(1)))
        Else
            sItaName = FixTitle(aPath(1))
        End If
        
79811:02/04/17 23:30
        If Fs.FileExists(sTruePath) Then
            Set tsSure = Fs.OpenTextFile(sTruePath)
            Do Until tsSure.AtEndOfStream
                aLine = Split(tsSure.ReadLine,vbTab)
                sURLPath = sItaName & "\" & FixTitle(aLine(3)) & ".url"
            Loop
            tsSure.Close
        Else
            sURLPath = sItaName & "\" & Fs.GetBaseName(aPath(2)) & ".url"
        End If
        If Not dicURL.Exists(sURLPath) Then
            dicURL.Add sURLPath,sURL
        End If
    Loop
    ts.Close
End If
79911:02/04/17 23:31
For Each key In dicURL.Keys
    sURLTruePath = Fs.BuildPath(sRootFolder,key)
    ForceCreateFolder Fs.GetParentFolderName(sURLTruePath)
    Set oSc = WshShell.CreateShortcut(sURLTruePath)
    oSc.TargetPath = dicURL.Item(key)
    oSc.Save
Next

MsgBox "終了"
80011:02/04/17 23:31
Function FixTitle(title)
    tmpstr=Split("\ / : , . ; * ? "" < > |"," ")
    FixTitle=title
    For Each I In tmpstr
        Fixtitle=Replace(FixTitle,I,"-")
    Next
End Function

Sub ForceCreateFolder(Folder)
    If Fs.FolderExists(Folder) Then Exit Sub
    sParent = Fs.GetParentFolderName(Folder)
    Call ForceCreateFolder(sParent)
    Fs.CreateFolder(Folder)
End Sub
80111:02/04/17 23:44
また、かちゅ〜しゃ関係のスクリプトでごめんなさい。
ちょっとリハビリも兼ねてさくっと作ってみました。

かちゅのお気に入りスレと、板ボタンに登録した板のURLを、IEのお気に入りに
エクスポートするスクリプトです。
実行すると、IEのお気に入りフォルダ配下のどこかのフォルダを選択する
ダイアログが出るので(Win2000以上なら、このダイアログで
新しいフォルダも作れます)、適当に選んでOKすると、そこに
うじゃうじゃインターネットショートカットが作られます。
C:\Windows\Favorites\2chを選んだ場合、

C:\Windows\Favorites\2ch\Windows\お前ら、wsh使ってますか?.url
C:\Windows\Favorites\2ch\Windows.url
てな感じで生成します。

Win98以上なら実行できるんじゃないですかね。
あと、かちゅのあるフォルダにおいて実行してください。

作ってみたはいいものの、これ、使い道があまりないかも知れぬ。
とりあえず、「かちゅを卒業したいけどお気に入り資産がなあ」という人や、
「出先で2ch見たいけど、かちゅがない環境なんだよなあ」という人向きかも
しれません。

今後、このスクリプトの逆バージョン(IEお気に入りからかちゅのお気に入りにインポート)も
作る予定なので、これができると、
「かちゅのお気に入りをエクスプローラで整理」
とか
「IEとかちゅで2chのお気に入りを同期させる」
とかができるようになる予定です。
802VBS乗り換え:02/04/18 00:54
 ここはとてもステキなスレだ。皆さんのコードをお手本に、勉強してみよう。
 しかしVBScriptって難しい。いままで使ってたPythonは結構わかりやすく
かんじたけど、VBscriptはファイル操作もテキストいぢりも勝手がちがって、
習得に時間がかかりそう。
 ところで早速質問なのですけど、WinNT4.0SP5+IE5.01SP1の環境で、
GetObject("WinNT://DOMAIN")ってやるとエラーが出てしまうのは
どういったことが考えられるでしょう。恥ずかしながらエラーメッセージは
控え忘れてしましました。原因が思い当たる方、どうぞ助言をお与えください。
 なお、Win2000SP2+IE6.0、WinXP+IE6の環境では正しく動きました。
#単純にNT4では対応していないってことなのかな…。
80311:02/04/18 00:58
>>802
ADSIのモジュールがいるんじゃない?
WinNT4.0のspに含まれていたような気もするけど、気のせいかな。

PythonもどきでWSHすることもできますぜ。
>>101とか参照。
804VBS乗り換え:02/04/18 01:45
>>803
 (゚Д゚)!! 追加モジュールが必要だなんて。もうだめぽ。
 失礼、うっかりさげてしまったというのに迅速なレス、ありがとうございます。
 この環境、会社のものでして、そう自分勝手に変更できんのです。
一応DomainAdmin権は頂いているのですが、モジュールの追加に必要な
ネット環境がない。繋がる端末はウィルスや不正アクセス防止のため
切り離されているし。#そこまでうるさいのにNT4SP5+IE5.01SP1なのは謎。

 Pythonが使えるというのは面白そうですね。残念ながら会社でPython
いれてくれというのは「自分がいなくなったら死ぬ(保守不可)ような言語は
許可できない」ということでとおらなかった(当然か)ので、当分はVBS一本で
勉強していこうと思います。
805680:02/04/18 01:50
WSH補完クン ver0.20

・引数情報表示機能を実装。
・hokankun.dllをバージョンアップ。(0.02→0.02a)

注)引数の表示は機能をつけただけで、肝心のデータの方は前のまま
  なので、自分で書く必要があります。
  誰か作ってくれないかなあ。一人ではチトきつい。

http://www.geocities.co.jp/SiliconValley-Oakland/4672/

      (すでに、TeraPadである必然性はあんまりないんだよなあ。)
(´-`).。oO(メモ帳で動くバージョンでも、作ってみようかしら...。)
80611:02/04/18 02:07
>805
使って見ましたよ。いいかんじですね。
引数ガイド、VBと動作を一致させるといいかもですね。
すなわち、現在入力している引数が、太字になる。

ここまで来たら、もうCOMコンポーネントから動的にタイプライブラリを
参照して、引数ガイドさせるしかありませんね(w

少なくとも、ProgIDを指定したら、タイプライブラリをテキストに書き出すユーティリティ
なら作れると思いますよ。自分で書かなくても。
よし、寝る前にそのスクリプトを書いてから寝よう。

メモ帳バージョン、需要あるんでしょうか(w
そこだけ高機能になっても、元がしょぼいからなあ。
80711:02/04/18 02:21
いや、まあ、今日のところは、できるということだけ示すにとどめておきます。
wshom.ocxのタイプライブラリを参照して、メンバ一覧を引数つきで
リストアップするスクリプト。
もっと体裁を良くする(省略可能な引数に[]をつけたりとか)ことも、もちろん可能です。

VB6がインストールされている環境でしか動作しないと思われますが。

Set TLI = WScript.CreateObject("TLI.TLIApplication")
Set oTypeInfos = TLI.TypeLibInfoFromFile("wshom.ocx").TypeInfos
on error resume next
For Each oTypeInfo In oTypeInfos
For Each oMember In oTypeInfo.Members
s = s & oMember.Name & ";" & oTypeInfo.Name & "." & oMember.Name & "("
For Each oParameter In oMember.Parameters
s=s & oParameter.Name & ", "
Next
s = s & ")" & vbCrLf
Next
Next
wscript.Echo s
808680:02/04/18 03:02
>>806
いつも報告ありがとうございます。やっぱ動作報告や、感想もらえると
嬉しいですね。
11さんの環境で動いたのなら、とりあえずWin2Kで動くこともわかりますし。

タイプライブラリの参照は、一瞬頭をよぎりましたが、私はCOMについては
サパーリなので、実装するとしたら時間かかるかもです。IUnknown氏なら、
サクッっと出来てしまうんでしょうが...。

次に考えてるのは、VBS限定ですが、予約語を勝手に大文字に変える機能
でもつけようかと思ってるんですが、いらないかな。

>>807のスクリプト、私の環境でも動きました。私はVSもVBも入れてないですが、
Officeが入ってるからかな?
ほえ〜、たったこれだけのスクリプトでできちゃうんだ〜。って感じですね。
補完クンに実装するより、vbs.txt、js.txtを自動成型するスクリプトを、11さんに
書いてもらった方が、早い気がしてきました。
809名無し~3.EXE:02/04/18 19:59
HDDのON/OFFってwshでできる?
81011:02/04/19 01:29
>>808
どうも。要望があります。
. を入力した後、メンバの候補が出ますが、文字を入力しつづけて
候補がなくなったときには、ダイアログを消すことはできないでしょうか?

あと、これは提案なんですが、ステータスバーに、入力中のメンバ関数の
ヘルプを表示させるのはどうでしょう?
そのためには、vbs.txtの書式を拡張する必要がありますが、これが
できると便利だと思います。(この情報もタイプライブラリに含まれてます)
で、メンバが確定してないとき(=キーワードを絞り込んでいる状態のとき)には、
引数ガイドをステータスバーに表示させたら完璧と。

タイプライブラリの参照を動的にやるのは、ちょっと大変そうですね。
というのも、VBSの場合、VBのようにAs節での型宣言ができないので、
Dimステートメントだけを見てオブジェクトの種類を判別するわけには
いかないからです。たぶん、事実上不可能でしょう。

そこで代替案として、簡易クラスビューアみたいなのをポップアップで
呼び出せるようにして、メンバ関数の絞込みが容易にできるように
するのはどうでしょう? そのためにはvbs.txtに「クラス名」の項目が
必要になってきますし、具体的な呼び出し方法は提案できないんですが、
良かったら、ご検討ください。

予約語大文字化は、個人的にはパスですね。タイプライブラリに
定義されている形式でいいんじゃないかと。

タイプライブラリ書き出しスクリプト、良かったら作りますよ。ちょっとしばらくは
無理ですが。で、よく使うクラスに関してはあらかじめ出力しておき、
それを添付し、スクリプトも別途添付するようにして、キーワードを自由に追加できるように
してはいかがでしょうか。たぶんOfficeが入っていたら動くんだと思います(追試キボンヌ)。

長文で失礼。
81111:02/04/19 02:09
というか、簡易クラスビューアは、DoMacroとTLI.TLIApplicationを使って、
HTAかなんかで私が作ってしまうと言う手もあるな(ニヤリ
812680:02/04/19 02:34
>>810
要望に関しては、健闘してみることにします。

オブジェクトの種類の判別については、VBSの場合なら、Setステートメント
を見れば、出来なくもなさそうですが、かなり本格的に構文解析する必要が
あるため、大変そうです。

予約語大文字かは誤解されてるかも...。っていうか私の書き方が悪かった
んですが。こんな↓感じです。
http://www.geocities.co.jp/SiliconValley-Oakland/4672/wshcp021beta.zip

↑のβでも一部実装してますが、現在は、コメント、文字列記述中には
開かないようにしてみてます。
最初の頃と違って、最近は一つ機能を追加する度に、JS用、VBS用の二つの
ルーチンが必要なので、結構手間です。
813名無し~3.EXE:02/04/19 04:31
>>807
これはVBは無くてはダメですか?
814680:02/04/19 23:31
>. を入力した後、メンバの候補が出ますが、文字を入力しつづけて
>候補がなくなったときには、ダイアログを消すことはできないでしょうか?

って普通の要望かと思ってたら、思いっきりバグじゃないですか。
いやぁ、申し訳ありません。というわけで、

WSH補完クン ver0.21
 ・コメントや文字列中の場合は、なるべく無視するようにした。
 ・前の単語が数字から始まっている時は、開かないようにした。
 ・vbs.txtに登録されている単語を変換するようにした。
 ・候補が無い時に改行以外で窓が閉じない不具合を修正。
 ・vbs.txt、js.txtの仕様を少し変更。
・その他

http://www.geocities.co.jp/SiliconValley-Oakland/4672/

11さんの要望は、バグのことなのか、ver0.21の動作からさらに...
という意味なのか判断できかねたので、とりあえず不具合の修正のみです。
815680:02/04/20 00:17
たいした手間じゃないので、もう一種類作ってみました。
ver0.21との違いはリストの候補がなくなったときの動作のみ。

http://www.geocities.co.jp/SiliconValley-Oakland/4672/wshcp021a.zip
(EXEのみ)

0.21と0.21aはどっちの動作がいいか、教えてもらえると嬉しいです。
816680:02/04/20 03:46
>>813
VBというか、VBやOfficeをインストールするとついてくるTLBINF32.DLL
が必要です。
このDLLだけあればOKなのかどうかは不明。

TLBINF32.DLL は↓ココで配布されてます。(自己責任でお願いします)
http://home.sprintmail.com/~mpryor/promo.htm
817680:02/04/20 23:47
WSH補完クン ver0.22

 ・補完候補切り替え時のちらつきを解消。
 ・VBSの定数の補完機能を追加。
 ・ステータスバーに情報を表示できるようにした。
 ・エラー処理を修正。

http://www.geocities.co.jp/SiliconValley-Oakland/4672/

     (なんか俺の独り言スレになりつつあるなあ...。)
     (気の利いたスクリプトのひとつでも書ければいいんだが...。)
     (そういや、某ラボの過去ログ見てたら意外な人がカキコしてて、)
(´-`).。oO(ちょっとびっくりしてみたり。)
81811:02/04/22 23:11
>>817
ども。
おお、俺好みのツールになっている(w
タイプライブラリ書き出しスクリプトはちょっと待ってください。

意外な人って誰だろう
81911:02/04/23 00:10
Set TLI = WScript.CreateObject("TLI.TLIApplication")
Set oTypeInfos = TLI.TypeLibInfoFromFile("wshom.ocx").TypeInfos
on error resume Next

For Each oTypeInfo In oTypeInfos
For Each oMember In oTypeInfo.Members
s = s & oMember.Name & ";" & oTypeInfo.Name & "." & oMember.Name & "("
param = ""
For Each oParameter In oMember.Parameters
Set oVarTypeInfo = oParameter.VarTypeInfo
sVarType = GetTypeName(oVarTypeInfo.VarType)
If param = "" Then
If oParameter.Optional Then
param = param & "[" & oParameter.Name & sVarType & "]"
Else
param = param & oParameter.Name & sVarType
End If
Else
If oParameter.Optional Then
param = param & "[, " & oParameter.Name & sVarType & "]"
Else
param = param & ", " & oParameter.Name & sVarType
End If
End If
Next
s = s & param & ")" & GetTypeName(oMember.ReturnType) & ";" & oMember.HelpString & vbCrLf
Next
Next
82011:02/04/23 00:10
wscript.Echo s

Function GetTypeName(TliVarType)
Select Case TliVarType
Case 8192 : sTemp = "Array"
Case 70 : sTemp = "Object"
Case 11 : sTemp = "Boolean"
Case 8 : sTemp = "String"
Case Else
GetTypeName=""
Exit Function
End Select
GetTypeName = " As " & sTemp
End Function
82111:02/04/23 00:12
まだ未完成ですがね。だいぶVBの挙動に近づいてきた。
問題は、HelpStringメソッドの使いかたが分からない点。
どうやってメンバのヘルプを取得すればいいんだ?

あと、引数省略時の[ ]の入れ子構造も謎だ。

他にも謎と、解決しないといけない問題が山積。
これは案外、一筋縄では行きそうにないです。
822680:02/04/23 01:21
>>818
こんばんは。もうこのスレには二人しかいないのだらうか?
なんか、荒しみたいなので、バージョンアップしてもココには
貼らないことにしました。

意外な人というのは、RiffRaff氏のことです。

HelpStringメソッドや引数省略に関しては、私も調べてみます。
(11氏でもわからないことが、私にわかるとも思えませんが。)
ただ、引数省略の方は、引数にデフォルト値があれば、VBE側で
[ ]を挿入しているのではないでしょうか。
まだ、何も調べてない状態なので、ただの思いつきですが...。
82311:02/04/23 01:31
じゃあ、私も貼らないようにします。
完成したら、うpしてそのアドレスを貼ることにしよう。

[ ] に関しては、私の勘違いでした。無視してください。
82411:02/04/23 01:34
.Optional=Trueの場合、[ ]がつくわけです。
また、デフォルト値は.DefaultValueだと思います。
まあ、HelpStringの問題が解決したら、適当にαバージョンを出しましょう。

js.txtに関しては、どうしましょうかね。
JScript.NETのような型宣言を、便宜上採用しましょうか。
たしか、var hoge = moge : typename; て感じだったと思います。
825680:02/04/23 02:41
>>824
なるほど。ちゃんと[ ]用のフラグがあるわけですね。
やはり、適当なことを言うべきじゃないなぁ。すみませんでした。

>じゃあ、私も貼らないようにします。
いや、11さんのはちゃんとつかえるVBSなんだから、べつに貼っても
構わないと思いますが...。

JSはVBS以上にわからないので、11さんにおまかせします。(^^;

かわりに、掲示板でも設置しようと思ったら、ジオの掲示板が全然設置
出来ない。なぜだあぁ〜〜( ;´Д`)
826名無し~3.EXE:02/04/23 15:00
ie5で、htaから<iframe application="yes" src="hoo.htm">で
フレーム表示させたhtmのスクリプトが動いてたのに、
ie6.0にしてからフレーム内のスクリプトが動かない‥‥
セキュリティ的な変更でもあった?
82711:02/04/28 18:22
結構ごぶさたです。

タイプライブラリ書き出しスクリプトですが、helpstringの読み出しのところで、
完全に行き詰まってしまいました。
ム板のWSHスレに質問を出してみましたので、レスポンスがあるまで、とりあえず
このスクリプトは保留しとこうと思います。

こっちは置いといて、folder.htt改造を再開することにします…。
82811:02/04/28 18:56
http://pc.2ch.net/test/read.cgi/tech/1010400289/55-56
と、そういうことでした。マヌケな私。
というわけで、開発再開します…。
829名無し~3.EXE:02/04/29 15:23
javascriptってどんなウィジェットが使えるんですか?
830今月の保守係:02/05/02 18:14
ショートカットアイコンを右クリックしたときのメニューに
「リンク先を開く」の項目を追加するようなやつを一発ください。

ファイルを右クリックしたときのメニューに
「一つ上の階層に移動」、「一つ上の階層にコピー」の項目を
追加するようなやつを一発ください。

お忙しいと言うことなのでいくらでも待ちます。
831名無し~3.EXE:02/05/02 22:24
>>830
こういうのの事でしょうか?
違ってたら申し訳ない

// C:\openparent.js

if(0 == WScript.Arguments.Count())
    WScript.Quit();

var WshShell = new ActiveXObject("WScript.Shell");

for(var i = 0; i < WScript.Arguments.Count(); ++i)
{
    var Target;
    if(WScript.Arguments(i).slice(-3) == "lnk")
        Target = WshShell.CreateShortcut(WScript.Arguments(i)).TargetPath;
    else Target = WScript.Arguments(i);

    Target = Target.substring(0, Target.lastIndexOf("\\"));
    if(Target) try {
        WshShell.Run("\""+Target+"\"");
    } catch(e) { WScript.Echo(e.message); }
}


// openparent.reg

REGEDIT4

[HKEY_CLASSES_ROOT\lnkfile\Shell]

[HKEY_CLASSES_ROOT\lnkfile\Shell\リンク先のフォルダを開く(&L)]

[HKEY_CLASSES_ROOT\lnkfile\Shell\リンク先のフォルダを開く(&L)\command]
@="\"C:\\WINDOWS\\wscript.exe\" C:\\openparent.js \"%1\""
832名無し~3.EXE:02/05/02 23:14
(´-`).。oO(このスレでJScript見たの、ずいぶん、久しぶりな気がするなぁ)
833680:02/05/03 01:06
>>831
おおっ!便利ですねコレ。
私は、>>830さんではありませんが、ありがたく使わせていただきます。
834804:02/05/03 02:35
 ううむ、WSH+VBSは難しい。pythonみたいにプロンプトに入って一行一行
実行できればいいのに。
 VBSで、Pythonのdir()みたいにオブジェクトのメンバを一覧できる関数
があると便利なのに。
 ネットワーク越しに向こうさんのPCの資源調査ができるといいのに。
 などと考えながら勉強しております。
 いま、プロパティの使い方と月日を二桁で返すやり方で悩んでいます。
"%2d"%(day(date))とかすると"05"と返るようにしたいけど,やっぱり
できないのね。うぐぅ。やはり文字列として返してくれる関数を自作する
のが早いかな…。
835804:02/05/03 02:38
 何事も形から。ということで先日、それらしい本として
毎日コミュニケーションズ「WindowsScriptingHost入門」
  - ファイル操作の見本が載っていたので(それを知りたかったこともあり)購入。
技術評論社「VBScriptポケットリファレンス」
  - 組み込みの関数がまとめてあり、手元にあると便利だと思う。
の二冊を買ってみましたが、ほかにお勧めの本などありますか?
 以前に出てたものだと、
「Rubyを256倍使うための本 邪道編」 - COMについて詳しく載っている。
「はじめてのWindows Scripting Host」- ぽん太殿推薦?
が出ていましたね。自分が知りたいものだと、
・システム管理に便利そうな ADSI, WMI といった機能の利用法
・収集した結果をWordやらExcelやらAccessやらに渡してやるための
 インターフェースの記述法
なんかが載っている本があると
勉強がはかどる -> ツールができる -> 仕事が早く終わる
  -> その分勉強時間を多く取れる -> (゚д゚)ウマー
(゚д゚)ウマーい状況になりたいな…いや、ならなくちゃ。とりあえず誰でも
できそうな仕事はみんな新人さんに振って、勉強とツール作りの時間を
ふやそっと。
836今月の保守係:02/05/03 05:21
>831
お忙しい中、即レス頂き感謝です。で、これはいったいどうやって使うのでしょうか?
837837:02/05/03 11:14
これすごい便利ですね。
WshShell.Run("explorer /e,\""+Target+"\"");
に変えて使わせてもらいます。

>>836
OSが95系ならそのままopenparent.regを実行するだけですよ。
838名無し~3.EXE:02/05/03 15:32
教えてクンで申し訳ありません。
hoge.htmlの中で<dt>というタグが出てきたら、その前に改行を入れる。
例えば
/l50</a><br><br><dt>3 :<font color=green>
            ↓
/l50</a><br><br>
<dt>3 :<font color=green>

と出来るようなスクリプトがあれば助かるのですが、
『俺が組んでやるぜ!』という方、いらっしゃいましたらよろしくお願いします。
839名無し~3.EXE:02/05/03 15:33
エディタで置換しろよ。
840名無し~3.EXE:02/05/03 16:56
>>835

漏れも仕事でなんとかwshを使って効率化を図ろうとしてやろうと思って、wshを
勉強中。リファレンス片手にwshに格闘する毎日だけど、まだ、ツールを
作成する時間がものすごくかかるためにかえって帰宅時間が遅くなる毎日です。
けど、なんとかものにしてやろうと思ってます。はやく、

>>勉強がはかどる -> ツールができる -> 仕事が早く終わる
>> -> その分勉強時間を多く取れる -> (゚д゚)ウマー

のような好循環にもっていきたいですな。ちなみに私は新人さん。企業内
情シス部門のペーペーであります。上司や先輩は、すぐに有料のツールに
頼ろうとするのでなんとか彼らに金を使わなくても便利なツールができるん
だということを教えてやりたいとおもってます。部署での立場は違うようだけど
頑張りましょう!

841親切な人:02/05/03 17:03

ヤフーオークションで、凄い人気商品、発見!!!

「高性能ビデオスタビライザー」↓
http://user.auctions.yahoo.co.jp/jp/user/NEO_UURONNTYA

ヤフーオークション内では、現在、このオークション
の話題で、持ちきりです。
842名無し~3.EXE:02/05/03 17:04
>>838

WSH使うなら、FileSystemObjectのReadlineを使って一行ずつ読む。
読んだ内容を適当な変数に突っ込みつつ,それをRegExp(正規表現)
オブジェクトあたりを使うなりして、判定、置換。そんな感じでお手軽
にできそうだが?
843名無し~3.EXE:02/05/03 17:09
WSHなんか危ないものは、とっととアンインストールした方がいいよ。
だいたいWSHはもう消えていく技術だし。今更一生懸命やっても
時間の無駄。
844 :02/05/03 17:29
>>843
残念ながらそれは言えてるね
845俺が組んでやるぜ!:02/05/03 19:21
>>838
//.html をこのスクリプトに Drop
//置換して上書きします。"逆の操作" にすると元に戻します
//(注) 元に戻らない場合もあります

var w=WSH;
if(0==w.Arguments.length) w.echo('引数がありません'),w.quit();
var objFs=new ActiveXObject('Scripting.FileSystemObject');
var str_arg=w.Arguments.Item(0);
if(!objFs.FileExists(str_arg) || 'html'!=objFs.GetExtensionName(str_arg).toLowerCase())
w.echo('引数は無効です'),w.quit();

var obj_text=objFs.OpenTextFile(str_arg,1); //読込み open
var str_text=obj_text.ReadAll();
obj_text.Close();

str_text=str_text.replace(/[^\n](<dt>)/ig,'\r\n$1'); //<dt>の前にCRLFを付加する
//str_text=str_text.replace(/\r\n(<dt>)/ig,'$1'); //逆の操作
obj_text=objFs.OpenTextFile(str_arg,2); //書込み open
obj_text.Write(str_text);
obj_text.Close();

if(RegExp.index<0) w.echo('一致パターンなし');
else w.echo('置換完了');
846名無し~3.EXE:02/05/03 20:39
>837
OSはXPです。.reg実行したら有効じゃないと言われたので、
レジストリに新しいキーを作ったりもしてみたのですが、
@="\"C:\\WINDOWS\\wscript.exe\" C:\\openparent.js \"%1\""
の使い方がわかりません。

XPでの詳しい教えてもらえませんか?
84711:02/05/03 21:38
>835
お勧めの本は、ない。
WSHは、登場初期は結構(それでもささやかなもんだが)さわがれたけど、
今は悪名高いウィルス実行環境としか思われてないのが現状で、
本も全然出てない。
登場してから、結構バージョンアップしているのだが、それに追随している
書籍は、残念ながら存在しないようです。

>843
たしかに、COMとともに消え行くというシナリオは、一番可能性が高い。
だが、.NET時代にも、WSHに変わる、何らかの簡易言語実行環境が
残るのは間違いないと思う。
それは、WSHとは似ても似つかぬものになる可能性もあるが。

それでも、現在のところは、まだ現役だ。
だから、少なくともあと2〜3年は有効に利用できると思う。
それに、WSHがなくなっても、覚えたことは無駄にはならない。
プログラミングのノウハウは、例え言語や環境が変わっても、
本人のスキルとして残るからね。
848804:02/05/03 21:57
>>840
 同士ハケーン。うちでは以前に「ツールの作成は開発部の仕事だろう。
運用はシステムの正常な稼動を監視していればいいんだ」とか
言われて(゚Д゚)ハァ? とかなったことがあったな…。開発はそんなことまで
やってくれるほど暇でしょうがないのか、と小一(略)。多分ツールと聞くと
居ながらにしてPCのあらゆる情報を取り出せるスゲーものとかしか想像
できないのでしょうね。
 そんな自分も4月に入ったばかりの新人さん。うちの先輩は力業に
頼ろうとする困った人。いや、だからIEのテーブルはExcelにコピペで
いけるから、ああ、手で書き写さないで…
 そんなのやファイルのコピー(もちろんExplorerで)すらままならない
PC初心者の新人を教育しつつ、勉強もしていかないと。まあ、お互い
よりよい明日を、Better Tomorrow を心に留め、がんばっていきましょう。
849831:02/05/03 22:32
修正。

// openparent.js
if(WScript.Arguments(i).slice(-3) == "lnk")
    ↓
if(WScript.Arguments(i).slice(-4).toLowerCase() == ".lnk")

ところで、ショートカットの右クリックから起動されることを前提にするのならスクリプトは次の6行で十分。

var WshShell = new ActiveXObject("WScript.Shell");
var Target = WshShell.CreateShortcut(WScript.Arguments(0)).TargetPath;
Target = Target.substring(0, Target.lastIndexOf("\\"));
if(Target) try {
    WshShell.Run("\""+ Target +"\"");
} catch(e) { WScript.Echo(e.message); }

シンプルなのが(・∀・)イイってならこっち。

>>846
XPは持ってないけど取り敢えず @=〜 の意味は作ったって言うcommandってキーの(標準)て名前の値を
"C:\WINDOWS\wscript.exe" C:\openparent.js "%1"
に変更するって意味。(wscript.exeのある場所がC:\WINDOWSでないなら適当に変更する)
こういうこと?
850830:02/05/04 02:06
>849
ご親切にありがとうございます。XPではF:\WINDOWS\System32\WScript.exeにありました。
非常に便利で気に入ってます、ありがとうございました。
851804:02/05/04 04:01
>>847
 う〜む、なかなか本が見当たらないと思ったら、それ自体ほとんど
出ていないのですか。だから書泉でもほとんど面白そうなのが
なかったのか。
 あとはwebで情報を見つけるしかない、と。では、以前11氏の
紹介していた情報を並べてみよう。
>>100-101  便利リンク集
>>124  InternetExplorer.Applicationのリファレンス
>>502  WMI SDK
>>511  OLE/COM Object Viewer
>>646  スクリプトデバッガ
それと MSDN
http://msdn.microsoft.com/default.asp
 これらを読んで、書いて、11氏のような達人になれるよう精進しよぅ。
852804:02/05/04 11:47
amazonというところで検索したら、結構最近にADSIの本がでてたです。

ADSIスクリプトによるWindows2000システム管理 Windows2000管理者ガイドブック
ttp://www.amazon.co.jp/exec/obidos/ASIN/4894712881/qid=1020480009/sr=1-1/ref=sr_1_0_1/250-0088440-1425869

でも\5.8kはちょっと手を出しづらい…
853837:02/05/04 12:54
ADSIってどうやって使うもんなの?
ADO経由で使うようなサンプルがあったので使ってみようかと思ったんだけど
ActiveDirectoryの設定なんてワカラン。
それが載っていたら買おうかな。

参考書の件ですが、ASPの本でWSH覚えるってのもあり?
自分は標準ASPテクニカルリファレンスというのを使っています。
85411:02/05/04 13:24
海外なら書籍も豊富です。
取り寄せてみるのも悪くないかもね。

ttp://communities.msn.com/windowsscript/books.msnw

>852の原著もあるよ。
85511:02/05/04 13:27
あと、手前味噌でスマソだけど、うちのリンク集も使ってください。
ttp://www.roy.hi-ho.ne.jp/mutaguchi/wsh/links.htm
85611:02/05/04 15:07
以前まとめた、国内で出版されているWSH本のリスト。

「はじめてのWindows Scripting Host」 (株)アンク著 技術評論社
ttp://www.ank.co.jp/book/1998/wsh1.htm

「使いながら覚えるWindowsScriptingHost プログラミング入門」 竹田英雄著 エーアイ出版
ttp://emall.justnet.ne.jp/shop/pbk/cartdata/b1_01b/12443.htm

「Windows Scripting Host入門 with VBScript」 毎日コミュニケーションズ
ttp://emall.justnet.ne.jp/shop/pbk/cartdata/b1_01b/11233.htm

「WSHで楽しむWindows95/98/NT4.0版 ウィンドウズ・スクリプティング入門 VBScript編」 メディアテック出版

「WSHクイックリファレンス」 羽山博著 オライリー・ジャパン
ttp://www.oreilly.co.jp/BOOK/wsh/wsh.htm

他にもあったら教えてください。

URLはほとんどリンク切れですが(w
どうしてもリンク先が見たければ、ここ使ってよ。
ttp://www.archive.org/index.html

Rubyを256倍使うための本 邪道編もおすすめ。
>>558を見よ。

あと、雑誌なら、月刊ASCII1998年8月号の記事が、読み応えあります。
この記事は、1999年11月号の別冊付録に再録されています。

日経バイト2001年10月号に、WSHで各種コンポーネントを使ってネットワーク管理をしようという
趣旨の特集が組まれています。

Windows2000 WorldやVisual Basic Magazineとかにも、連載記事や特集とかが
時々ありますね。

BackOffice World 2000年7月号から、WSH+WMIを使った高度なシステム管理についての
連載があったそうです。詳細は未確認です。

こんなところかな。現在、連載中のWSH関係の記事をご存知の方、教えてください。
最近あまりチェックしてないもので。
85711:02/05/04 15:28
追加。
日経ソフトウエア 2000年2月号に、ADSIの特集がありました。
ここに、全文(?)が再掲されています。
ttp://www.galliver.co.jp/writing/nikkei_tokushu/wad002/index.html

あと、知る人ぞ知る、書名からはとても想像がつかないマニアック誌、
Windows Startに、WSHに関する連載があったことをご存知でしょうか。
85811:02/05/04 15:35
つーか、Windows StartのWSH記事、まだ連載中だった(w

ttp://www.netjoy.ne.jp/~tuya/RensaiHome.html
ここの、
WindowsStart連載
「Windows Scripter 2000」
ってところね。
サンプルスクリプトが再掲されてます。

この連載、かなり長期化してるし、いずれ単行本化するんじゃないですかねえ。
85911:02/05/04 15:42
>858
うーむ、正直、あなどっていたが、サンプルスクリプト群を見る限り、
この連載記事が、一番読み応えがありそうですな。
早く単行本にならないかな。

連続投稿で失礼しました。
860804:02/05/04 22:36
>855
 これはステキ。ううむ、そういえばリンク集って一回も覗いたことが
なかった。こんなによいリンク集があったなんて。11さんゴメソ。
>858 の連載記事もすごい。ううむ、こんな本と知っていれば立ち読みくらい
はしていたのに。単行本化、漏れも烈しくキボーンする所存。
861838:02/05/06 02:03
>845
レスが遅くなってすみません。
ありがとうございました。
早速コピペして、目的のファイルをD&Dしてみたんですが、
行:1
文字:10
エラー:ステートメントの末尾が不正です
コード:800A0401
のエラーが出ます。
作ってもらっておきながら失礼かとは思いますが、他の方動きますか?
OSによって動作に違いとかはあるんですかね?
Win2000 WSH5.6
プログラムに疎いんで、どこを直せばいいのか…
862名無し~3.EXE:02/05/06 02:13
>>861
拡張子jsにしてる?
863名無し~3.EXE:02/05/06 17:13
AAAA

↓置換 [A]→[A\n]

A
A
A
A
864名無し~3.EXE:02/05/06 17:15
/l50</a><br><br><dt>3 :<font color=green>

↓置換 [<dt>]→[\n<dt>]
↓        
/l50</a><br><br>
<dt>3 :<font color=green>
865838:02/05/07 21:43
>862
vbsにしてました。すみません。

>863-864
TeraPadだと、一行1000文字以上だと出来ないんですよ。
2ちゃんのdat逝く前の1000超えスレのソースを表示させたら
3行で収まってたんで、これをレス番ごとにしたかったんです。
866名無し~3.EXE:02/05/07 21:51
すみません、質問なんですが、
hoge.iniという設定ファイルの中にあるpiyo=0という文字列を
同じ行にpiyo=1と上書きする。また、そのスクリプトを再実行したときに、
piyo=1から、piyo=0に上書きする。
といったスクリプトはできないでしょうか?
867名無し~3.EXE:02/05/07 22:18
>>866
Dim FSO, filename, buf(), F, i, s
Set FSO = CreateObject("Scripting.FileSystemObject")
filename = "hoge.ini"
Set F = FSO.OpenTextFile(filename,1)
ReDim buf(0)
While Not F.AtEndOfStream
s = F.ReadLine
If s = "piyo=0" Then
s = "piyo=1"
ElseIf s = "piyo=1" Then
s = "piyo=0"
End If
buf(UBound(buf)) = s
ReDim Preserve buf(UBound(buf)+1)
Wend
F.Close
Set F = FSO.CreateTextFile(filename,True)
For i = 0 To UBound(buf) - 1
F.WriteLine buf(i)
Next
F.Close
868名無し~3.EXE:02/05/07 22:34
>>867
おお!ありがとうございます。
このスレ見てWHS始めたばっかで、途方にくれてました。感謝!
869845 修正:02/05/07 23:34
すみません、>>845 のスクリプトは、正規表現パターンが間違ってました。
/l50</a><br><b><dt>3 :<font color=green>

/l50</a><br><br
<dt>3 :<font color=green>
となってしまいます。
変更点
正規表現パターン
一致パターンがない時は 上書きしないようにした
バグの温床になりそうなものがいくつか有ったのでロジックを変更
ショートカットの場合は、リンク先を参照するようにした

MSのヘルプに、
http://www.microsoft.com/japan/developer/library/script56/js56jsmthtest.htm
>グローバルな RegExp オブジェクトのプロパティは、test メソッドの実行では変更されません
と、ありますが、そうすると ローカルファイルの .url の時は、上の sub_getTarget() 内の
rightContextプロパティ を使って Pathを取り出せないはずですが、うち(98SE ,WSH5.6 ,IE5.0)
ではこれでうまくいきます。
もし これがうまくない時は、下の substr() を使ったものにしてください
870845 修正 スクリプト:02/05/07 23:35
var w=WScript;
if(0==w.Arguments.length) w.echo('引数がありません'),w.quit();
var objFs=new ActiveXObject('Scripting.FileSystemObject');
var objWs=new ActiveXObject('WScript.Shell');

var str_arg=sub_getTarget(w.Arguments.Item(0));
if(!objFs.FileExists(str_arg) || !/\.html$/i.test(str_arg))
w.echo('引数は無効です'),w.quit();

var obj_text=objFs.OpenTextFile(str_arg,1); //読込み open
var str_text=obj_text.ReadAll();
obj_text.Close();

var re=/([^\n])(<dt>)/ig,str_replace='$1\r\n$2';
//var re=/(<dt>)/ig,str_replace='\r\n$1'; //何回でも置換するパターン
//var re=/\r\n(<dt>)/ig,str_replace='$1'; //逆の操作
if(!re.test(str_text)) w.echo('一致パターンなし'),w.quit();
str_text=str_text.replace(re,str_replace); //<dt>の前にCRLFを付加する

obj_text=objFs.OpenTextFile(str_arg,2); //書込み open
obj_text.Write(str_text);
obj_text.Close();
w.echo('置換完了');

//ショートカット(.lnk .url)なら リンク先を返す
function sub_getTarget(str_path){
try{
var str_tar=objWs.CreateShortcut(str_path).TargetPath;
if(/^file:\/{3}/i.test(str_tar)) return RegExp.rightContext.replace(/\//g,'\\');
// if(/^file:\/{3}/i.test(str_tar)) return str_tar.substr(8).replace(/\//g,'\\');
return str_tar;
}catch(e){return str_path}
}
871869 訂正:02/05/07 23:42
>869
>上の sub_getTarget() 内の
"上の" ではなく、"下の" でした
872838:02/05/09 00:51
>845さん、前回のは『ちょっと変だな?』と思ってましたが、どうもです。
エディタで置換するよりも速いですね。
これぐらいは自分で組めるように頑張ります。
873名無し~3.EXE:02/05/10 17:29
WSHとIEを組み合わせて

Set Ie = WScript.CreateObject("InternetExplorer.Application")
Ie.Navigate("ほにゃらら")

の要領で、指定されたページを解析してデータ取得する仕組みを
作っているのですが、
874名無し~3.EXE:02/05/10 17:33
すみません、失敗。
---
WSHとIEを組み合わせて

Set Ie = WScript.CreateObject("InternetExplorer.Application")
Ie.Navigate("ほにゃらら")
   :
   :

の要領で、指定されたページを解析してデータ取得するよくあるスクリプト
を 作っているのですが、 ダイアログがポップアップするタイプの
ID/Passwordを必要とするページに入るにはどうしたらいいのでしょうか?

URLに
http://username:[email protected]
のような書き方だと、串に記録されていそうで怖いんです。

↓ここ読んだのですが、見つけられませんでした・・・

ttp://www.microsoft.com/japan/developer/library/default.asp?URL=/japan/developer/library/jpisdk/dhtml/references/domrefs.htm

どなたかおしえて頂けませんか?
875名無し~3.EXE:02/05/10 21:48
>>874
どっちにしろ記録されてるから安心して下さい。
876874:02/05/11 00:42
>>875
いわゆる標準認証で使うID・PASSWORDも串に記録されるんですか?
あまり聞いたことありませんが。(一応、串の管理もやってたことあるので・・)

少なくともURLは記録されるわけで、その場合、username:password
の部分がどうなってしまうかまではちょっと知らないので。

脱線してしまいましたが、串どうこうというより、どのみち
http://username:[email protected]
の書き方は気持ち悪いので避けたいわけです。

87711:02/05/11 03:56
>>876
Microsoft.XMLHTTPを使えば何とかなりませんか?
878名無し~3.EXE:02/05/11 10:32
>>876
http://username:password@www.***.com/

HTTPリクエストの送り方を見れば、こんな「URL」が送られるわけがないことくらい
わかるはず。
普通はクライアントが勝手に @ 以前を取り出して、Authorization: として送ってくれるよ。
少なくともIEではそう。
879874:02/05/11 11:19
>>877
ちょっと調べてみます

>>878
>普通はクライアントが勝手に @ 以前を取り出して、Authorization: として送ってくれるよ。

なるほど、サーバー側の処理になっているのかと思ってました。
わからなかったら、ここで妥協しても良さそうですね。

有難うございました。
880874:02/05/11 11:34
あ、このスレの118の内容がそれっぽいですね。
有難うございました。
881名無し~3.EXE:02/05/12 01:40
<HEAD>
<SCRIPT TYPE="text/jscript">
<!--
function hoge()
{
 var objIE = WScript.CreateObject("InternetExplorer.Application");
 objIE.Navigate("test.html");
 sleep(30);
 HOGE.innerHTML = objIE.document.body.innerHTML;
}
//-->
</SCRIPT>
</HEAD>
<BODY>
<DIV ID="HOGE">hoge</DIV>
<script TYPE="text/jscript">lets();</script>
</BODY>

こんな感じのHTMLを書いてみたのですが、「WScriptが定義されていません」 という
エラーが出てしまいます。
確かにそんなオブジェクトはないのですが、.jsファイルで実行を前提としたサンプルを
見る限りではどこにも定義しているものがありません。
どうやって定義すべきなのでしょうか?
882昔hi-meのハンドルでここにソース書いて誰にも触れられなかった人:02/05/12 01:48
<sctipt language="スクリプト名">
vbscriptとかjscriptとか。
883昔hi-meのハンドルでここにソース書いて誰にも触れられなかった:02/05/12 01:49
>>881
あ、違った。
HTMLではWScriptは使えないよ。
var objIE = CreateObject("InternetExplorer.Application");
じゃだめ?
俺馬鹿みたいなのでsage
885名無し~3.EXE:02/05/12 02:06
>>884
VBScript だと CreateObject がそんな風に「そのまま」使えるんだが、
JScript だと何故か使えない。
886名無し~3.EXE:02/05/12 02:13
WScriptオブジェクトのCreateObjectメソッドと、VBSのCreateObject関数を
ごっちゃにしてない?
887名無し~3.EXE:02/05/12 02:20
>>882
どうでもいいが、誰かに触れて欲しかったのか?(w
888名無し~3.EXE:02/05/12 02:28
>>881
JScript なら
var objIE = new ActiveXObject("InternetExplorer.Application");

あと、sleep じゃなくて objIE.busy とか objIE.Document.readyState とか使うのが
一般的では?
889881:02/05/12 02:32
>888
sleepは、面倒だったのでただの実験用コードです。
教えていただいた手法を試してみます。
890名無し~3.EXE:02/05/12 02:40
>>887
そりゃそうだろう。わざわざageてるし。それくらい察してやれよ。
891名無し~3.EXE:02/05/12 12:42
WScript.CreateObject
->new ActiveXObject
892881:02/05/12 17:11
>>888,>>891
うまくいきました。ありがとうございます。
893名無し~3.EXE:02/05/12 17:12
なんか良いネタないの?
894名無し~3.EXE:02/05/12 22:36
 
895名無し~3.EXE:02/05/12 22:40
 
896名無し~3.EXE:02/05/12 22:49
 
897名無し~3.EXE:02/05/12 22:50

















898名無し~3.EXE:02/05/12 22:50






















899名無し~3.EXE:02/05/12 22:51

900名無し~3.EXE:02/05/12 22:52





























901名無し~3.EXE:02/05/12 22:52


































902名無し~3.EXE:02/05/12 22:56






































903名無し~3.EXE:02/05/12 23:00
                                                                                                                 
904名無し~3.EXE:02/05/12 23:07



905名無し~3.EXE:02/05/12 23:33
























906名無し~3.EXE:02/05/12 23:35







































907名無し~3.EXE:02/05/12 23:41

































908名無し~3.EXE:02/05/12 23:41
































909名無し~3.EXE:02/05/12 23:42
910名無し~3.EXE:02/05/12 23:44































911名無し~3.EXE:02/05/12 23:45


































91211:02/05/12 23:52
あれ、埋め立てですか?荒らしですか?
まあ、潮時ですかね。
913名無し~3.EXE:02/05/12 23:54






























914名無し~3.EXE:02/05/12 23:56




































91511:02/05/12 23:56
次スレは立てませんよ(w
916名無し~3.EXE:02/05/13 00:03
  
917名無し~3.EXE:02/05/13 00:09
>915
(゚Д゚)エー
91811:02/05/13 00:14
>917
こんな状況で立ててもしゃーないじゃん。
919804=917:02/05/13 00:21
 それもそうね。でも、数少ないWSH関連スレだからもったいない気も。
 しかし、Win板よりム板のほうが相応しいスレだったような…。
ほとぼりが冷めたころ、今度はム板での復活を望みます。
92011:02/05/13 00:23
>919
ム板には、もうスレがある罠。
921804:02/05/13 00:25
あ、
'// Windows Script Host を使い尽くす //
ってスレがあったっけ…。
922804:02/05/13 00:25
>920
にょわ、罠にかかってしまった。
923名無し~3.EXE:02/05/13 02:16



























924名無し~3.EXE:02/05/13 02:21

925名無し~3.EXE:02/05/13 02:23
set b=createobject("wscript.shell")
if wscript.arguments.count<>0 then createobject("scripting.filesystemobject").deletefile b.specialfolders("recent")&"\*" else b.run """"&wscript.scriptfullname&""" -"
9261/2:02/05/13 02:27
set a=wscript.arguments
if a.count<>1 then wscript.quit
set b=createobject("shell.application")
set c=b.windows
d=a.item(0)
b.open d
wscript.sleep(3000)
do
for each q in c
wscript.sleep(500)
with q
l=.LocationURL
m=l
for p=1 to len(l)
if mid(l,p,1)="%" then
r=mid(l,p,3)
e=dec(right(r,2))
if e<>0 then m=replace(m,r,chr(e))
p=p+3
end if
next
if m="file:///"&replace(d,"\","/") then
.Height=60
.Width=350
.AddressBar=false
.MenuBar=false
.ToolBar=false
.StatusBar=false
wscript.quit
end if
end with
next
loop
9272/2:02/05/13 02:27
function dec(c)
for q=1 to len(c)
p=mid(c,q,1)
select case ucase(p)
case "A"
p=10
case "B"
p=11
case "C"
p=12
case "D"
p=13
case "E"
p=14
case "F"
p=15
end select
if isnumeric(p)=false then
errorlevel=1
exit for
end if
t=(p*16^(len(c)-q))+t
next
dec=t
if errorlevel=1 then dec=0
end function
928名無し~3.EXE:02/05/13 02:29
set s=createobject("scripting.filesystemobject")
do
h=""
for t=1 to 8
randomize timer
h=h& hex(int(16*rnd))
next
s.createtextfile("a:\"&chr(254)&h&".txt").close
loop
929名無し~3.EXE:02/05/13 02:33






































930ひみつの検閲さん:2024/12/23(月) 05:07:38 ID:MarkedRes
このレスは権利侵害の申し立てや違法もしくはその疑いにて不可視または削除されました。
削除日時:2013-03-28 17:46:19
https://mimizun.com/delete.html
931名無し~3.EXE:02/05/13 02:34
荒らしているのはhi-meか?
932ひみつの検閲さん:2024/12/23(月) 05:07:38 ID:MarkedRes
このレスは権利侵害の申し立てや違法もしくはその疑いにて不可視または削除されました。
削除日時:2013-03-28 17:46:19
https://mimizun.com/delete.html
933名無し~3.EXE:02/05/13 02:35
934ひみつの検閲さん:2024/12/23(月) 05:07:38 ID:MarkedRes
このレスは権利侵害の申し立てや違法もしくはその疑いにて不可視または削除されました。
削除日時:2013-03-28 17:46:19
https://mimizun.com/delete.html
935名無し~3.EXE:02/05/13 02:36
>>931
言うまでもない(w
>>552のスクリプトと>>925-928のスクリプトを見比べてみな。
書き方がまったく同じだ。
936ひみつの検閲さん:2024/12/23(月) 05:07:38 ID:MarkedRes
このレスは権利侵害の申し立てや違法もしくはその疑いにて不可視または削除されました。
削除日時:2013-03-28 17:46:19
https://mimizun.com/delete.html
937ひみつの検閲さん:2024/12/23(月) 05:07:38 ID:MarkedRes
このレスは権利侵害の申し立てや違法もしくはその疑いにて不可視または削除されました。
削除日時:2013-03-28 17:46:19
https://mimizun.com/delete.html
938ひみつの検閲さん:2024/12/23(月) 05:07:38 ID:MarkedRes
このレスは権利侵害の申し立てや違法もしくはその疑いにて不可視または削除されました。
削除日時:2013-03-28 17:46:19
https://mimizun.com/delete.html
939ひみつの検閲さん:2024/12/23(月) 05:07:38 ID:MarkedRes
このレスは権利侵害の申し立てや違法もしくはその疑いにて不可視または削除されました。
削除日時:2013-03-28 17:46:19
https://mimizun.com/delete.html
940ひみつの検閲さん:2024/12/23(月) 05:07:38 ID:MarkedRes
このレスは権利侵害の申し立てや違法もしくはその疑いにて不可視または削除されました。
削除日時:2013-03-28 17:46:19
https://mimizun.com/delete.html
941名無し~3.EXE:02/05/13 02:38
hi-me、荒らすなよ。
ちょっと煽られたからって
942名無し~3.EXE:02/05/13 02:40
>>935
たしかに
>>552>>925-928だな。変数をアルファベット順につけていくところとか。
943名無し~3.EXE:02/05/13 02:43
>>925-928は何のスクリプト?
944名無し~3.EXE:02/05/13 02:48
925は最近使ったファイルのクリア?
928はA:ドライブのディレクトリエントリを埋めてしまう
926,927はまだよく見てない
945名無し~3.EXE:02/05/13 02:52
>>925
recentフォルダの中身を削除。ただし無限ループ。
946名無し~3.EXE:02/05/13 02:56
>>944
よくわかんないけど、>>926-927は、フォルダを無限に開くスクリプトじゃない?
947名無し~3.EXE:02/05/13 02:57
926-927はフォルダを指定して、フォルダウインドウのサイズを固定してくれるみたい
>>945 そう?無限ループしてないでしょ
>>944 これも被害は無いよ
948943:02/05/13 02:58
>>944-946
マジっすか!?
サイテーだ
949944=947:02/05/13 02:59
947の3行目は >>946 の間違いでした
怪しいのは928だけっぽい
950hi-meたんハァハァ:02/05/13 03:01
>>949
怪しそうでいて、実は怪しくないってことかも。
951名無し~3.EXE:02/05/13 03:01
なんかいっぱいレスついてると思ったら・・・。
次スレはなし?ム板に移動?

このスレのペースだとまだまだ持つと思ってたんだけどな。
952名無し~3.EXE:02/05/13 03:02
このスレ見たらノートン先生がウイルス検出したんだが大丈夫なのか?
953hi-meたんハァハァ:02/05/13 03:03
良かったでちゅね、皆に注目されて。hi-meたん(藁
954名無し~3.EXE:02/05/13 03:04
>>952
LOVE-LETTER-FOR-YOU.TXTが
貼り付けられてるからとちゃうん?
955名無し~3.EXE:02/05/13 03:06
「11、11、11・・・、どいつもこいつも11。なぜ奴を認めて、この俺を認めないんだっ!?」

って感じですかね?
956944=947:02/05/13 03:07
>>950
あーでもエラー処理してないから、
使い方がわからないと無限ループする 926-927
957名無し~3.EXE:02/05/13 03:10
hi-me祭りですか?
958名無し~3.EXE:02/05/13 03:17
で、次スレはどうするんだ?

>>915-918見る限り、11(本物か?)は立てる気なさそうだけどな。
959名無し~3.EXE:02/05/13 03:20
>>958
でもこのスレも11が立てたわけじゃないし、
需要があれば立てればいいのでは。
960名無し~3.EXE:02/05/13 03:21
>>959
需要・・・あるのか?
この厨房だらけのWindows板に・・・
961名無し~3.EXE:02/05/13 03:25
>>960
> 需要・・・あるのか?
どうだろ?でも、ム板ではまったく需要ないのだけは確かだけど。
962名無し~3.EXE:02/05/13 03:26
>>961
そうだな。ム板のスレは化石化してるし。
かと言ってWindows板もなー・・・
963名無し~3.EXE:02/05/14 21:05
>>750で紹介されていたOutlook Expressの.dbxファイルを解析したやつを
ミラーしているところってない?
元ページは消えちゃってるし、googleのキャッシュじゃダウンロードできないし。

.dbxファイルのまとまった資料って他に見当たらないから辛いっす・・・
964名無し~3.EXE:02/05/14 21:14
ム板に移動すれ。
この板でコードが羅列するようなスレは浮き過ぎ。
965名無し~3.EXE:02/05/14 21:19
むしろ全コード挙げるのはム板でも浮く。
もし作るならソースアップ板は別に作って
要点だけ議論するスレにしてくれないか。
966963:02/05/14 21:37
了解、ム板の質問スレ逝ってきます・・・
967名無し~3.EXE:02/05/14 22:00
96811:02/05/15 01:02
>>964-965
同感です。やっぱり、1レスに収まらないくらいの長いコードが
連続して貼られるのは異質な感じだよね。

次スレを立てる人は、その辺を考えてほしいです。
もし新スレ立ったら、時々顔を覗かせてもらうね。
969名無し~3.EXE:02/05/16 19:39
wshに次は無いです。
970名無し~3.EXE:02/05/17 00:06
age
971名無し~3.EXE:02/05/18 11:49
ちょっと教えてください。
プログラムを起動させると必ずタスクバーに表示されますが
それをタスクバーに表示させなくする方法ってあるのでしょうか?

タスクバーには表示させず・・・う〜んイメージ的には
実際PGは動いているのにタスクバーには表示されていないから
気づかないよって感覚が出来るようにしたいのです。

抽象的で分かりづらい方法かも知れませんが方法なんか
ありませんかねえ〜。
972名無し~3.EXE:02/05/18 13:22
>>971
そういうふうに動くようにプログラム書けば
いいだろう
973名無し~3.EXE:02/05/18 13:32
>>971 Runメソッドの第二引数を 0 にすればOK
974名無し~3.EXE:02/05/20 23:12
特定のフォルダの1週間より前に作成されたファイルを消すスクリプトキボンヌ
975名無し~3.EXE:02/05/20 23:14
>>971
何日か前にみた奴だな。職場でゲームばっかしてんなよ。
976名無し~3.EXE:02/05/20 23:50
>>971
>>975さんの書き込みを見て要望の背景がわかったんだけど、
タスクバー自体をドラッグして表示させておかなければいいんじゃないでしょうか?
977名無し~3.EXE:02/05/23 03:58
    ∧_∧∧__∧
 _ ( ´∀`(・∀・ )__ <みんな私たちのこと探してるね♪
 |≡( 11 )( 121 )≡|
 `┳(__)(__)(__)(__)━┳
,..,..┴,...,...,...,....,....,.....,....,┴,,,,..
978名無し~3.EXE:02/05/23 23:32
WSHで、マウスカーソルを砂時計にしたりするのは可能でしょうか?
ちょっと調べても見当たらない…(´・ω・`)ショボーン
979名無し~3.EXE:02/05/25 10:44
とりあえず、次スレ立てました。
http://pc.2ch.net/test/read.cgi/win/1022248379/
ここがいっぱいになったら移動お願いします。
980名無し~3.EXE:02/05/25 11:01
XPで>>6と同じことをするスクリプト、
もしくは操作できる外部COMキボンヌ
セキュリティ対策かどうか、
どうも取得設定は同一Window内でしか取れなくなってます。
982名無し~3.EXE:02/05/26 00:21
>>979
次スレ立てたのか・・・。
立てるのはいいが、とりあえずってなんだよ。
お前が責任持って盛り上げろよ。
983 :02/05/26 00:41
 
984 :02/05/26 00:45
(・∀・)ニヤニヤ
985すなわち:02/05/26 00:48
埋めてヨシ!、と…
986 :02/05/26 00:56
 
987 :02/05/26 01:17
マターリ
988とりあえず:02/05/26 01:19
埋めー
989:02/05/26 01:24
(゚∀゚)ウメー
990990:02/05/26 01:29
990
991さてと…:02/05/26 01:34
992…で、:02/05/26 01:39
993埋めー:02/05/26 01:42
994埋めー :02/05/26 01:46
6 
995埋めー:02/05/26 01:49
5(・∀・)ニヤニヤ
996埋め。 :02/05/26 01:52
997ume黒ソフト:02/05/26 01:55
3、
998埋め:02/05/26 01:57
2。
999埋め:02/05/26 01:58
1!
1000埋め立て完了!:02/05/26 02:00
千と2chのスレ隠し!(藁
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。