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

このエントリーをはてなブックマークに追加
1名無し~3.EXE
使いこなせばかなり便利だと思われるWindowsScriptingHost
お前らのwshを教えてください。

関連リンク
http://www.microsoft.com/japan/developer/scripting/windowshost/default.htm

ttp://www.roy.hi-ho.ne.jp/mutaguchi/wsh/
ttp://member.nifty.ne.jp/aya/wsh/
2名無し~3.EXE:01/12/24 15:34
クリップボードの内容をtxt保存するスクリプトがあったら便利
3名無し~3.EXE:01/12/24 15:36
激しく既出
4名無し~3.EXE:01/12/24 15:36
プログラム版逝った方がいいんとちゃう?
5名無し~3.EXE:01/12/24 15:59
>>2
まあこれでも見れ
http://pc.2ch.net/test/read.cgi/win/1006803665/

>>4
やめてくれ
6名無し~3.EXE:01/12/24 18:51
>>2
これではダメなりか?

Const ForReading = 1, ForWriting = 2, ForAppending = 8
Dim fs
Dim f
Dim file_name

Set Ie = WScript.CreateObject("InternetExplorer.Application")
Ie.Navigate "about:blank"
Set oClip=Ie.Document.parentWindow.clipboardData
sData=oClip.getData("text")
If IsNull(sData) Then sData=""
file_name = InputBox("ファイル名を入力してください")
Set fs = CreateObject("Scripting.FileSystemObject")
set f = fs.CreateTextFile(file_name+".txt", True)

f.Write sData
f.Close

>>5
此れくらいのことでDLソフト使うのはナンセンス
7名無し~3.EXE:01/12/24 19:04
既出だろうけど、
FTP不可の無料HPスペースに自動アップロードするWSH↓
http://isweb36.infoseek.co.jp/computer/autoup/

処理中はPC操作できないってのが笑えるけど(笑)
8名無し~3.EXE:01/12/24 19:13
>>7
便利なのか、そうじゃないのか良く分からん・・・・
9名無し~3.EXE:01/12/24 19:16
クリップボードの一行目を自動でファイル名にするように
出来たら便利かも。
10名無し~3.EXE:01/12/24 19:18
>>9
お前がやれ
11名無し~3.EXE:01/12/24 19:38
>>9
日付もファイル名に入れるようにした。
あと、長すぎるファイル名もいやなんで、適当に詰める処理を
入れた。

Set Fs = WScript.CreateObject("Scripting.FileSystemObject")
Set Ie = WScript.CreateObject("InternetExplorer.Application")
Ie.Navigate "about:blank"
Do While Ie.Busy
Wscript.Sleep 10
Loop
Set oClip=Ie.Document.parentWindow.clipboardData
sData=oClip.getData("text")
If IsNull(sData) Or sData="" Then WScript.Quit

sTitle = Left(sData,15)
If InStr(sTitle,vbCrLf)<>0 Then
sTitle = Left(sTitle,InStr(sTitle,vbCrLf))
End If

sFileName = Now & "_" & sTitle
sFileName=FixTitle(sFileName)
sFileName=sFileName & ".txt"

If Not Fs.FileExists(sFileName) Then
Set ts = Fs.CreateTextFile (sFileName)
ts.Write sData
ts.Close
End If

Function FixTitle(title)
tmpstr=Split("\ / : , . ; * ? "" < > |"," ")
FixTitle=title
For Each I In tmpstr
Fixtitle=Replace(FixTitle,I,"-")
Next
End Function

さあて、このWSHスレはいつまで持つかな、っと。
12名無し~3.EXE:01/12/24 19:43
>>11
すげえ、完璧。
つーかwshって使ってる人あんまし居ないのかな
13名無し~3.EXE:01/12/24 19:46
こっちもよろしく
最強のWindows自動化ツール
http://pc.2ch.net/test/read.cgi/win/1007452736/
14名無し~3.EXE:01/12/24 19:55
>>12
居ない。
遅いし面倒だし。
意外だと思うけど>>11みたいなのならC++(with MFC)とかのほうが楽だし速い。
普通にスクリプトとしての使い勝手もperlとかに比べるとアレだし。
1511:01/12/24 19:55
>>12
>>1でご紹介いただいてるサイトの管理人をやってますが、
感触として、この2年間で、ちっとは知名度はあがったような。
でも、まだまだI Love Youスクリプトワームによるところが大きい
気がします。

.NETの波が押し寄せ、WSHの土台であるCOMが消えつつある現状では、
WSHもメジャーになる前に消えそうな予感もします。
1611:01/12/24 19:57
>>14
WSHが他のツールに勝てる点は、唯一、

・OS標準機能であること

これに尽きるんじゃないかというのが私の結論。
17名無し~3.EXE:01/12/24 19:58
1==11==15
18名無し~3.EXE:01/12/24 20:00
>>9のにファイル名自分で決められるよう
改造してみました。

Set Fs = WScript.CreateObject("Scripting.FileSystemObject")
Set Ie = WScript.CreateObject("InternetExplorer.Application")
Ie.Navigate "about:blank"
Do While Ie.Busy
Wscript.Sleep 10
Loop
Set oClip=Ie.Document.parentWindow.clipboardData
sData=oClip.getData("text")
If IsNull(sData) Or sData="" Then WScript.Quit

sTitle = Left(sData,25)
If InStr(sTitle,vbCrLf)<>0 Then
sTitle = Left(sTitle,InStr(sTitle,vbCrLf))
End If

sFileName = InputBox("ファイル名を入力してください",,sTitle)
sFileName=FixTitle(sFileName)
sFileName=sFileName & ".txt"

If Not Fs.FileExists(sFileName) Then
Set ts = Fs.CreateTextFile (sFileName)
ts.Write sData
ts.Close
End If

Function FixTitle(title)
tmpstr=Split("\ / : , . ; * ? "" < > |"," ")
FixTitle=title
For Each I In tmpstr
Fixtitle=Replace(FixTitle,I,"-")
Next
End Function


ダイアログに2〜3行分のテキスト表示できるようにならんのかな…
191:01/12/24 20:01
>>17
ごめん、俺今日始めてwshなるものを知りました…
2011:01/12/24 20:02
>>17
ちなみに、私は1さんじゃないっす。

>>19
紹介ありがとー。
211:01/12/24 20:08
>>14
俺もなんとなくそう思ってたんだけど
Perlってインストールするの面倒だし
ちょっとした作業の自動化ならwshでもいいんじゃないかと思ったワケです
MacでApplescriptつかってて
Windowsでも無いかなと見てたらwshなるものがあると知って。
異OS間の互換が無いのは寂しいけど。

>>20
いえいえ、こちらこそ勝手にリンクスマンす
22名無し~3.EXE:01/12/24 20:21
環境変数tmpのディレクトリのファイルを一掃するスクリプトキボンヌ
2311:01/12/24 20:22
ネタでも。
Iriaさんに自動でダウンロードしてもらうスクリプト。
指定URLからリンクされてる画像ファイルとアーカイブファイルの
URLをIriaに送ります。

Set Ie = WScript.CreateObject("InternetExplorer.Application")
Set Iria = WScript.CreateObject("Iria.IriaApi")
sURL="適当なURL"

Ie.Navigate sURL
Do While IE.Busy Or IE.ReadyState<>4
WScript.Sleep 100
Loop
Set document=IE.document
Set window=document.ParentWindow
sURLs=sURL & vbCrLf
For Each oSubLink In document.links
sURL=oSubLink.href
sExt=Right(sURL,3)
If sExt="jpg" Or sExt="png" Or sExt="zip" Or sExt="lzh" Then
sURLs=sURLs & sURL & vbCrLf
End If
Next
Iria.AddUrl sUrls,0
2411:01/12/24 20:30
>>22
echo y|del %temp%\*.* >nul
25名無し~3.EXE:01/12/24 20:39
>>23
(゚д゚)ウマー
26名無し~3.EXE:01/12/24 20:42
指定ディレクトリ以下のmp3プレイリストファイルを作れるんなら認めるよ・・・
27名無し~3.EXE:01/12/24 20:49
じ、時間を表示するwsh

MsgBox Now
28名無し~3.EXE:01/12/24 20:52
ひ、日付けを表示するwsh

MsgBox Left(Now,10)
2911:01/12/24 20:57
>>26
Set Fs = WScript.CreateObject("Scripting.FileSystemObject")
sFolder="フォルダ名"
sListFile=sFolder & "\" & "list.m3u"
Set ts=Fs.CreateTextFile(sListFile)
For Each oFile In Fs.GetFolder(sFolder).Files
sExt=LCase(Fs.GetExtensionName(oFile.Name))
If sExt="mp3" Or sExt="wav" Or sExt="wma" Then
ts.WriteLine oFile.Path
End If
Next
ts.Close
30名無し~3.EXE:01/12/24 21:44
>>29
サブディレクトリも含められれば・・・
そんなん出来るのかな?

とりあえずマイドキュメント下のマイミュージックのリストを自動で作って
自動再生させようとしたけどなんかエラーが出るよ

Dim WSHShell,WSHSfolder,strList,strFolder
Set WSHShell = WScript.CreateObject("WScript.Shell")
Set Fs = WScript.CreateObject("Scripting.FileSystemObject")
Set WSHSfolder = WSHShell.SpecialFolders
sFolder=WSHSfolder("MyDocuments") & "\My Music"
sListFile=sFolder & "\" & "list.m3u"
Set ts=Fs.CreateTextFile(sListFile)
For Each oFile In Fs.GetFolder(sFolder).Files
sExt=LCase(Fs.GetExtensionName(oFile.Name))
If sExt="mp3" Or sExt="wav" Or sExt="wma" Then
ts.WriteLine oFile.Path
End If
Next
ts.Close

WSHShell.Run sListFile
3111:01/12/24 21:50
>>30
Dim ts
Set Fs = WScript.CreateObject("Scripting.FileSystemObject")
sFolder="フォルダ名"
sListFile="list.m3u"
Set ts=Fs.CreateTextFile(sListFile)
Call MakeList(Fs.GetFolder(sFolder))

ts.Close
MsgBox "終了"

Sub MakeList(Folder)
For Each oFile In Folder.Files
sExt=LCase(Fs.GetExtensionName(oFile.Name))
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
3211:01/12/24 21:55
>>30
何のエラー?
33名無し~3.EXE:01/12/24 21:58
>>32
最後の行で
エラー:指定されたファイルがありません
コード:80070002
ソース:(null)
34名無し~3.EXE:01/12/24 21:58
>>31
こりゃいける
3511:01/12/24 22:00
>>33
WSHShell.Run Chr(34) & sListFile & Chr(34)
でどう?
36名無し~3.EXE:01/12/24 22:05
>>35
いった!thx
なんかかなり便利っすよ。やヴぁい。

ランダムリストとか作れるんだろうか・・・?
さすがに無理かな?
37名無し~3.EXE:01/12/24 22:09
ちょっと工夫すれば色々できそうだね。
俺もがんばってみようかな
3811:01/12/24 22:13
>>36
Dim ts,sList
Set Fs = WScript.CreateObject("Scripting.FileSystemObject")
Randomize
sFolder="フォルダ名"
sListFile="list.m3u"
Call MakeList(Fs.GetFolder(sFolder))
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(sListFile)
ts.Write sList
ts.Close
MsgBox "終了"

Sub MakeList(Folder)
For Each oFile In Folder.Files
sExt=LCase(Fs.GetExtensionName(oFile.Name))
If sExt="mp3" Or sExt="wav" Or sExt="wma" Then
sList = sList & oFile.Path & vbCrLf
End If
Next
For Each oSubFolder In Folder.SubFolders
Call MakeList(oSubFolder)
Next
End Sub
39名無し~3.EXE:01/12/24 22:50
午前7〜8時の起動時のみ特定のスクリプト実行するとかできるの?
>>38を目覚ましで使えたら(゚д゚)ウマー
タスクスケジューラ使いたくないんで。
40名無し~3.EXE:01/12/24 22:55
( ゚ д゚)ポカーン
41 :01/12/24 22:56
4211:01/12/24 23:01
>>39
Set WSHShell = WScript.CreateObject("WScript.Shell")
If 7<= Hour(Now) And Hour(Now) <=8 Then
WshShell.Run "script.vbs"
End If

これをスタートアップに入れとくとか?
43名無し~3.EXE:01/12/24 23:20
>>42
そうそう!
それっス!!
44名無し~3.EXE:01/12/25 01:18
vbsってお手軽に使うにはタイプ数多すぎるんだよな
4511:01/12/25 01:57
>>44

まあ大抵はコピペでいけるし、一回作ってしまえば
あとは面倒なことは何もないし。

あればちょっと便利なスクリプトとして、こんなんどうですか。
私はSendToに入れてます。

'中身のないフォルダの削除
'使い方 wscript.exe delfol.vbs フォルダ1 [フォルダ2...]
'フォルダを指定すると、そのサブフォルダのうち、空のサブフォルダを削除します。

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
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 & "個のフォルダは空ではないです。"
4611:01/12/25 02:04
あと、これもSendToに入れてる。
ファイル整理するとき、何となく便利かも。

'吸出しの巻物
'使用法: wscript.exe suidashi.vbs フォルダ名1 [フォルダ名2] ...
'フォルダを指定すると、そのフォルダ内にあるファイルとフォルダを上位フォルダに移動します。
Dim iLeft,iMove,bDel
Set Fs = WScript.CreateObject("Scripting.FileSystemObject")
iLeft=0 : iMove=0 : bDel=True
For Each source In WScript.Arguments
If Fs.FolderExists(source) Then
target=Fs.BuildPath(Fs.GetParentFolderName(source),"\")
If Fs.FolderExists(target) Then
Set oTarget=Fs.GetFolder(source)
For Each oFile In oTarget.Files
If Fs.FileExists(Fs.BuildPath(target,oFile.Name)) Then
'すでに存在。移動中止。
iLeft=iLeft+1
Else
oFile.Move target
iMove=iMove+1
End If
Next
For Each oFolder In oTarget.SubFolders
If Fs.FolderExists(Fs.BuildPath(target,oFolder.Name)) Then
'すでに存在。移動中止。
iLeft=iLeft+1
Else
oFolder.Move target
iMove=iMove+1
End If
Next
If bDel=True Then
If oTarget.Files.Count=0 And oTarget.SubFolders.Count=0 Then oTarget.Delete
End If
End If
End If
Next

MsgBox iMove & "個のアイテムを吸い出しました。" & iLeft & "個のアイテムは移動しませんでした。"
47名無し~3.EXE:01/12/25 02:13
wscript.exe suidashi.vbs ってやらなくても
suidashi.vbs実行するだけで使えるんだけどもこの使い方じゃダメなの?
4811:01/12/25 02:25
>>47
OK。
というか、DOSプロンプトで使うときの構文でした。
ちなみに、WinNT/2000のコマンドプロンプトなら、
suidashi.vbs フォルダ名
だけでもいけます。

エクスプローラなら、フォルダをsuidashi.vbsにD&D、
もしくはSendToにショートカットを入れて、送るメニュー
からでも実行可能です。

フォルダの右クリックメニューに組み込むなら、

REGEDIT4

[HKEY_CLASSES_ROOT\Directory\shell\suidashi]
@="吸い出し(&Q)"

[HKEY_CLASSES_ROOT\Directory\shell\suidashi\command]
@="wscript.exe C:\\suidashi.vbs \"%1\""

こいつをsuidasi.regとでもして保存して、レジストリに結合させて
やればいいです。
49名無し~3.EXE:01/12/25 02:38
>>18
>>31
>>38
>>45
>>46
とても参考になったよ
でもVisualBasicわからないと作れそうもないや・・
プログラムできる人はうらやましいなぁ

あと>>38ってフォルダのD&Dとか、vbsファイル置いたカレントフォルダを自動で
取得できるようにできます?
5011:01/12/25 02:45
>>49
Dim ts,sList
Set Fs = WScript.CreateObject("Scripting.FileSystemObject")
Randomize

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

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(sListFile)
ts.Write sList
ts.Close
MsgBox "終了"

続く。
5111:01/12/25 02:47
>>50は、>>38の、Sub MakeList(Folder) 以下を継ぎ足せば完成。

それにしても長くなってきたなあ。
52名無し~3.EXE:01/12/25 03:21
>>50
すごいです>11氏
リクエストに答えてくれてありがとう。
早速送るに入れて使おうと思う。
5311:01/12/25 03:23
それでは、明日もこのスレが生き残っていることを祈りつつ…
54名無し~3.EXE:01/12/25 23:18
便利なスクリプトがあたらぜひ紹介を
55名無し~3.EXE:01/12/25 23:34
漁スレの余寒
56 :01/12/26 00:19
WindowsMediaPlayerで、音楽のストリーミング配信を聞いてるんですが、
たまに切断されてしまい、エラーウィンドウがでてしまいます。

自動的に再接続させるようにWSHですることってできないんでしょうか?

*当方、ADSL。ダイヤルアップでの再接続ってことではないので・・。
57名無し~3.EXE:01/12/26 00:26
CraftLaunchスレに、Exciteで英和/和英翻訳してくれるスクリプトがあったよ
CAB圧縮にISH化と手の混んだことしてたけど便利。
5811:01/12/26 04:04
>>57
http://pc.2ch.net/test/read.cgi/win/981464983/ ね。

うちとこの掲示板に、外部ツールを使わずExcite翻訳を
呼び出すスクリプトが投稿されてますので、こちらもどうぞ。

Option Explicit

Dim strTranslate, strURL, objIE, strRet

strTranslate = "Windows"
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 )
59名無し~3.EXE:01/12/26 04:12
>>58
あいかわらずすばらすぃ〜>11氏

これをうまくIEの右クリックコンテキストに追加できないだろうか・・・
文字列選択で送る・・みたいに
6011:01/12/26 04:28
>>59
すんません、これは私が作ったやつじゃないのです。

で、こんなん作ってみました。

まず、↓をtranslate.htmとして保存
<script language="vbscript">
<!--
Set oTextRange = external.menuArguments.document.selection.createRange
strTranslate = oTextRange.text
a=Asc(Left(strTranslate,1))
If 0<= a And a<=255 Then
mode="ENJA"
Else
mode="JAEN"
End If
strURL = "http://www.excite.co.jp/world/text/?wb_lp=" & mode & "&before=" & strTranslate
Set objIE = CreateObject("InternetExplorer.Application")
With objIE
Call .Navigate2( strURL )
.Visible = False
Do While .Busy Or .ReadyState<>4

Loop
strRet = strTranslate & "を翻訳すると…" & vbCrLf & .document.World.after.Value
Call .Quit()
End With
Set objIE = Nothing
window.alert strRet
-->
</script>
6111:01/12/26 04:30
↓translate_install.vbsとして、translate.htmと同じフォルダに保存

Set WshShell = WScript.CreateObject("WScript.Shell")
Set Fs = WScript.CreateObject("Scripting.FileSystemObject")

iMsg = MsgBox("IEのコンテキストメニューに「翻訳」を追加します。" & vbCrLf & "よろしいですか?",vbYesNo)
If iMsg=vbNo Then WScript.Quit

WshShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\翻訳\",Fs.BuildPath(Fs.GetParentFolderName(WScript.ScriptFullName),"translate.htm"),"REG_SZ"
WshShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\翻訳\contexts",&H10,"REG_DWORD"

MsgBox "インストール完了"


↓translate_uninstall.vbsとして、translate.htmと同じフォルダに保存

Set WshShell = WScript.CreateObject("WScript.Shell")
Set Fs = WScript.CreateObject("Scripting.FileSystemObject")

iMsg = MsgBox("IEのコンテキストメニュー「翻訳」を削除します。" & vbCrLf & "よろしいですか?",vbYesNo)
If iMsg=vbNo Then WScript.Quit

WshShell.RegDelete "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\翻訳\"

MsgBox "アンインストール完了"
6211:01/12/26 04:34
translate_install.vbsを実行すると、IEの右クリックメニューに「翻訳」が追加されます。
(IEは一度再起動かけてね)
単語を選択して右クリックしてみてください。
一応、英単語を選択したら和訳、日本語を選択したら英訳します。
かちゅ〜しゃとか、IEコンポなアプリからも呼び出せるので便利っすよ。
いらなくなったら、translate_uninstall.vbsで消えます。

まだ、いろいろ手を加えないと使い物にならないですが。
(とくに翻訳中はフリーズしたみたいになるのが困りモノ。
解決策はあるにはあるが、また今度にします…)
63名無し~3.EXE:01/12/26 04:41
11 氏はちょっと前の WSH スレで最後の方にいろいろ有益な情報を
書いてくれた人?
Sendkeys ネタとか最新ヴァージョン関連とかで。
もしそうなら、あのときスレ立てた者ですが、
レスするタイミング逃したまま沈んじゃった。
どうも、すまんでした。
このスレ、続くといいね。
64名無し~3.EXE:01/12/26 04:42
>>60
>>61
おお。これはっいいっす
ちょっとした翻訳にはすごく便利ですね
ちょっと感動
65名無し~3.EXE:01/12/26 04:46
もしかしてIEのコンテキスト拡張ってこういう要領でどんどん追加できるんでしょうか?
6611:01/12/26 04:52
>>63
はい。
http://yasai.2ch.net/win/kako/1002/10026/1002654665.html
の39, 48, 51ですね。(かちゅ〜しゃは、過去スレ探すのも楽でいいね)
WSHスレには大抵書き込んでます。

>>65
です。
姉妹品として、こんなん公開中です。
http://www.roy.hi-ho.ne.jp/mutaguchi/wsh/src/mklink.lzh
6711:01/12/26 04:59
>>65
http://www.microsoft.com/japan/support/kb/articles/J041/2/49.asp
を見ると、コンテキストメニュー追加の方法がよくわかります。
Iriaの「Iriaでダウンロード」とかもこれですね。

IEコンテキストメニュー拡張系ツールとしては、Kommixが有名かな。
ttp://hp.vector.co.jp/authors/VA013453/
68名無し~3.EXE:01/12/26 09:31
wsh(vbs)ってソース分割して再利用とかってできないの?
69名無し~3.EXE:01/12/26 10:02
70名無し~3.EXE:01/12/26 10:25
71名無し~3.EXE:01/12/26 10:35
かちゅで翻訳機能はつけられないのですか?
72名無し~3.EXE:01/12/27 03:15
あげ
73名無し~3.EXE:01/12/27 04:07
>>71
11氏が作ってくれた
>>60
>>61
>>62
をやれば文字列を選択した後右クリックで気軽に翻訳ができますよ
ちょっとした翻訳には結構便利ですよ
74名無し~3.EXE:01/12/27 04:17
>>11
>>60
>>61
>>62
>>73
ありがとうございます。
75 :01/12/27 05:12
メディアプレーヤーの履歴はスクリプト組んで
削除する様にしました。
76名無し~3.EXE:01/12/27 05:17
11王権神授説
7763:01/12/27 05:33
>>66
おお、やはり(^^
78名無し~3.EXE:01/12/27 10:18
タスクトレイの任意のアイコンをクリックするような
スクリプトって作れるのかな・・・?
79名無し~3.EXE:01/12/27 13:29
[ツール|Windows Update]みたいに
IE,Explorerのツールメニューに項目追加ってどうやるの?
80名無し~3.EXE:01/12/27 13:47
>>79
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Extensions\
8111:01/12/27 23:56
>>61 のスクリプトを、ノートンアンチウィルスがインストールされてる環境で
実行すると、「悪意のあるスクリプト」という警告が出て停止した。鬱出氏脳。
8211:01/12/28 01:57
Const URL="http://kage.monazilla.org/wsock32.dll"
Const DLLName="wsock32.dll"
Const adTypeBinary = 1
Const adSaveCreateNotExist = 1
Const adSaveCreateOverWrite = 2

Set HTTP = WScript.CreateObject("Microsoft.XMLHTTP")
Set Stream = WScript.CreateObject("Adodb.Stream")
Set Fs = WScript.CreateObject("Scripting.FileSystemObject")
Set Shell = WScript.CreateObject("Shell.Application")

Set regEx = New RegExp
regEx.IgnoreCase = True
regEx.Global = True
8311:01/12/28 01:58
For Each Process In GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery("select * from Win32_Process where Name='Katjusha.exe'")
Set oProcess = Process
sEXEPath=oProcess.ExecutablePath
Next
If IsEmpty(oProcess) Then
MsgBox "かちゅ〜しゃが起動されていません!"
WScript.Quit
End If

sRoot = Fs.GetParentFolderName(sEXEPath)
sDLLPath = Fs.BuildPath(sRoot,DLLName)
If Fs.FileExists(sDLLPath) Then
dDateLastModified=Fs.GetFIle(sDLLPath).DateLastModified
iMsg=MsgBox ("現在、ksock32.dll ver" & Fs.GetFileVersion(sDLLPath) & "(最終更新日時: " & CStr(dDateLastModified) & ")がインストールされています。" & vbCrLf & _
"最新バージョンをチェックしますか?",vbYesNo)
If iMsg=vbNo Then WScript.Quit

HTTP.Open "HEAD", URL, False
HTTP.Send
regEx.Pattern = "\nLast-Modified\: .{3}, (\d{1,}) (.{3}) (\d{4}) (\d{1,})\:(\d{1,})\:(\d{1,}) .{3}\r\n"
Set Matches = regEx.Execute(HTTP.getAllResponseHeaders)
For Each Match in Matches
Set Subs = Match.SubMatches
dServerDateLastModified=CDate(Subs(2) & "/" & GetMonthNumber(Subs(1)) & "/" & Subs(0) & " " & Subs(3) & ":" & Subs(4) & ":" & Subs(5))
Next

If DateDiff ("s",dServerDateLastModified,dDateLastModified) < 0 Then
iMsg=MsgBox ("ksock32.dllは更新されているようです。ダウンロードしてインストールしますか?",vbYesNo)
Else
iMsg=MsgBox ("ksock32.dllは更新されていないようです。それでもダウンロードしてインストールしますか?",vbYesNo)
End If
Else
iMsg=MsgBox ("ksock32.dllをダウンロードしてインストールしますか?",vbYesNo)
End If

If iMsg=vbNo Then WScript.Quit
8411:01/12/28 01:58
iMsg=MsgBox ("かちゅ〜しゃをいったん終了させます。" & vbCrLf & _
"OKをクリックすると自動的に終了しますが、手動で終了しても構いません。",vbOKCancel)

If iMsg=vbOK Then
For Each Process In GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery("select * from Win32_Process where Name='Katjusha.exe'")
Process.Terminate
Next
Else
WScript.Quit
End If

iMsg=MsgBox ("ksock32.dllのダウンロードを開始します。" & vbCrLf & _
"次にダイアログが表示されるまでは、かちゅ〜しゃを起動しないでください。",vbOkCancel)
If iMsg=vbCancel Then WScript.Quit

HTTP.Open "GET", URL, False
HTTP.Send

Stream.Type = adTypeBinary
Stream.Open
Stream.Write HTTP.responseBody
Stream.SaveToFile sDLLPath, adSaveCreateOverWrite

Shell.NameSpace(sDLLPath).ParentFolder.ParseName(Shell.NameSpace(sDLLPath).Title).ModifyDate=dServerDateLastModified

MsgBox "ksock32.dll ver" & Fs.GetFileVersion(sDLLPath) & "(" & CStr(dServerDateLastModified) & "版)のインストールが終了しました。" & vbCrLf & _
"かちゅ〜しゃを再起動します。"

GetObject("winmgmts:{impersonationLevel=impersonate}").Get("Win32_Process").Create sEXEPath,null,null,processid
8511:01/12/28 01:58
Function GetMonthNumber(MonthName)
Select Case MonthName
Case "Jan" GetMonthNumber="01"
Case "Feb" GetMonthNumber="02"
Case "Mar" GetMonthNumber="03"
Case "Apr" GetMonthNumber="04"
Case "May" GetMonthNumber="05"
Case "Jun" GetMonthNumber="06"
Case "Jul" GetMonthNumber="07"
Case "Aug" GetMonthNumber="08"
Case "Sep" GetMonthNumber="09"
Case "Oct" GetMonthNumber="10"
Case "Nov" GetMonthNumber="11"
Case "Dec" GetMonthNumber="12"
End Select
End Function
8611:01/12/28 02:04
>>82-85
ksock32.dll自動ダウンロードスクリプトです。
Win2000専用。

実行すると、サーバー上にあるksock32.dllの更新日時を調べ、
更新されていたらダウンロードしてインストールします。
実行する際は、かちゅ〜しゃを起動しといてください。
(このスクリプトは、ksock32.dllインストールのとき、かちゅ〜しゃを
終了して再起動をかけるとこまで自動的にやってくれます。)

ksock32.dllが何か、については、かちゅ〜しゃスレでも見てください。

このスクリプトのテーマは、OS標準搭載のオブジェクトをいかに多く
使うか、です。

連続投稿スマソ。
87名無し~3.EXE:01/12/28 02:12
>>86
いやはや、これは(・∀・)イイ!!ですね
タスクスケジューラと組み合わせたらかなり便利かもしれないですね>WSH
8811:01/12/28 03:06
>>78
Set WshShell = WScript.CreateObject("WScript.Shell")

WshShell.SendKeys "^{ESC}{ESC}" 'スタートメニューを表示して閉じる
WScript.Sleep 100
WshShell.SendKeys "+{TAB}" 'フォーカスをデスクトップに移動
WScript.Sleep 100
WshShell.SendKeys "+{TAB}" 'フォーカスをタスクトレイに移動
WScript.Sleep 100
WshShell.SendKeys "{RIGHT 3}" 'タスクトレイの左から4個目のアイコンをアクティブに
WScript.Sleep 100
WshShell.SendKeys "+{F10}" 'アイコン右クリック
WScript.Sleep 100
WshShell.SendKeys "I" 'アクセスキー I のメニュー項目を実行

これは、タスクトレイの左から4個目のアイコンを右クリックし、
アクセスキーが I になってるメニュー項目を実行する、という
スクリプトですが…。
Win2000専用である上に、タスクバーが標準配置である必要があり、
タスクトレイアイコンの位置は、普通、固定ではないし、
タイミングの関係でうまくいかないこともあります。
まあ、あまり実用性はないですね。
89前スレの1:01/12/28 12:49
>>81
ノートンってそうなんだよお。
おれも、たいしたことやってない WSH で警告出され、嫌な気分になった。
ユーザーが意図的に実行してるっちゅうねん。
90名無し~3.EXE:01/12/28 23:18
>>88
Winキーを押しながらTABとか出来ないですかねー??
Win+TAB TAB TAB でメニューを出さずにフォーカス移動できる。
9111:01/12/29 00:24
>>90
以前、そういうことも考えたことがあるんですが、どうもSendKeysで
Windowsキーを送ることはできないらしい…。

そのことの検証用スクリプト↓
http://groups.google.com/groups?as_umsgid=%3C8k2312%24p6n%[email protected]%3E%23&as_scoring=d
92名無し~3.EXE:01/12/29 02:56
>>91
そうなのか… なるほど。
ところでtraypseってXPで使えなくないですか?
これはどうやってタスクトレイの情報を取得してるんだろうか…?
93名無し~3.EXE:01/12/29 03:12
っていうか、あんたたち、
VBスクリプトじゃなくてJスクリプトを使いなさいよ〜
94名無し~3.EXE:01/12/29 03:29
JScript使ってる好き者はいないのか!?
95名無し~3.EXE:01/12/29 04:54
電源オプションの電源設定
「自宅または会社のデスク」などから一発で
別の設定に変更できるスクリプト希望。
96前スレの1:01/12/29 13:59
>>93-94
前スレには JScript で、しかも CScript.EXE 用のスクリプトがありましたよ。
てか、どっちでもいいんじゃない? 読みやすくて、動けば。
97名無し~3.EXE:01/12/29 23:43
VBScript きらい
98名無し~3.EXE:01/12/30 00:52
シリアルチェックを力ずくで突破するスクリプトなんかも作れるんじゃない?

起動時乱数入力を突破するコードのサンプル

Dim fileObj, n
Set fileObj = WScript.CreateObject("WScript.Shell")
fileObj.Run "c:\**********exe"
WScript.Sleep 7000 '起動するまでの待ち時間
For n=100 To 999 Step 1
fileObj.SendKeys n
fileObj.SendKeys "{ENTER}"
WScript.Sleep 1
fileObj.SendKeys "{ENTER}"
fileObj.SendKeys "{BS}"
fileObj.SendKeys "{BS}"
fileObj.SendKeys "{BS}"
Next
99名無し~3.EXE:01/12/30 03:22
力ずく過ぎ。

wsh使うのは、wshじゃないとやりづらい処理だけだ。
じゃなきゃ、VCとか、VBとか、Delphiとか、Perlとか使ってる。
10011:01/12/30 05:08
100Get (w
リンク紹介でもします。

1で紹介されてませんでしたが、WSHのポータルとも
言えるページはここ。
http://www.asia.microsoft.com/japan/developer/scripting/default.asp

本体のDLはここから。最新版のWSH5.6をインストールしておこう。
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 (それ以外)

ちなみに、WSH5.6で追加された機能。
http://www.asia.microsoft.com/japan/developer/workshop/languages/clinic/scripting11132000.asp

まずはこのヘルプを落とさないと始まらない。
http://download.microsoft.com/download/winscript56/Install/5.6/W98NT42KMe/JA/scd56jp.exe

WindowsXPには、コマンドラインツールとして、VBSファイルが
結構あるみたいですね。
http://www.atmarkit.co.jp/fwin2k/xp_feature/013commandtool/commandtool.html

XPで追加・強化された、スクリプト関係の機能についてはこちら。
http://content.communities.msn.com/WindowsScript/windowsxp.msnw

Web WorkShop Japan。Microsoftのインターネット関係の技術に関する
記事がいろいろあります。もちろんスクリプト関係の項目もあり。
http://www.asia.microsoft.com/japan/developer/workshop/default.asp

microsoft.public.scripting.wshというニュースグループでは、濃い情報が
やりとりされてます。WSH開発者も頻繁に登場。
http://groups.google.com/groups?hl=ja&group=microsoft.public.scripting.wsh

レベルの高いTipsとかあり。
http://communities.msn.com/windowsscript
10111:01/12/30 05:32
使用言語に関して。まあ、好き嫌いはあると思うけど、好きなのを使えば
いいと思われ。
VBSもJScriptも嫌いな人は、PerlScriptとかPythonScriptとかActiveScriptRubyを
使ってみてはいかが?
http://www.activestate.com/Products/Download/Get.plex?id=ActivePerl
http://www.activestate.com/Products/Download/Get.plex?id=ActivePython
ttp://www.geocities.co.jp/SiliconValley-PaloAlto/9251/ruby/index.html

複数言語を*同時に*使えるという利点を生かしてやるのもいいでしょう。
やり方は、>>69のリンクを参照。

適材適所な言語を使うという考え方は、
.NETのCommon Language Runtime (CLR)に受け継がれていますよね。
102名無し~3.EXE:01/12/31 01:07
便利リンク集age
103名無し~3.EXE:01/12/31 01:20
空白を含むパス(\Program Filesなど)にあるプログラムを実行させるには
どうすればよいのでしょうか。
Runさせようとしても「ファイルが見つからない」というエラーが出てしまいます。
104名無しさん:01/12/31 01:40
”←これでパスを囲む
105名無し~3.EXE:01/12/31 04:17
>>104
Dim WShell
Set WShell = CreateObject("WScript.Shell")
WShell.Run "C:\Program Files\hoge.exe"
こういうこと?
これでダメだったんだけど。
106名無し~3.EXE:01/12/31 04:26
>>103
C:\Progra~1\hoge.exe
107名無し~3.EXE:01/12/31 04:40
>>105
WShell.Run """C:\Program Files\hoge.exe"""
108名無し~3.EXE:01/12/31 04:48
>>107
ありがとう!
10911:01/12/31 07:53
kage.exeのバージョンアップで、>>82-85のスクリプトは無意味になってしまったなあ。
110名無し~3.EXE:01/12/31 08:08
>>107
そんなふうに沢山で囲めばよかったのですか。。。
私はショートカットをつくってそれを呼び出してましたよ(w
111名無し~3.EXE:01/12/31 08:40
>>110
沢山ってゆーか、VB(Script)だと""が"なの。
Cとかの\"ね。
11211:01/12/31 11:06
>>111
こんな大事なことがヘルプに載ってないんだから、どうしようもないな。
そもそも、WshShell.Runでスペースを含むパスがそのまま
渡せないこと自体が謎なんだが。
113名無し~3.EXE:01/12/31 11:14
>>111
そうなのですか。。。VBに限らずプログラムは全然知らないんです。失礼しました。
ところでプログラムを実行する時にウィンドウを最大化して起動する方法はありますか?
これまたよくわからないのでショートカットでやってます(鬱
114名無し~3.EXE:01/12/31 11:28
115名無し~3.EXE:01/12/31 11:45
>>114
ガ━━━(゚Д゚;)━━━ン!
昔そういうの見てやってけどわからなったんですよねー。
と思いつつもよく見たら数字だけでよかったのですね。
説明書の読み方を勉強するところからでなおしてきます。。。
116名無し~3.EXE:01/12/31 17:31
クリップボード内の文字列を取得できないかな
117名無し~3.EXE:01/12/31 22:28
microsoft.XMLHTTPを使ってダウンロードするときの質問なんですけど
referを設定することってできるんでしょうか?
11811:01/12/31 23:52
>>117
私、あんまりHTTPのこと知らないんですが、
setRequestHeader(bstrHeader As String, bstrValue As String)
っつーメソッドがあるみたいなので、
HTTP.RequestHeader "Referer","URL"
とかしてやればいいんじゃないでしょうか。

>>116
過去レス見れ。
11911:02/01/01 00:11
>>118
あ、setが抜けてた。

もしこの手が使えたら、User-Agentの偽装とかも簡単にできるなあ。
120116:02/01/01 01:10
うげ、禿しく初期レスで既出だった。
つかInternetExplorer.ApplicationのリファレンスがMSDNに載ってねーよ!
121名無し~3.EXE:02/01/01 01:15
wshからodbcアクセスがわからない
122名無し~3.EXE:02/01/01 01:20
>>120
platform sdkをdlしる
123名無し~3.EXE:02/01/01 01:28
>>122
どのファイルか教えれ。
script56.chmに載ってないぞ。
12411:02/01/01 01:39
125名無し~3.EXE:02/01/01 01:42
>>124
さんきゅ。ってかちょうど今見つけたとこ。
126名無し~3.EXE:02/01/01 01:56
Platform SDKドキュメントのどこに書いてあるか非常に気になるんだが・・・
127名無し~3.EXE:02/01/01 02:04
WSHはウイルス用言語です。他の使い方はしないでください
12811:02/01/01 02:10
>>127
WSHは言語じゃないし、WSHで動作するウィルスはいまのところ皆無。
(ワームはいっぱいあるけどね)
129117:02/01/01 03:31
>>11さん、ありがとー。
おかげで目的を達成でけました。

function downloadFile(savePath, url)
{
var adTypeBinary = 1;
var adSaveCreateNotExist = 1;
var adSaveCreateOverWrite = 2;

var objXmlHttp = WScript.CreateObject("Microsoft.XMLHTTP");
var objStream = WScript.CreateObject("Adodb.Stream");
var objFs = WScript.CreateObject("Scripting.FileSystemObject");

// セーブフォルダがなかったら作る
var parentFolder = objFs.GetParentFolderName(savePath);
if (objFs.FolderExists(parentFolder) == false) objFs.CreateFolder(parentFolder);

// 親URLをreferにする
var spos = url.lastIndexOf("/");
var parentUrl = url.substring(0, spos);

objXmlHttp.Open("GET", url, false);
objXmlHttp.SetRequestHeader("Referer", parentUrl);
objXmlHttp.Send();
objStream.Type = adTypeBinary;
objStream.Open();
objStream.Write(objXmlHttp.responseBody);
objStream.SaveToFile(savePath, adSaveCreateOverWrite);
}
130名無し~3.EXE:02/01/01 03:38
>>126
inet.chm::/workshop/browser/webbrowser/reference/Objects/InternetExplorer.htm
131名無し~3.EXE:02/01/01 04:02
無いと思ったら俺CoreSDKしかDLしてなかったんだった。
逝ってくる。
13211:02/01/01 04:13
雑誌付録のVisual Studio.NETβ2のDVD-ROMに、
最新版のMSDNライブラリがついてきて(゚д゚)ウマー
133名無し~3.EXE:02/01/01 04:23
俺いつも日本語版MSDNしかインストールしてないんだよね。
英語版には載ってるんだろうか。
134名無し~3.EXE:02/01/01 04:49
WSHでEXEやDLLのリソース内にあるアイコンを取得できないかな。
135名無し~3.EXE:02/01/01 05:07
>>134
そんなもんCで書け
136名無し~3.EXE:02/01/01 05:16
>>135
スレ違い
137名無し~3.EXE:02/01/01 05:49
138名無し~3.EXE:02/01/01 06:35
>>136
きちがい
139名無し~3.EXE:02/01/01 06:40
あのー>>11のコードをメモ帳に貼って拡張子vbsで保存して実行しても
うんともすんとも言わないんですが・・・
14011:02/01/01 06:49
>>139
IE5以上必須です。
141名無し~3.EXE:02/01/01 07:07
IE5.5なんですが・・・
14211:02/01/01 07:12
>>141
IEのセキュリティ設定で、スクリプトによる貼り付け処理は、許可されてますか?
OSがWin95だったりしませんか?
WSHがインストールされていなかったりしませんか?
変なアンチウィルスソフトがインストールされていませんか?
実は、ファイル名が.vbs.txtになっていたりしませんか?
143名無し~3.EXE:02/01/01 08:00
うーん、全部大丈夫なんですけどね・・・
スクリプトによる貼り付け処理 許可
OS Windows2000
WSH 2000なのでデフォルトでWSH2.0
アンチウィルスソフト インストールされていない
ファイル名 確実に拡張子vbs

http://www.microsoft.com/japan/developer/library/script56/sgFileSystemObjectModel.htm
ここに
「Internet Explorer の既定の設定では FileSystemObject オブジェクトをクライアント側で使用することができません。」
とありますが関係ないでしょうか。
144名無し~3.EXE:02/01/01 08:17
どうやら
sData=oClip.getData("text")
のコードを入れるとファイル作成に失敗しているようです。
試しに
sData="test"
とするとファイルは作成されました。
14511:02/01/01 08:18
>>143
これ以上はわからんなあ…。
実際、私のところでは動作するし、この方法は、複数の環境で動作報告が
あります。
FileSystemObjectがクライアント側で使えないというのは、あくまで
IEがホストの場合。WSHがホストの場合は問題ないです。
14611:02/01/01 08:26
>>144
微妙にかぶってしまった。

↓のようなスクリプトを事前に実行してみた場合はどうなります?
これは、IEを使ってクリップボードに"test"という文字列をコピーする
ものなんですが。

Set Ie = WScript.CreateObject("InternetExplorer.Application")
Ie.Navigate "about:blank"
Do While Ie.Busy
Wscript.Sleep 10
Loop
Set oClip=Ie.Document.parentWindow.clipboardData
oClip.setData "text","test"

うちの掲示板で、IEを使ってクリップボードの操作をすると、
クリップボードが二重化される(?)みたいな報告がありましたもんで。
147名無し~3.EXE:02/01/01 08:36
これはつまり、このファイルを実行した後にメモ帳などで[貼り付け]をすると
test という文字列が貼り付けられるということですよね?
これも失敗します。
ちなみにこの.vbsファイルをローカル(デスクトップ上)で実行してますが、
この場合でもIEの[スクリプトによる貼り付け処理の許可]は関係します?
一応[インターネット][イントラネット][信頼済み]で許可して試してますが。

こっちの環境を整理:Windows2000Pro+SP2, IE5.5+SP2
14811:02/01/01 08:46
>>147
いえ、正直あんまり関係ない気がします。もしかしたらそうかな、というくらいで
書きました。

待ち処理部分を
Do While Ie.Busy or Ie.readyState<>4
WScript.Sleep 100
Loop
とかにしても駄目かな。

こっちの環境: Win2000Pro sp2 + IE6.0 + WSH5.6 + .NET Framework SDK (beta 2)

こんなんばっかり書いてるのも何なんで、Tips。
IEを使ってコモンダイアログを無理やり呼び出す方法。
Set Ie = WScript.CreateObject("InternetExplorer.Application")
Ie.Navigate "about:blank"
Do While Ie.ReadyState<>4
WScript.Sleep 100
Loop
Set document=Ie.Document
document.Write "<html><body><input type=file id=txtFile></body></html>"
document.all.txtFile.focus
document.all.txtFile.click
MsgBox document.all.txtFile.Value
149名無し~3.EXE:02/01/01 08:53
待ち処理部分を変更しても失敗。
まぁ、これはこれで仕方ないとしましょう。
実際ローカルvbsで実行できなくてもいいんです。
htmlの<script>内でgetDataするのが目的で、これは問題なくできてるんで。
150名無し~3.EXE:02/01/02 00:17
ageてみる
151名無し~3.EXE:02/01/02 04:03
IEコンテキストメニューで「引用符付き貼り付け」できるようなものを作ってみた。
でもこれを使うと引用符付き貼り付けした後にウィンドウが背面に隠れてしまう。
コードの最後にfocus( )を追加してもダメ。何かいい方法はないかな?

<SCRIPT LANGUAGE="VBScript">
Set ie = CreateObject("InternetExplorer.Application")
Set win = external.menuArguments
Set rng = win.document.selection.createRange()

ie.Navigate "about:blank"
Do While Ie.Busy
Wscript.Sleep 10
Loop

Set oClip = ie.Document.parentWindow.clipboardData
sData = oClip.getData("text")
If IsNull(sData) Then sData = ""

Dim intStart
Dim intEnd
Dim intLength
Dim strResult

intStart = 1
Do While intStart < Len(sData)
intEnd = InStr(intStart,sData,VbCrLf,vbTextCompare)
If intEnd = 0 Then
strTemp = Mid(sData,intStart)
If strTemp <> "" Then strResult = strResult & "> " & strTemp
Exit Do
Else
intLength = intEnd + Len(VbCrLf) - intStart
strTemp = "> " & Mid(sData,intStart,intLength)
intStart = intEnd + Len(VbCrLf)
strResult = strResult & strTemp
End If
Loop

rng.text = strResult
</SCRIPT>
15211:02/01/02 05:11
>>151
せっかくHTML内にスクリプトを書いてるんだから、
クリップボードに、別のIEのインスタンス経由でアクセスする必要は
ないんじゃない?

というか、これをやるんなら、テキストボックス(TextArea/Input type=text)で
選択した文字列に引用符をつけるスクリプトのほうがいいかもね。
153名無し~3.EXE:02/01/02 06:01
あ、ほんとだ。
そのままクリップボードにアクセスできるんだ。
そうするとウィンドウが背面に隠れるのも解消されたよ。

> テキストボックス(TextArea/Input type=text)で
> 選択した文字列に引用符をつける
これは「テキストボックス内で選択した」文字列に引用符をつけるという意味?
それとも別の場所で選択した文字列を「テキストボックス内のみで」引用符を
付けられるようにするという意味?
15411:02/01/02 06:18
>>153
ごめん、ちょっと寝ぼけてた。152の後半は無視してください。

おわびにインストーラつくったのでご笑納ください。
これ実行すると、テキストボックスの右クリックメニューのときだけに
「引用符を付加して貼り付け」が出るので便利ですよん。

'install.vbs
Set WshShell = WScript.CreateObject("WScript.Shell")
Set Fs = WScript.CreateObject("Scripting.FileSystemObject")

iMsg = MsgBox("IEのコンテキストメニューに「引用符を付加して貼り付け」を追加します。" & vbCrLf & "よろしいですか?",vbYesNo)
If iMsg=vbNo Then WScript.Quit

WshShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\引用符を付加して貼り付け\",Fs.BuildPath(Fs.GetParentFolderName(WScript.ScriptFullName),"addgt.htm"),"REG_SZ"
WshShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\引用符を付加して貼り付け\contexts",&H04,"REG_DWORD"

MsgBox "インストール完了"

'uninstall.vbs
Set WshShell = WScript.CreateObject("WScript.Shell")
Set Fs = WScript.CreateObject("Scripting.FileSystemObject")

iMsg = MsgBox("IEのコンテキストメニューから「引用符を付加して貼り付け」を削除します。" & vbCrLf & "よろしいですか?",vbYesNo)
If iMsg=vbNo Then WScript.Quit

WshShell.RegDelete "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\引用符を付加して貼り付け\"

MsgBox "アンインストール完了"
155名無し~3.EXE:02/01/02 06:29
こりゃまたご丁寧に。
自分でも作ったんだけど"&H4"はテキストボックス以外のコントロールも指すから
ボタン上で右クリックしてもボタンのキャプションに引用付き貼り付けされるんだよね
だからさっき
> 「テキストボックス内のみで」引用符を付けられるようにするという意味?
と聞いてみたわけ。スクリプト内でコントロールの区別をするのかなと。
つーかさっそく引用しまくる俺。
15611:02/01/02 06:43
>>155
なるほど、じゃ、こういうのはどうすか?

Set oSrc = win.event.srcElement

If oSrc.TagName="TEXTAREA" Or (oSrc.TagName="INPUT" And oSrc.Type="text") Then
...貼り付け処理
End If

かちゅユーザーだから、このスクリプトの恩恵が受けられない罠。
157名無し~3.EXE:02/01/02 07:07
Good job !
158名無し~3.EXE:02/01/02 13:33
起動時に音量ミュートを解除したいとか、そういったことはできますか??
フリーソフト探してみたけどみつかんなかった。
159名無し~3.EXE:02/01/02 16:42
>>158
レジストリのどこにその設定が保存されてるかがわかればできると思うけど
16011:02/01/02 19:33
>>158-159
たとえレジストリのキーがわかっても、たぶんできないと思う。
というのも、>>95とかもそうなんだけど、コンパネ等でできる
設定って、たしかにレジストリに書き込まれるんだが、その逆、
つまり、レジストリにその設定をじかに書き込んでも、実際には
反映されないことが多いのです。
まあ、再起動とかかければ反映されることもあるけど。

そこで、WSHからこういう設定をかけるときは、
1. そういうことをやってくれるCOMコンポーネントを探す
2. そういうことをやってくれるコマンドラインツールを探す
3. SendKeysを使って無理やり設定する
という手を使う必要がでてくるわけ。
下に行けば行くほど、確実性が薄まってくるわけだが、場合によっては
SendKeysが妖しい威力を発揮することもある。誤爆も多いが。

さいわい、音量関係のコマンドラインツールというのがあるので、
これを使うのがよろしかろう。
http://www.vector.co.jp/soft/win95/art/se100704.html

あと、Sound Blaster系のサウンドカードをお使いなら、ミキサーコントロールが
オートメーション化(COMコンポーネント化)されているので、WSHから呼び出す
ことが可能かもしれません。(やったことないけど。やったけどうまくいかなかった
んだっけ? 忘れた)
161名無し~3.EXE:02/01/02 20:11
IEに表示されてるページのHTMLソースを別のエディタで見るには?
16211:02/01/02 20:14
>>161
スレ違い。
163名無し~3.EXE:02/01/02 20:21
キャッシュされるファイルのパスはわかんないよね
16411:02/01/02 20:28
>>163
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Foldersキーの
Cacheという文字列値をRegReadしなされ…って
そういう意味じゃないのかな?
165名無し~3.EXE:02/01/02 22:18
hを抜いたURL、選択して実行すると新規ページでブラウザ開く
できれば右クリックででるようにしてくれると嬉しい

そういうの既にありますかね?
166名無し~3.EXE:02/01/02 22:23
>>165
http://www6.plala.or.jp/downward/MDI/
↑のgreptools beta4.1を参照
167名無し~3.EXE:02/01/02 22:49
>>161
IEで表示されてるのがローカルファイルなら・・・

<SCRIPT LANGUAGE="JScript">
var oWin = external.menuArguments;
var oShell = new ActiveXObject("WScript.Shell");
var strProtocol = "file:////";
var strData = new String(oWin.document.location.href);

if(strData.slice(0, 5) == "file:"){
strData = strData.slice(strProtocol.length-1);
strData = unescape(strData);
strData = strData.replace(/\//g, "\\");

oShell.Run("\"C:\\Program Files\\TeraPad\\TeraPad.exe\" " + "\"" + strData + "\"");
}
</SCRIPT>
168117:02/01/03 01:53
>>165

↓hoge.regとして保存
REGEDIT4
[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\URLを開く(&O)]
@="D:\\ieplugin\\newie.htm"
"contexts"=hex:10

↓newie.htmとしてD:\\ieplugin\\newie.htmに保存
<HTML>
<SCRIPT LANGUAGE="JavaScript" defer>
var parentwin = external.menuArguments;
var doc = parentwin.document;
var sel = doc.selection;
var rng = sel.createRange();
var str = rng.text.replace(/http:\/\/|ttp:\/\/|http:\/\/|htp:\/\/|htt:\/\//, "");

if (str=="")
alert ("You must select some text to search for first.");
else
open("http://" + str);

</SCRIPT>
</HTML>

そんでhoge.regを実行。
16911:02/01/03 02:37
>>165
良かったら、私の作ったやつも試してみてください。
http://www.roy.hi-ho.ne.jp/mutaguchi/wsh/src/mklink.lzh

ttp://、tp://、全角→半角までは対応してます。複数行のURLから同時に
リンク生成してくれる、わりと優れものです。
(直でリンク先を開かないようにしたのは、複数行対応ができることと、
Iria等との連携が取れるなどのメリットがあるからです)
8行目を
aLine(K)="<a href=""" & FixURL(aLine(K)) & """ target=""_blank"">" & FixURL(aLine(K)) & "</a>"
に変えてもいいかも。
「和塩」とかも展開しようかなあと一時は思いましたが…

>>161 >>167
あ、そういう意味か。すいません。
てっきり、HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\View Source Editor\Editor Nameキー
の話かと。

TeraPadと言えば、こういうプロジェクトが進行中です。
ttp://csx.jp/~tsuchiya/
本来、TeraPadにマクロ機能はありませんが、TeraPadの機能を制御する
COMコンポーネントを使って、外部ツールとしてVBSファイルを呼び出すことで
実現してやろう、というものです。
17011:02/01/03 03:03
良く考えると、IEの右クリックメニューって、WSHとは何も関係ないんだよな…
171165:02/01/03 03:27
>>11
凄すぎる、リンクは便利だった。ie限定が残念だけど。
こんな頭のいい人が世の中にいるんだなぁ
172117(WSH見習い):02/01/03 03:29
> 「和塩」とかも展開しようかなあと一時は思いましたが…
それ(・∀・)イイ!。そんじゃこれも展開。

var urlList = new Array();
expandUrl(urlList, "www.hogehoge.com/[01-03]/[03-05].jpg");
WScript.echo(urlList);

function expandUrl(urlList, url)
{
var re = new RegExp("[[]([0-9]+)-([0-9]+)[]]");
var arr = re.exec(url);

if (arr == null)
{
urlList.push(url);
return;
}

var beginStr = RegExp.$1; //エイリアス
var begin = parseInt(RegExp.$1);
var end = parseInt(RegExp.$2);
var leftContext = new String(RegExp.leftContext);
var rightContext = new String(RegExp.rightContext);
173117(WSH見習い):02/01/03 03:29
var fillMode = false;
var fillSize = 0;

if (beginStr.charAt(0) == "0")
{
fillMode = true;
fillSize = beginStr.length;
}

for (var i = begin; i <= end; i++)
{
var si = i.toString();
if (fillMode) while (si.length < fillSize) si = "0" + si;

var expUrl = leftContext + si + rightContext;
expandUrl(urlList, expUrl);
}
}
MSのどっかに載っていたこんなスクリプトを実行しようとしても
こんな感じのエラーが出て動いてくれません。
Script: f:\bin\Hardlinks.vbs
Line: 79
Char: 4
Error ActiveXコンポーネントはオブジェクトを作成できません。:'HardLink.Object.1'
Code: 800A01AD
Source: Microsoft VBScript 実行時エラー
Hardlinks.vbs begins----------------------------------------------------------------------
' Hardlinks.vbs
' NTFS ボリュームでのハード リンクのデモ
' --------------------------------------------------------
Option Explicit
' 定数
Const L_NoHardLinkCreated = "ハード リンクを作成できません。"
Const L_EnterTarget = "ハード リンク先のファイル名を入力してください。"
Const L_HardLinks = "ハード リンクの作成中"
Const L_EnterHardLink = "作成するハード リンクの名前"
Const L_CannotCreate = "両方のファイルが同じボリューム上にあり、そのボリュームが NTFS であることを確認してください。"
Const L_NotExist = "ファイルは存在しません。"
Const L_SameName = "ターゲット ファイルとハード リンクの名前を同じにすることはできません。"
' (ハード) リンクを設定する既存のファイルを決定する
dim sTargetFile
if WScript.Arguments.Count >0 then
sTargetFile = WScript.Arguments(0)
else
sTargetFile = InputBox(L_EnterTarget, L_HardLinks, "")
if sTargetFile = "" then WScript.Quit
end if
' ファイルが存在するかどうかを確認する
dim fso
set fso = CreateObject("Scripting.FileSystemObject")
if Not fso.FileExists(sTargetFile) then
MsgBox L_NotExist
WScript.Quit
end if
' メイン ループ
while true
QueryForHardLink sTargetFile
wend
' 終了
WScript.Quit
' /////////////////////////////////////////////////////////////
' // ヘルパー関数
' ハード リンクを作成する
'------------------------------------------------------------
function QueryForHardLink(sTargetFile)
' コマンド ラインで指定された場合にハード リンク名を取得する
dim sHardLinkName
if WScript.Arguments.Count >1 then
sHardLinkName = WScript.Arguments(1)
else
dim buf
buf = L_EnterHardLink & " for" & vbCrLf & sTargetFile
sHardLinkName = InputBox(buf, L_HardLinks, sTargetFile)
if sHardLinkName = "" then WScript.Quit
if sHardLinkName = sTargetFile then
MsgBox L_SameName
exit function
end if
end if

'両ファイルが同じボリュームにあるか
'そのボリュームが NTFS であるかを確認する
if Not CanCreateHardLinks(sTargetFile, sHardLinkName) then
MsgBox L_CannotCreate
exit function
end if

' ハード リンクを作成する
dim oHL
set oHL = CreateObject("HardLink.Object.1")
oHL.CreateNewHardLink sHardLinkName, sTargetFile
end function
' 両方のファイルが同じ NTFS ディスクにあるかどうかを確認する
'------------------------------------------------------------
function CanCreateHardLinks(sTargetFile, sHardLinkName)
CanCreateHardLinks = false

dim fso
set fso = CreateObject("Scripting.FileSystemObject")

' 同じドライブかどうかを確認する
dim d1, d2
d1 = fso.GetDriveName(sTargetFile)
d2 = fso.GetDriveName(sHardLinkName)
if d1 <> d2 then exit function

' NTFS ドライブであるかどうかを確認する
CanCreateHardLinks = IsNTFS(sTargetFile)
end function
' IsNTFS() - ファイルのボリュームが NTFS であるかどうかを確認する
' --------------------------------------------------------
function IsNTFS(sFileName)
dim fso, drv

IsNTFS = False
set fso = CreateObject("Scripting.FileSystemObject")
set drv = fso.GetDrive(fso.GetDriveName(sFileName))
set fso = Nothing

if drv.FileSystem = "NTFS" then IsNTFS = True
end function
Hardlinks.vbs ends----------------------------------------------------------------------
17811:02/01/03 04:32
>>172
これって、たとえば[1-1000]とかを展開すると、凄いことになったりしない?
私は素直にIriaさんにまかせます…。

>>174
'HardLink.Object.1' というProgIDを持つCOMコンポーネントをインストールしる。
以上。

ハードリンクじゃないけど、「フォルダのショートカット」をスタートメニュー
以外の任意のフォルダに作成するスクリプトなら作ったことあるよ。
http://www.roy.hi-ho.ne.jp/mutaguchi/wsh/src/folsc.lzh

こっちは、シンボリックリンクもどきということになるのかな。
Win2000/ME/XP用。
179117(WSH見習い):02/01/03 05:30
> これって、たとえば[1-1000]とかを展開すると、凄いことになったりしない?
それじゃそうならない仕組みを。
downloadFile()を>>129と入れ替えれば実際にダウンロードが始まります。

var dlr = new Downloader();
expandUrl(dlr, "www.hogehoge.com/[01-03]/[03-05].jpg");

function makeSaveFilePath(url)
{
// ここは好きなように書き換える。
var re = new RegExp("([0-9]+)/([0-9]+).jpg$");
var arr = re.exec(url);

return "C:\\downloads\\" + RegExp.$1 + "_" + RegExp.$2 + ".jpg";
}

function Downloader()
{
this.push = _Downloader_Push;
}

function _Downloader_Push(url)
{
downloadFile(makeSaveFilePath(url), url);
}

function downloadFile(savePath, url)
{
WScript.echo(url + "を" + savefile + "にセーブします");
}
180117(WSH見習い):02/01/03 05:30

> 私は素直にIriaさんにまかせます…。
分かってるんです。分かってるんですけどね T T

ちなみに同じことをやるのにirvine用のququeファイルを
lispで作ると6行ですみます T T

otimes (fnum 2 t)
(dotimes (pnum 3 t)
(insert (format nil "http://www.hogehoge.com/~2,'0D/~2,'0D.jpg" (+ fnum 1) (+ pnum 1)))
(insert "\t\t")
(insert (format nil "~2,'0D_~2,'0D.jpg" (+ fnum 1) (+ pnum 1)))
(insert "\t\t\t\t0\t0\t\t\t\t0\t\t0\t0\t0\t\t0\t\t\n")))
181おながいします:02/01/03 05:48
Win板TOPが見にくいので、sageでお願いします。
1821:02/01/03 06:15
久しぶりにこのスレみたら
何やら凄い事になってますね…
あー僕もせっかく休みなんだから
少し勉強しなきゃ。
18311:02/01/03 06:27
>>174
このスクリプトの出所、見つけたよ。
http://www.microsoft.com/japan/developer/windows2000/techart/ntfs5.asp

> 以前の "MIND" 誌の記事 ("MIND" 誌 1999 年 3 月号 (「Windows 2000 for
> Web Developers (英語) 」を参照))で、スクリプト コードからハード リンクを
> 作成する COM オブジェクトをサンプル コードとして添付しました。
> サンプル コード 2 は、このコードを利用して特定のファイルへの
> ハード リンクを作成する VBScript プログラムです。

て書いてあるね。"MIND" 誌ってのを手に入れなきゃならないかも。

このページに出てる、もう一つのサンプルスクリプトは、WSHから
NTFSのストリームに書き込むするやつなんだが、こちらは
標準機能だけで実行できそう。
184名無し~3.EXE:02/01/03 10:11
>>182
自分でたてたスレには責任を持て。こんな良スレはめったにないのだ
185名無し~3.EXE:02/01/03 14:19
age
186名無し~3.EXE:02/01/04 04:00
再びage
参考になった。感動した。
自分はActive Perlを入れているのできっとPerl Scriptが
使えるに違いない。今から研究するよ。
18811:02/01/04 04:50
>>187
Perl Scriptは日本語が通らない(らしい)のがネックだな…。
189名無し~3.EXE:02/01/04 05:42
日本語が通らないってどういうこと?
19011:02/01/04 05:50
>>189
日本語の文字列が扱えないらしい。詳しくは知らん。
191189:02/01/04 06:17
ふつーに扱えるけど?<にほんご

1byte文字かマルチバイト文字か、
判別するように意識して書かんとだめってこと?
でもこれは、Perlでスクリプト書くときは、当たり前のことというか。。。
19211:02/01/04 06:35
>>191
Perl Scriptでも大丈夫なんですか?
WSHで動かす場合ということですが。
193名無し~3.EXE:02/01/04 06:58
つかえますか。
たとえば、ActivePerlHelpに載っているサンプルをいじって
<Job ID="HelloWorld">
<comment>
   hello.wsf
</comment>
<script language=PerlScript>
   $WScript->Echo("こんにちは");
</script>
</Job>
にしたら、うごかないよぉー。
194189:02/01/04 07:19
>>193
うちでは、うごくけど?(謎)
195189:02/01/04 07:21
全角スペースをまんま書き込んでるとかいう落ちではないよね?
196名無し~3.EXE:02/01/04 07:41
>>195
そういうオチではなく、ほんとに動かないのです。
でも、別のオチがありました。Shift_JISでは駄目なんですね。
197189:02/01/04 07:46
SHIFT-JISだけど、ポップアップが表示されるよ。
こんにちは〜って。ちなみに、Win2000
19811:02/01/04 13:27
ActivePerlにJPerlを入れとけば、PerlScriptでも日本語が
使えるってことなんでしょうかね。
あとは文字コードや環境によって、使えたり使えなかったり?

ついでにあげ。
199IUnknown:02/01/05 03:29
WSHでもカスタムインターフェイスが使えればいいのにね。
せめてVBのようにタイプライブラリの参照ができて〜とか。
でもそうなるとVARIANT以外のデータ型も扱えないといけないし。
現状ではちょっと無理というのはわかるんだけど、さーっとスレを読んでみて
そういうネタが目に付いたものでね。
OSの核となる機能はほとんどCOM化されてるけどすべてがオートメーションで
利用できるわけではない。開発者が親切だとデュアルインターフェイスにしてくれるんだろうけど
実際は「オートメーションでは使わせないよ」といった雰囲気がある。

ううっ WIN板だった。。。

ただいつもWSHと聞くたびこう感じちゃうんでね。今一歩、もったいないなと。
やっぱり適材適所なのかな。

ちょっとした機能でコンパイルするのも面倒なんだよなあ。
そのうち カスタム ⇔ オートメーション COMブリッジでもつくろうかしら、なんて。
200名無し~3.EXE:02/01/05 04:44
ん?IEコンポーネントを使い倒す人かな?
201117(WSH見習い):02/01/05 07:43
goo のメールを読みに行くためのスクリプトです。

//****** 設定 ******//
var username = new String("goouser"); // 変更しれ!
var password = new String("guestguest"); // 変更しれ!
//*****************//

// URL
var url = new String("http://community.goo.ne.jp/");

var objIE = WScript.CreateObject("InternetExplorer.Application");
var objShell = WScript.CreateObject("WScript.Shell");

objIE.Visible = true;
objIE.Navigate(url);

waitForLoad(objIE); // 読み込みが終わるまで待つ

// ログイン
var pId, pPass, pSubmit;
for(var en = new Enumerator(objIE.document.all); !en.atEnd(); en.moveNext()) {
if (en.item().name == "uname" ) {pId = en.item();}
if (en.item().name == "pass" ) {pPass = en.item();}
if (en.item().name == "Submit") {pSubmit = en.item();}
}
if (pId == null || pPass == null || pSubmit == null) WScript.quit(0);

pId.value = username;
pPass.value = password;
pSubmit.click();
202117(WSH見習い):02/01/05 07:43

waitForLoad(objIE); // 読み込みが終わるまで待つ

// メールサービスへのリンクを探す
for(var en = new Enumerator(objIE.document.links); !en.atEnd(); en.moveNext())
{
var linkText = en.item().toString();
var index = linkText.indexOf("view=mail");

if (index >= 0) {
objIE.navigate(linkText);
break;
}
}

function waitForLoad(objIE) {
while (objIE.busy) WScript.Sleep(10);
while (objIE.Document.readyState != "complete") WScript.Sleep(10);
}
203名無し~3.EXE:02/01/05 07:51
>>183
MSJ/MIND/MSDNマガジンのバックナンバーは
Microsoftのサイトで公開されている。
http://www.microsoft.com/mind/0399/win2000/win2000.htm
204117(WSH見習い):02/01/05 07:55
↑ファイル名 goomail.js で保存してね!
205名無し~3.EXE:02/01/05 11:54
ソースアップローダ
http://www2.to/source
206名無し~3.EXE:02/01/05 12:50
207IUnknown:02/01/05 15:02
>206
定数がタイプライブラリから参照できるのは知っているんだけど
メソッドや引数の情報を直接引き出すことはできないんだよね
(引き出せたとしても前述のデータ型の問題がある)

ちなみにそういったタイプライブラリ情報を取得するActiveX コンポーネントもあるね
(ファイル名は失念)。これをMS Script Control との併用でオートメーション呼び出しに
利用出来ないかなと思ったこともあるけどやっぱりデータ型の問題が。

※ところでTypeLibから定数を取得するメリットって何なんだろう?
実行時バインドのスクリプト系言語では実行速度が落ちるだけに思うんだけど。


すみません。内容が板違いなのでこの辺にしときます。
アーキテクチャ絡みで何かあればこちらで。
http://pc.2ch.net/test/read.cgi/tech/981823340/l50

ActiveX コントロールだけでなくすべてのCOMコンポーネントがWSHから利用できる
ようになればバラ色なんだけどなあ。
208名無し~3.EXE:02/01/05 17:48
バラ色だけどウィルス作者にとってもバラ色の予感
20911:02/01/08 06:10
>>207
ActiveX コントロールは、WSHからは使えない(ActiveXコンテナじゃないから)
のではないか、と思ってみるテストをしつつ、age。

>>208
WSHで作られるウィルスって何なんだ。
VBSファイルに寄生するのか?

.NETな世界になったとき、WSHの立場はどうなるんですかねえ。
COMとともに完全消滅? バージョンアップは停止するも生き延びる? WSH.NETとして
新たな道を歩む? (C#が使えたり?)
210IUnknown:02/01/08 23:22
>ActiveX コントロールは、WSHからは使えない(ActiveXコンテナじゃないから)
>のではないか、と思ってみるテストをしつつ、age。

ちょっと意味を汲み取れませんでしたが、私の前述の発言で
>ActiveX コントロールだけでなくすべての...
は「オートメーションオブジェクトだけでなくすべての...」のほうが
適切かもしれません。

>COMとともに完全消滅? バージョンアップは停止するも生き延びる? WSH.NETとして
>新たな道を歩む? (C#が使えたり?)

COMはWindows OSアーキテクチャの基盤として生き続けると思います。
ただプログラミング言語からの扱われ方が今にもましてラップされ
そのうちプログラマはCOMというものを意識しないか、存在すら
忘れ去るかもしれませんね。
今だって WSH がどのようにスクリプトエンジンとバインドしているか、
またスクリプトエンジンはどのようにオートメーション呼び出しを行っているか
なんて意識しながらスクリプトを書いている人なんてそういないでしょう。
実際知ると面白いものですが知らなくたって立派なスクリプトは書けますからね。
私みたいにアーキテクチャはちょっとかじっているけど粋なスクリプトは書けない
人間もいますし、まあこのあたりは今ではマニアで自己満足な世界かもしれません。

話はちょっと変わりますが私はWSHの魅力はすでに存在しているコンポーネントを
いかに巧みに組み合わせて目指す機能を実現するかというパズル的要素に
尽きると思います(まあ極論ですが)。単に機能を実現したいだけなら自分で
一から作ればいいわけで、でもWSHが持つ制限による「作れるかどうかわからない」
といったUnknownな世界が私の心をちょこっと、くすぐるわけです。

>>208
VBS 動かなければ ただの文字
お粗末でした
211IDispatch:02/01/09 04:46
>.NETな世界になったとき、WSHの立場はどうなるんですかねえ。
>COMとともに完全消滅? バージョンアップは停止するも生き延びる? WSH.NETとして
>新たな道を歩む? (C#が使えたり?)

COM や WSH が無くなろうが、.NET になろうが、
自動処理的な作業ができるスクリプト言語があれば、いいなじゃい?
まぁ、古くなっても WSH に執着したいなら別だけど...
212名無し~3.EXE:02/01/09 07:57
MSの自動処理って微妙に中途半端なんだよな、batでは苦労したし…
21311:02/01/09 11:55
>>211
いや、VBSが使えたらいいんですが、VB.NETを使わなきゃならん
という事態になったら鬱だなあ、と。
スクリプト言語は、シンプルなのがいい。
214名無し~3.EXE:02/01/10 02:03
ずいぶん違うらしいですね。VB と VB.net
215名無し~3.EXE:02/01/11 21:09
サルベージしておこう
216名無し~3.EXE:02/01/12 23:11
便利あげ

ついでに質問。
ダイアルアップ接続をWSHで行いたいんだけどそんなん無理?
217名無し~3.EXE:02/01/12 23:34
21811:02/01/12 23:59
>>216
こんなコンポーネントもあります。
WSHRas
http://www.borncity.de/WSHBazaar/WSHRas.htm

rundll.exeを使う方法。Win98専用かな?
Set WSHShell = WScript.CreateObject("WScript.Shell")
ap=WSHShell.RegRead("HKCU\RemoteAccess\InternetProfile")
WSHShell.Run "rundll.exe rnaui.dll,RnaDial " & ap,1,True

Win2000専用で、しかも結構タイミング的に動かないこともある
スクリプト。接続中なら切断、切断中なら接続します。
ちょっと書き変えれば、任意の接続先に接続するとかもできます。
Set Shell = WScript.CreateObject("Shell.Application")
For Each oItem In Shell.NameSpace(3).Items
If oItem.Name="ネットワークとダイヤルアップ接続" Then
Set oFolder=oItem.GetFolder
For Each oSubItem In oFolder.Items
If oFolder.GetDetailsOf(oSubItem,1)="ダイヤルアップ" Then
If oFolder.GetDetailsOf(oSubItem,2)="接続" Then
WScript.Sleep 500
oSubItem.InvokeVerb "切断(&O)"
WScript.Sleep 500
Else
WScript.Sleep 500
oSubItem.InvokeVerb "接続(&O)"
WScript.Sleep 500
End If
Exit For
End If
Next
Exit For
End If
Next
219名無し~3.EXE:02/01/13 11:14
>>189
例えば
my $xxx = '東京都';

Missing right curly or square bracket...
なのでPerlのパーザが混乱していると思われ。
深く考えるのも面倒なので、
my $xxx = "\223\214\213\236\223\163";
環境はWin/me, ActivePerl 5.6.1
22011:02/01/14 23:27
なんかネタ切れの感もありますが、スクリプトを一つ。

c:\folder\aaa001.xxx
c:\folder\aaa002.xxx
c:\folder\aaa003.xxx
c:\folder\bbb-01.xxx
c:\folder\bbb-02.xxx
c:\folder\ccc_1.xxx
c:\folder\ccc_2.xxx
c:\folder\ccc_3.xxx
...
のような連番ファイルが、なぜか同一フォルダに大量にあって、
フォルダを開くのが重くて鬱だ、という場合、このスクリプトを
実行すると、
c:\folder\aaa\aaa001.xxx
c:\folder\aaa\aaa002.xxx
c:\folder\aaa\aaa003.xxx
c:\folder\bbb\bbb-01.xxx
c:\folder\bbb\bbb-02.xxx
c:\folder\ccc\ccc_1.xxx
c:\folder\ccc\ccc_2.xxx
c:\folder\ccc\ccc_3.xxx
...
のように整理してくれます。
使い方は、整理したいフォルダをarrfol.vbsにD&D。
22111:02/01/14 23:27
'arrfol.vbs
Set Fs = WScript.CreateObject("Scripting.FileSystemObject")
sRoot=WScript.Arguments(0)
For Each oFile In Fs.GetFolder(sRoot).Files
sBase=Fs.GetBaseName(oFile.Name)
For I=1 To Len(sBase)
If Not IsNumeric(Right(sBase,I)) Then
If I=1 Then Exit For
sFol = Left(sBase,Len(sBase) - I+1)
If Right(sFol,1)="-" Or Right(sFol,1)="_" Or Right(sFol,1)=" " Then
sFol = Left(sFol,Len(sFol)-1)
End If
sPath = sRoot & "\" & sFol & "\"
If Not Fs.FolderExists(sPath) Then Fs.CreateFolder(sPath)
sNewFile=Fs.BuildPath(sPath,oFile.Name)
If Not Fs.FileExists(sNewFile) Then
oFile.Move sPath
Else
If oFile.Size=Fs.GetFile(sNewFile).Size Then
oFile.Delete
End If
End If
Exit For
End If
Next
Next
MsgBox "終了"
222117(WSH見習い):02/01/15 03:31
じゃあその逆で^^;

c:\target\fugo\a.xxx
c:\target\fugo\b.xxx
c:\target\puyo\a.xxx
c:\target\puyo\b.xxx
c:\target\puyo\unyo\a.xxx
c:\target\puyo\unyo\b.xxx

c:\target\fugo_a.xxx
c:\target\fugo_b.xxx
c:\target\puyo_a.xxx
c:\target\puyo_b.xxx
c:\target\puyo_unyo\a.xxx
c:\target\puyo_unyo\b.xxx
にします。

c:\target\をドラッグ&ドロップするか"送る"で送ってください
223117(WSH見習い):02/01/15 03:31
// spoitRename.js
var objFs = new ActiveXObject("Scripting.FileSystemObject");

var en = new Enumerator(WScript.Arguments);
for (; !en.atEnd(); en.moveNext())
{
if (objFs.FolderExists(en.item())) spoitRename(en.item());
}

WScript.Echo("おしまい!");

function spoitRename(folderPath)
{
// var objFs = new ActiveXObject("Scripting.FileSystemObject");
var targetFolder = objFs.GetFolder(folderPath);

var enumFolder = new Enumerator(targetFolder.SubFolders);
for (; !enumFolder.atEnd(); enumFolder.moveNext())
{
var parentFolder = enumFolder.item();
224117(WSH見習い):02/01/15 03:32

var en = new Enumerator(parentFolder.Files);
for (; !en.atEnd(); en.moveNext())
{
var newFileName = parentFolder.Name + "_" + en.item().Name;
var newFilePath = objFs.buildPath(targetFolder.Path, newFileName);

if (!objFs.fileExists(newFilePath)) en.item().move(newFilePath);
}

en = new Enumerator(parentFolder.SubFolders);
for (; !en.atEnd(); en.moveNext())
{
var newFileName = parentFolder.Name + "_" + en.item().Name;
var newFilePath = objFs.buildPath(targetFolder.Path, newFileName);

if (!objFs.fileExists(newFilePath)) en.item().move(newFilePath);
}

if (parentFolder.Files.Count == 0 && parentFolder.SubFolders.Count == 0)
parentFolder.Delete();
}
}
225117(WSH見習い):02/01/15 03:55
すみません。>>224 の修正です。
var en = new Enumerator(parentFolder.Files);
for (; !en.atEnd(); en.moveNext())
{
var newFileName = parentFolder.Name + "_" + en.item().Name;
var newFilePath = objFs.buildPath(targetFolder.Path, newFileName);

if (!objFs.fileExists(newFilePath)) en.item().move(newFilePath);
}

en = new Enumerator(parentFolder.SubFolders);
for (; !en.atEnd(); en.moveNext())
{
var newFolderName = parentFolder.Name + "_" + en.item().Name;
var newFolderPath = objFs.buildPath(targetFolder.Path, newFolderName);

WScript.echo(newFolderPath);

if (!objFs.FolderExists(newFolderPath)) en.item().move(newFolderPath);
}

if (parentFolder.Files.Count == 0 && parentFolder.SubFolders.Count == 0)
parentFolder.Delete();
}
}
226117(WSH見習い):02/01/15 03:57
あと、
> var enumFolder = new Enumerator(targetFolder.SubFolders);
> for (; !enumFolder.atEnd(); enumFolder.moveNext())
が作りたてのフォルダも数え上げるようで、

c:\target\puyo\unyo\a.xxx
c:\target\puyo\unyo\b.xxx

c:\target\puyo_unyo_a.xxx
c:\target\puyo_unyo_b.xxx

になります。
227IObjectSite:02/01/16 03:10
>>207
>>ActiveX コントロールだけでなくすべてのCOMコンポーネントがWSHから利用できる
>>ようになればバラ色なんだけどなあ。
>>210
>>は「オートメーションオブジェクトだけでなくすべての...」のほうが

WSH の問題ではなく、スクリプトエンジンの問題
よって、カスタムインターフェイスだろうが、いろんなデータ型だろうが、
使えるスクリプトを作れば使える
タイプライブラリマーシャリングにたよるのだけれど...
22811:02/01/17 22:42
こんなソフトありませんか?スレから、ヒントを得て作ったスクリプトです。

ショートカット(*.lnk)をD&Dすると、任意の優先度で実行するショートカットに
変化します。どう変化するかは、実際に変化させたショートカットのプロパティ
を覗いてみてください。なるほどなあ、と思いますよきっと。
Win2000専用。exeファイル以外のものを指定した場合の動作は保証しません。
一応、ウィンドウサイズ、コマンドラインオプション、作業ディレクトリ、アイコン
の設定は引き継ぎます。

実際のソースは、このスレがちょっと下がってから載せます。
バグがあったら教えてね。
22911:02/01/17 22:56
'priority.vbs

Set WshShell = WScript.CreateObject("WScript.Shell")
Set Fs = WScript.CreateObject("Scripting.FileSystemObject")
Set regEx = New RegExp
regEx.IgnoreCase = True
regEx.Global = False

For Each sArg In WScript.Arguments
If Fs.FileExists(sArg) And LCase(Fs.GetExtensionName(sArg))="lnk" Then
Set oShortCut=WshShell.CreateShortcut(sArg)
With oShortCut
sTargetPath=.TargetPath
If LCase(Fs.GetFileName(sTargetPath)) = "cmd.exe" Then
regEx.Pattern="\/([RHANBL]\S*)"
Set Matches =regEx.Execute (.Arguments)
For Each Match In Matches
sPriorityAccessKey = Left(Match.SubMatches(0),1)
Next
regEx.Pattern="cmd.*\s\/[RHANBL]\S*\s+(.*)"
Set Matches =regEx.Execute (.Arguments)
For Each Match In Matches
sProgArg =Match.SubMatches(0)
Next
Else
sPriorityAccessKey = "N"
sProgArg = RTrim(sTargetPath & " " & .Arguments)
End If

sPriorityAccessKey = InputBox("優先度を指定してください。" & vbCrLf & "[R]リアルタイム [H]高 [A]通常以上 [N]通常 [B]通常以下 [L]低", Fs.GetBaseName(sArg) & "(" & sProgArg & ")", sPriorityAccessKey)
If sPriorityAccessKey="" Then sPriorityAccessKey="0"
sPriorityAccessKey=Left(UCase(sPriorityAccessKey),1)
23011:02/01/17 22:57
Select Case sPriorityAccessKey
Case "R" : sPriority="REAL"
Case "H" : sPriority="HIGH"
Case "A" : sPriority="ABOVENORMAL"
Case "N" : sPriority="NORMAL"
Case "B" : sPriority="BELOWNORMAL"
Case "L" : sPriority="LOW"
Case Else : sPriority=""
End Select

If sPriority<>"" Then
If LCase(Fs.GetFileName(sTargetPath)) = "cmd.exe" Then
If sPriorityAccessKey<>"N" Then
regEx.Pattern="\/([RHANBL]\S*)"
.Arguments=regEx.Replace (.Arguments, "/" & sPriority)
.Save
Else
MsgBox "通常のショートカットに戻す処理は未実装です。"
'(めんどくさいので。要望があったら書くけど)
regEx.Pattern="\/([RHANBL]\S*)"
.Arguments=regEx.Replace (.Arguments, "/" & sPriority)
.Save
End If
23111:02/01/17 22:57
ElseIf sPriorityAccessKey<>"N" Then
iWindowStyle= .WindowStyle
Select Case iWindowStyle
Case 3 : sWindowStyleOpt=" /MAX "
Case 7 : sWindowStyleOpt=" /MIN "
Case Else : sWindowStyleOpt=""
End Select
.WindowStyle= 7 'MIN
.Arguments = RTrim("cmd /c start /d" & .WorkingDirectory & sWindowStyleOpt & " /" & sPriority & " " & sTargetPath & " " & .Arguments)
.TargetPath = "cmd.exe"
If .IconLocation=",0" Then
.IconLocation = sTargetPath & ",0"
End If
.Save
End If
End If
End With
End If
Next

23211:02/01/18 00:33
スペースつきのパスだとダメなバグ修正。
修正したものをうpしました。
http://www.roy.hi-ho.ne.jp/cgi-bin/user/mutaguchi/clickcnt.cgi?http://www.roy.hi-ho.ne.jp/mutaguchi/wsh/src/priority.lzh
233揚げ:02/01/19 01:53
ウッシュばんざ〜い!
234117(WSH見習い):02/01/19 16:01
前回のはいけてなかったので>>11さんのSpoitFilesと同じ操作性になるよう
修正しました。

c:\hoge\1.jpg
c:\hoge\2.jpg
c:\fugo\1.jpg
c:\fugo\2.jpg
c:\fugo\puyo\1.jpg
c:\fugo\puyo\2.jpg



c:\hoge_1.jpg
c:\hoge_2.jpg
c:\fugo_1.jpg
c:\fugo_2.jpg
c:\fugo_puyo\1.jpg
c:\fugo_puyo\2.jpg

にします。

hogeフォルダとfugoフォルダをドラッグ&ドロップするか送るで送ってください。
235117(WSH見習い):02/01/19 16:01
// spoitRename.js
var separator = "_";

var objFs = new ActiveXObject("Scripting.FileSystemObject");

var enArgs = new Enumerator(WScript.Arguments);
for (; !enArgs.atEnd(); enArgs.moveNext())
{
var parentFolderPath = enArgs.item();
if (objFs.FolderExists(parentFolderPath))
{
var parentFolder = objFs.GetFolder(parentFolderPath);
var granpaFolderPath = objFs.GetParentFolderName(parentFolderPath);

var en = new Enumerator(parentFolder.Files);
for (; !en.atEnd(); en.moveNext())
{
var newFileName = parentFolder.Name + separator + en.item().Name;
var newFilePath = objFs.buildPath(granpaFolderPath, newFileName);

if (!objFs.fileExists(newFilePath)) en.item().move(newFilePath);
}
236117(WSH見習い):02/01/19 16:02

en = new Enumerator(parentFolder.SubFolders);
for (; !en.atEnd(); en.moveNext())
{
var newFolderName = parentFolder.Name + separator + en.item().Name;
var newFolderPath = objFs.buildPath(granpaFolderPath, newFolderName);

if (!objFs.FolderExists(newFolderPath)) en.item().move(newFolderPath);
}

if (parentFolder.Files.Count == 0 && parentFolder.SubFolders.Count == 0)
parentFolder.Delete();
}
}

WScript.Echo("おしまい!");
237名無し~3.EXE:02/01/20 20:36
下がりすぎあげ
23811:02/01/21 02:05
WSHには飽きたので、次はフォルダのカスタマイズだ(w
http://pc.2ch.net/test/read.cgi/win/1011536679/
239名無し~3.EXE:02/01/21 02:38
11は向こうでも11?
24011:02/01/21 02:47
>>239
11取れたから。ほんとは10=11です(w
241名無し~3.EXE:02/01/21 14:53
もしよろしければヒントくださいです〜

IEの右クリックで「名前をつけて画像を保存」ってあるじゃないですか。
えろえろ画像収集の際に一際大活躍するわけですが…

しかし、その手のエロサイトでよくあるのが、
ページは違うけど画像ファイル名がどれもこれも[01-10].jpgになってるヤツ…
その場合、一々フォルダを作ったり、
手作業で保存ファイル名を変更するのですが、正直めんどくさい…

そこで思ったのは、呼び出すたびに、
保存ファイル名を自動的に連番ファイル名に変更してくれるような
「名前をつけて画像を保存」があったら便利だろうなぁ、と…

でもどうやって実装すればいいのかがわからないのです。
連番ファイル名そのものは、おそらく、
レジストリなり、どこかのテキストファイルなりに記録して
変更していけばいいのではと思うのですが、
画像保存に関連するところの処理をどう書けばいいのかさっぱり…
何か参考になる文献等ありませんでしょうか。
もしくはサンプルとか…
242名無し~3.EXE:02/01/21 15:04
ダウンローダー使うべし。。。
243名無し~3.EXE:02/01/21 16:06
>>242
なんと。DLソフトで同様の事出来ます?
一般的なDLソフトの設定だと、
ファイル名が同じものを同じフォルダにDLすることになるでしょうから
上手く行かないような気もするのですが。
(設定の仕方によっては回避できそうな気もするけど…
 もしもそのあたり、オススメのDLソフトがあればぜひ参考にさせてください)

実は↓のように配布してた方もいらっしゃるようなのですが、
http://nomura.virtualave.net/
配布中止になってるみたいで。
技術的にはできることなのでしょうけど、
どこから手をつけていいのかがわからない…
244117(WSH見習い):02/01/21 22:04
>>243
www.hoge.com/puyo/[00-10].jpg
等の文字列を選択(反転)して右クリックメニューから「Queueを作る」を
選択すると、

puyo_00.jpg
puyo_01.jpg
puyo_02.jpg


ちゅうファイル名で保存するためのIrvine用のqueueリストを指定した場所
に作成します。

Irvineで読み込んで使用してください。
245117(WSH見習い):02/01/21 22:06
↓hoge.regという名前にリネームしてダブルクリック
REGEDIT4
[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\Queueを作る(&Q)]
@="C:\\ieplugin\\makequeue.htm"
"contexts"=hex:10
246117(WSH見習い):02/01/21 22:07
↓C:\ieplugin\makequeue.htmとして保存

<HTML>
<SCRIPT LANGUAGE="JScript" defer>

//////////////// config ////////////////////////
var queueFilePath = "C:\\downloads\\queue.irv";
////////////////////////////////////////////////

var text = external.menuArguments.document.selection.createRange().text;
var str = text.replace(/^.*:\/\//, "");
str = str.replace("和塩", "www.geocities.co.jp");
str = str.replace("米塩", "www.geocities.com");
str = str.replace("和鳥", "www.toripod.co.jp");
str = str.replace("米鳥", "www.toripod.com");

if (str=="")
alert ("You must select some text to search for first.");
else {
var url = "http://" + str;
var ForReading = 1, ForWriting = 2, ForAppending = 8;
var TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0;
247117(WSH見習い):02/01/21 22:08
var objFs = new ActiveXObject("Scripting.FileSystemObject");
objFs.CreateTextFile(queueFilePath);
var file = objFs.GetFile(queueFilePath);
var fout = file.OpenAsTextStream(ForWriting, TristateUseDefault);

var urlList = new Array();
expandUrl(urlList, url);

while (urlList.length > 0)
fout.Write(makeIrvineQueue(urlList.pop()));

fout.Close();
}

function makeIrvineQueue(url)
{
var re = new RegExp("([^/]+)/([^/]+)$");
var arr = re.exec(url);

var saveFileName = RegExp.$1 + "_" + RegExp.$2;

return url + "\t\t" + saveFileName
+ "\t\t\t\t0\t0\t\t\t\t0\t\t0\t0\t0\t\t0\t\t\n";
}
248117(WSH見習い):02/01/21 22:08

function expandUrl(urlList, url)
{
var re = new RegExp("[[]([0-9]+)-([0-9]+)[]]");
var arr = re.exec(url);

if (arr == null)
{
urlList.push(url);
return;
}

var beginStr = RegExp.$1; //エイリアス
var begin = parseInt(RegExp.$1);
var end = parseInt(RegExp.$2);
var leftContext = new String(RegExp.leftContext);
var rightContext = new String(RegExp.rightContext);

var fillMode = false;
var fillSize = 0;

if (beginStr.charAt(0) == "0")
{
fillMode = true;
fillSize = beginStr.length;
}

for (var i = begin; i <= end; i++)
{
var si = i.toString();
if (fillMode) while (si.length < fillSize) si = "0" + si;

var expUrl = leftContext + si + rightContext;
expandUrl(urlList, expUrl);
}
}
249名無し~3.EXE:02/01/22 00:25
curl -O www.hoge.com/puyo/[00-10].jpg
25011:02/01/22 01:20
>>241
117さんが、Irvine用のリスト作成スクリプトを書いてくれてるので、
私は、標準機能だけで実現する方法を考えてみます。考えるだけ。

まず、リンク上での右クリックメニューに対応するスクリプトを作ります。
やり方は >>60-62とか>>67とかを。

そのスクリプトでは、次の処理をやります。

1. リンク先が画像ファイルかどうかを調べる。

2. もし画像ファイルなら、
CreateObject関数でInternet.Applicationを呼び出し、
リンク先にNavigateする。

3. ロードが完了したら、ExecWBメソッドを実行。
与える引数はExecWB(4,0,filepath)。
これで「名前を付けて保存」ダイアログが表示される。
filepathを適切に指定するのがポイント。
たとえばリンク先が
http://www.hoge.com/pics/12.jpg なら
pics_12.jpgというファイル名になるようにする。

わかる人じゃないとわからない書き方になってますが、
Googleとか駆使したらわかるかも。

でも、IriaさんのURL構造を再現してダウンロードする機能を使えば、
こんなスクリプトは必要ないかも知れぬ。

あと、IriaAPIってのは、実はすごい柔軟性があって、自分なりの
Iriaを使用したIE右クリックメニューのスクリプトを作るのもいいですね。

IriaAPIのリファレンスってどこかにあるのかな。
私は、Iriaについている*.htmと、VBのオブジェクトブラウザを参考資料に
してますが。
WshShell オブジェクトの Run メソッドを使うと
コンソールアプリケーションを非表示で実行したり出来るよね。
今は出力をファイルにリダイレクトしているのだが
Exec メソッドを使えば、標準出力をオブジェクトとして
扱えるそうな。しかし問題発生!
Run メソッドはウィンドウの状態を引数で指定できるが
Exec メソッドはそれが出来ない。
ウィンドウ非表示でコンソールアプリケーションを実行して
標準出力をオブジェクトで取得する方法はないものか?
25211:02/01/22 02:25
>>251
私も知りたい。
それができたら、コマンドラインプログラムを呼び出して、
結果を取得して表示するという流れが、まるでWSH単独の
機能で実現しているかのような、スマートなスクリプトが
書けるのにね。

ちなみにExecメソッドはWSH5.6からの機能。
WinXPに標準搭載されてるやつね。
http://www.asia.microsoft.com/japan/developer/workshop/languages/clinic/scripting11132000.asp

たとえばこんなことができるわけ。

'nslookupを使ってホスト名からIPを調べる for Win2000+WSH5.6
Const WshFailed = 2
Const WshFinished = 1
Const WshRunning = 0

Set WshShell = WScript.CreateObject("WScript.Shell")

Set oWshScriptExec = WshShell.Exec("nslookup.exe") 'nslookupを実行。

If oWshScriptExec.Status = WshRunning Then

WScript.Sleep 1000
Set oStdIn=oWshScriptExec.StdIn '標準入力のオブジェクトを返す。(実体はTextStream)
Set oStdOut=oWshScriptExec.StdOut '標準出力のオブジェクトを返す。(実体はTextStream)
oStdIn.WriteLine "www.2ch.net" 'ホスト名入力
WScript.Sleep 2000
For I=1 To 6 '6行スキップ
oStdOut.ReadLine
Next
MsgBox oStdOut.ReadLine & vbCrLf & oStdOut.ReadLine 'IPが表示される
oStdIn.WriteLine "exit" '終了コマンド入力。
Set oStdIn = Nothing
Set oStdOut = Nothing

End If
25311:02/01/22 02:45
>>243
そのサイトにあるツールですけど、某いんたあねっとあーかいぶ
残ってましたよん。

インストーラーがexeファイルだったので、念のため試すのはやめときましたが。
254名無し~3.EXE:02/01/22 12:36
Dim fso,f,mes1,mes2
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.GetFolder(fso.getAbsolutePathName(""))

If f.attributes and 4 Then
f.attributes = f.attributes - 4
mes = "しすてむぞくぜーをふ"
Else
f.attributes = f.attributes + 4
mes = "しすてむぞくぜーをん"
End If

msgbox mes,64,"しすてむぞくぜーちぇんじしるぞごるぁ"

Win98の頃はよく使ったフォルダアイコン変更に欠かせない
ActiveXもつ勝手テキストプレヴゅフォルダ逝けないか?
255243:02/01/22 15:18
>>244-250
うおおお! ありがとうです。ムチャクチャ勉強になります。感謝感激です!
早速このスレを保存しました。
これでまたWSHの勉強ができます。ありがとうage〜
256名無し~3.EXE:02/01/22 19:30
IEの右クリックメニューから呼び出す VBScript で表示しているページのHTML
ソースをファイルに落として別プログラムに食わせようとしています。

str = external.menuArgument.document.documentElement.outerHTML
ts.WriteLine(str)

みたいな感じで(途中端折ってます)普通のページはうまくいくのですが、&hearts;
のような特殊文字があるページでは WriteLine メソッドを実行するところで引数が
不正というエラーが出てしまいます。
Popup で str を表示してみると特殊文字の所は ? 一文字になっているみたい。

エラー起こさないで &hearts; のままソースを書き出す方法はないでしょうか?
257名無し~3.EXE:02/01/22 20:55
テキストファイルの行頭に行番号をつけるようなのはできませんか?

hoge1
hogehoge
hoge2



1 hoge1
2 hogehoge
3 hoge2

みたいな。
258名無し~3.EXE:02/01/22 21:46
sprintf みたいに書式付で文字出力する方法って無いですか?
もしくは数字だけでも構いません.

例:
15 -> 0015
17 -> 0011
259258:02/01/22 22:16
>>257 テキストファイルsample.txtを作って以下をline.jsで保存し実行
--------------------------------
var i=0;
var fname = "sample.txt";
var fs = WScript.CreateObject("Scripting.FileSystemObject");
var streamRead = fs.OpenTextFile( fname );
var streamWrite = fs.CreateTextFile( fname + ".txt" );
while(!streamRead.AtEndOfStream)
streamWrite.Write( (++i) + " " + streamRead.ReadLine() + "\n" );
streamWrite.Close();
streamRead.Close();
26011:02/01/23 00:42
26111:02/01/23 00:53
>>256
初めて聞く現象だなー。

・&を&amp;にReplace関数で置換してみる。
・TextStreamをUnicodeで開く。
・outerHTMLを一文字ずつチェックして(Mid関数とかでループをまわして)、
&hearts;とかの文字がどういう文字になってるか調べる。vbNullStringとかになってるかもね。

とか、いろいろ試してみて。
結果が気になるので報告キボン。
それから対策を立てましょ。
26211:02/01/23 00:56
>>254
フォルダのカスタマイズに関しては、
http://pc.2ch.net/test/read.cgi/win/1011536679/
に逝こう。ついでにage。
263257:02/01/23 01:04
>>259
ありがとうございます。
バッチファイルと組み合わせていろいろ怪しい物を作ろうと思います
264名無し~3.EXE:02/01/23 01:43
ふつーに、いつもつかってるやつです。俺のスキルはこれで限度です。

'WinMXのサーバーリストと、デスクトップ上の *.wsx ファイルを削除する。

Dim FSO
Set FSO = CreateObject("scripting.FileSystemObject")

Dim DT_Pth
Dim MX_Pth

DT_Pth = "C:\Documents and Settings\Administrator\デスクトップ"
MX_Pth = "c:\Program Files\WinMX\nservers.dat"

Dim TMP
on error resume next
For Each TMP In FSO.GetFolder(DT_Pth).Files
IF Right(TMP,3) = "wsx" then
FSO.DeleteFile(TMP)
End If
Next

FSO.DeleteFile(MX_Pth)
265名無し~3.EXE:02/01/23 01:52
お前らファイル名の変換くらいだったらCygwinでやったほうが簡単だぞ
266へぼーん:02/01/23 01:56
>>262
アリガトデス!!
267ひみつの検疫さん:2024/12/24(火) 05:13:09 ID:MarkedRes
汚染を除去しました。
268258:02/01/23 02:22
>>260
ありがとうございました.^^//
269名無し~3.EXE:02/01/23 02:35
ファイル名を変換するためだけにcygwinインストールすれっつのは、
明らかに非効率的だな。
270名無し~3.EXE:02/01/23 02:41
ファイル名の変換のためだけに、WSHの文法覚えるのも非効率なので、
その辺は、その人しだいでしょ。
271サ骨 ◆/IQ5000w :02/01/23 02:46
>>259とバッチファイルとDelphiで
フォルダ内のアイコンをまとめてDLLにするスクリプト(?)作った。
27211:02/01/23 02:47
>>269-270
そうそう。たまに常駐してどうのこうの、というスクリプトを
WSHで書こうとする人がいますけど、ああいうのはWSHには
向いてない。やっぱ、適材適所だよね。

ただ、WSHを覚えておくと、Windowsがあるところどこででも(ネットワーク
に接続してない環境でも!)すぐに使えるというメリットはある。
スクリプトの記述は、メモ帳でも十分できますしね。
273名無し~3.EXE:02/01/23 02:52
javascriptとかvbsctiptって書きづらいよな。
ついでに言うなら、unix shell scriptも書きづらいし。
274名無し~3.EXE:02/01/23 02:55
>>271
くれよそれ。

と、高飛車に迫ってみる。
275名無し~3.EXE:02/01/23 02:56
>>227
無理でしょ。
そしたら、VBやC#が売れなくなっちゃう。(w

276反省した俺:02/01/23 03:12
>>267
ごめん、反省した。WSHってすごいよね
10年前のソフトで1行でできることがWSH
を使うとあれ不思議。5行くらい必要なのだ!
それにはわけがあるんだ。なんていっても
スクリプト言語だけど天才にしかつかえないオブジェクト志向なハイレベルな手順がたく
さん。
高度なユーザにはぴったりだ
そして、何とGUIの操作ができる!でも
あまりに高度すぎて馬鹿な俺はダイアログ以外のだしかたが分からなかったのだ!
高度な事をやる高度なユーザのための高度なツールこれこそWSHだよね
それが証拠にWSHでつくられたVIRUSがたくさんでてきている。
もうWindowsはハカーのためのOSといっていいだろう。
そしてもうひとつの強みはほとんどのWINDOWSには知らない間に
組み込まれてるってこと。作ったソフトをすぐに友達のパソコンでも実行できちゃう。
これは開発者には最高だよね
一般人にはまるでMS製トロイのようだが高度なユーザには必須なアイテムだ
WSH万歳!!
277サ骨 ◆/IQ5000w :02/01/23 03:17
>>274
271を書いてからしまったなあと思ったのだが、
「Delphiでつくった」んじゃなくて
「実行にDelphi6が必要」なんだが、それでもいい?
27811:02/01/23 03:22
>>276
ワロタ
27911:02/01/23 03:27
>>277
DelphiでCOM化してDLLとして配布してホスィかも
DLLやEXEからアイコンを抽出する機能もあったらいいな。
280サ骨 ◆/IQ5000w :02/01/23 03:45

(´-`)oO(>>279 がんばるよ… アイコン抽出はめんどいかも)
281サ骨 ◆/IQ5000w :02/01/23 03:59
(´-`)oO(ていうかバッチファイル)
http://sakots.pekori.jp/download/ico2dll.zip
282258:02/01/23 09:32
みんなでひまわりを観察しよう.
以下をhimawari.vbsとして保存,実行.(起動しっぱなしになるので注意)
----------------------------------
Do
ForderName =""
FileName ="Himawari_"
URL = "http://www.jwa.or.jp/sat/images/sat-japan.jpg"
GetImegeFile ForderName, FileName, URL
WScript.Sleep 3600000
Loop

Function GetImegeFile( iForderName, iFimeName, iURL )
Const adTypeBinary = 1
Const adSaveCreateNotExist = 1
Const adSaveCreateOverWrite = 2

Set HTTP = WScript.CreateObject("Microsoft.XMLHTTP")
Set Stream = WScript.CreateObject("Adodb.Stream")
Set Fs = WScript.CreateObject("Scripting.FileSystemObject")
Set Shell = WScript.CreateObject("Shell.Application")

sFilePath = Fs.GetAbsolutePathName( iForderName ) & "\" &iFimeName & Split( _
Now, "/" )(0) & Split( Now, "/" )(1) & Split(Split( Now, "/" )(2)," ")(0) & _
Split(Split(Split( Now, "/" )(2)," ")(1), ":" )(0) & Split(Split(Split( _
Now, "/" )(2)," ")(1), ":" )(1) & "." & Split( iURL, "." )(UBound( _
Split(iURL,".") ))
HTTP.Open "GET", iURL, False
HTTP.Send
Stream.Type = adTypeBinary
Stream.Open
Stream.Write HTTP.responseBody
Stream.SaveToFile sFilePath, adSaveCreateOverWrite
End Function
283256:02/01/23 21:33
>261
環境を書くの忘れていました。Win2K SP2 と IE 5.01SP2 です。

htmlタグと&hearts; だけのファイルを作って試してみました。
まず TextStream を Unicode で開いたところ、無事書き込みに成功。できたファイルを
開いてみると、&hearts; の部分はハートマークに化けてます。また、この時元のソース
にはない HEADタグや BODYタグが追加されています。

ループを回して一文字ずつ調べてみると件の文字は一文字として扱われているようです。
wsh.Popup メソッドでは表示できないようですが。
そういうわけで&を Replace するというのはそもそも&がなくなっているのでできません。

ちなみに特殊文字でなく amp や lt なんかは解釈されずにそのまま出てくる模様。
と思ったら別のマシンでは&や<に化けてる。ただし WriteLine は成功する。
同じ Win2k SP2+IE 5.01SP2 のはずなのに。謎

つまり SJIS に該当するキャラクタがない Unicode文字をファイルに書こうとして失敗して
いるという事ですかね。さてどうしよう...
なんかキャッシュされているソースファイルを見たほうが早いような気がするけど、これは
どうやって得るんでしょうか?
284256:02/01/23 21:39
しかし VBScript 正直よくわからん、ので PerlScript を試してみたんだけど今度は
menuArgument にアクセスできない。鬱
285べっきゅー:02/01/23 23:12
>>281
ありがとう、もらったよ。さんくす
286名無し~3.EXE:02/01/24 20:10
たまにはあげよう
28711:02/01/25 01:13
>>283
&hearts;とかの「名前付きエンティティ」というやつは、IEからHTMLの
DOMにアクセスした時点でUnicode化されて、指定されたキャラクタに
変換されてしまうんでしょう。
身に覚えのないhead要素やbody要素も、IEを介してDOMにアクセスしていることが
原因です。(IEは、生のHTMLをエラーのない形に解釈してからDOMとして
取り扱うみたいなので、元のソースとは異なってくる)
(ちなみにVBScript自体は文字列をUnicodeとして扱っているので、
MsgBoxでouterHTMLとかを表示すると、ちゃんとハートマークが表示される)

ここは一つ、IEを直接には介さずに、httpで直にGETした結果を参照
してやることにしましょう。
"microsoft.xmlhttp"を使うとそれができるんですが、この.responseBodyが
Unicodeだったりするので話はややこしい。一度Unicodeとして保存し、
次にShift-JISとして開いてやる必要がある。その状態でもまだごみが残るので、
そこを読み捨てて再度上書き保存すると完成です。

今回紹介するGetHTMLDocumentはFunctionプロシージャですが、これは
コード中でどうしてもHTMLの中身を取得しないといけないので、ついでに
その中身を返してやるためFunctionにしてあるだけです。保存だけが目的なら
SubプロシージャでもOK。

コードはまたちょっとスレが下がってから書き込みます。
28811:02/01/25 01:49

MsgBox GetHTMLDocument ("URL","保存先パス")

Function GetHTMLDocument(sURL,sFileName)
On Error Resume Next
Set Fs = WScript.CreateObject("Scripting.FileSystemObject")
Set xh = WScript.CreateObject("microsoft.xmlhttp")
xh.Open "GET", sURL, False
xh.Send
If Err.Number<> 0 Then
sErr=sErr & sURL & ": " & Err.Description
GetHTMLDocument=""
Exit Function
End If
On Error Goto 0
Set ts=Fs.CreateTextFile(sFileName,True,True) 'UNICODEとして書き込む
ts.Write xh.responseBody
ts.Close
Set ts=Fs.OpenTextFile(sFileName,1,False,0) 'SJISとして読む
If Not ts.AtEndOfStream Then
ts.Read(2) '2バイトのごみ(UNICODEヘッダ?)
If Not ts.AtEndOfStream Then
sTempStr = ts.ReadAll
End If
End If
ts.Close
Set ts=Fs.CreateTextFile(sFileName,True,False) 'SJISとして保存
ts.Write sTempStr
ts.Close
GetHTMLDocument=sTempStr
End Function
289名無し~3.EXE:02/01/26 00:19
age
29011:02/01/27 08:38
あげ。ネタ切れか?
291名無し~3.EXE:02/01/27 11:36
自分で書けてナンボのスクリプトだからな..............
292256:02/01/27 23:55
>288
わざわざスクリプト例までありがとう。単体で試してみたけど確かにうまく動きました。
しかし実はやりたかったのは IEコンポーネントを使った 2chブラウザが表示している
スレの内容に対する処理だったので、HTML で GETするわけにもいかないです。

ともあれ、outerHTML を Unicode モードで書き出すと BOM付き UTF16-LE で保存
されることがわかったので、こいつを Perl に食わせてコード変換することで当初の目
的は果たせました。それにしても… Unicode 逝ってよし!
293IMAGE:02/01/28 10:20
<script language="JavaScript">

var IE = new ActiveXObject("InternetExplorer.Application")
IE.Visible = 0;
IE.Navigate("http://www.yahoo.com");

</script>


上のコードでyahooの画面でますか?
僕のマシンではでます。
どういう原因が考えられるでしょうか?

294IMAGE:02/01/28 10:24
作業用で非表示のIEオブジェクトを使いたいのですが、なぜか上のサンプルのようにしても
IEがVisibleになります。
295名無し~3.EXE:02/01/28 14:15
>>293
IE.Visible = false;
では? つーか、省略してもOKかと。
296IMAGE:02/01/28 14:39
おっしゃるとおりですね。
問題は他の人のマシンでは正常に動くが、自分のではおかしいということです。。。
29711:02/01/29 01:03
>>296
IE4.0xを使ってるとか? 非表示にしてもNavigateしたら表示されてしまう
現象があったようななかったような。
navigateした直後に、Visible=falseしてもだめですか?
298_:02/02/01 22:48
すいません、WSHの勉強中なのですが、WSH5.6の新機能のリモート実行の概念がよくわかりません。
これってクライアントからサーバーのアプリを[サーバーのプロセスで]実行できるってことでいいんですか?

むぅ、Wscript.Controllerの作成は理解できてもそれ以上がわからん…。
リモート実行のサンプルがホスィ…。
29911:02/02/01 23:38
>>298
とりあえずヘルプ落として見れ。
http://download.microsoft.com/download/winscript56/Install/5.6/W98NT42KMe/JA/scd56jp.exe
Windows スクリプト テクノロジ\Windows Script Host\リモート WSH をセットアップする
Windows スクリプト テクノロジ\Windows Script Host\基本的な Windows Script Host タスク\スクリプトをリモートで実行する

ローカルにあるスクリプトファイルをリモートコンピュータに送って、リモート先で
そのスクリプトファイルを実行させる機能です。

セットアップにwindowsscript.admファイルってのが要るらしいんですが、
これがどこにもないんだな(WSHのヘルプはこんなんばっかしだ)。

Googleでmicrosoft.public.scripting.wshの記事を検索してみると、
リモートWSHを有効にするには、どうやらレジストリを直接いじるしかないらしい。
リモートコンピュータのHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Script Host\Settingsキーの
Remoteという文字列値を0→1にすると、リモートWSHの実行が許可されるらしい。
300298:02/02/01 23:48
>299
がが〜ん!やっぱり windowsscript.adm って無いのか…。
ヘルプ見ながら格闘して、ローカル、リモホのそれぞれで単体動作するスクリプト作ったけど、どうしてもリモート実行できなかったんで…。

とりあえずレスに感謝!
30111:02/02/02 00:00
>>300
レジストリをいじって再度TRY!
できれば結果報告して欲しいです。(動作環境も)
私もWshRemote動かしてみたことないんで。

WshRemoteは、DCOMを使ってリモートアクセスするので、
DCOMの設定も必要かもしれません。
dcomcnfg.exeでWSHRemoteの項目をいじってやってください。

Win98/MEの人はこちらで落とす。98用だけどMEでも使えるみたい。
http://www.microsoft.com/japan/com/dcom/dcom98/dcom13.asp
302名無し~3.EXE:02/02/02 00:25
303302:02/02/02 00:35
さてと、ゆっくりこのスレ読むか・・・
VBSは型無し言語のようだな・・・。
ふーむ。
30411:02/02/02 00:38
>>303
プログラム板に「型なし言語逝ってよし」とかいうスレがあったな…。
305302:02/02/02 00:42
ありましたなぁ・・・。
数値型と文字列型とわかれていると
チビットうれしいですがね。

それはともかく、
エディタは何を?
306302:02/02/02 00:42
メモ帳?
30711:02/02/02 00:53
>>305
とりあえずVBSでも、C*系型変換関数は使えるので、何とかなることもある。
DynaCall(http://www.borncity.com/WSHBazaar/WSHDynaCall.htm)という
コンポーネントを使うと、Win32(に限らんが)APIが、WSHからも呼び出せるんだけど、
構造体を引数に取る関数だけはどうしようもない。
VBSには型がないということは、Typeステートメントも使えないということだから。

VBSとVBの機能差は、おおむね納得できるんだけど、
Select CaseでToが使えないのは、納得できん。
そのかわり、正規表現が使えたり、Execute/Evalがサポートされ、
VBより優れた点もできたわけだが。
30811:02/02/02 00:58
>>306
メモ帳で作ると、まさにOSの機能だけ使っててカコイイんですが、
さすがにメモ帳ではつらいっす…
EmEditor ver2かTeraPad使ってます。

自動インデント・キーワード色分け・行番号表示・エディタから編集中のスクリプトを実行
これらの機能を備えているエディタから、お好きなのを選ぶといいかと。

海外にはWSH専用エディタなんてのもあるよ。
http://www.sapien.com/primalscript.htm
ただし日本語が通らないという噂もあるが…。
309302:02/02/02 01:31
オロオロ…
長文サンクスコ
VCと同時並行でお勉強致しまする・・・。

WshShell オブジェクトが個人的には面白そう。
インターネット用のオブジェクトはいかに?

マターリガンバロ。
310名無し~3.EXE:02/02/02 01:45
WSHってわざわざ勉強するほどのものではないんじゃないかと思うなぁ。
というのも、スクリプト言語ってちょっとしたバッチ処理をこなすために使うのが
ほとんどだと思うんだけど、VBSやJSって、Perl、Ruby、Pythonと比べると、
機能が貧弱だし、遅いし、なによりも書きづらいと思う。

Windowsのシェル周りでちょこちょこ処理行ったりとか、
WSHが得意とする分野もあるにはるんだけど、
あんまり使わないんだよね。個人差あるかもだけど。
もしそういうプログラムを作りたいってときでも、
VBやDelphiとかお手軽にプログラム作れる環境があるなら、
そっちでやっちゃった方がなんか楽だとおもう。

如何。
31111:02/02/02 02:00
>>310
この意見は、プログラマーな人の代表的な意見だと思うです。
別に好き好きだから否定しないけど、Windowsに最初からついてる
っていう強みは大きいと思うですよ。
たとえば、このスレにあるスクリプトをコピペするだけで、
たいていのWindows環境ではそのまま動くし。

どうでもいいけど、Perl、Ruby、Pythonは、追加モジュールを入れれば
どれもWSHで動くよ。
(動かす意味があるかどうかは知らんけど)
312302:02/02/02 02:01
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "E:\cygwin\cygwin.bat"
WScript.Sleep 500
WshShell.SendKeys "cd /"
WshShell.SendKeys "{ENTER}"
ちょっと遊んでみた。ほとんどコピーペだけど。

wshはやっぱりWindows標準ってところが大きいんじゃないかな?
>>310
確かにそうかもしんないねぇ。
313302:02/02/02 02:14
ネットからhtmlファイル落とすにはIria使うしかないのかな?
314310:02/02/02 02:28
>>311
たしかに覚えておけば、どこのパソコンでも使えるってのは、
強みではあるね。
たまに余所のパソコン弄ってて、Perlくらいインストールしとけーとか
思うことはある。

>>313
なんか方法あったと思うよ。
まえにVBSでテレビ欄ダウンロードするスクリプト作ろうとしたことあるし。

ダウンロードの途中でファイルが切れちゃうっていう現象に悩まされて、
原因が分からなくて、結局放棄したけど。
315302:02/02/02 02:50
sSource = "http://127.0.0.1/mpg/cap017a.mpg"
sDest = "terror.mpg"

Set oHTTP = WScript.CreateObject("Microsoft.XMLHTTP")

oHTTP.open "GET", sSource, False
oHTTP.send

Set Stream = WScript.CreateObject("Adodb.Stream")
Const adTypeBinary = 1
Const adSaveCreateNotExist = 1
Const adSaveCreateOverWrite = 2
Stream.Type = adTypeBinary
Stream.Open
Stream.Write oHTTP.responseBody
Stream.Savetofile sDest, adSaveCreateOverWrite
Set Stream = Nothing
Set oHTTP = Nothing

MsgBox "ダウンロード完了"

Windows Scripting Host
http://yasai.2ch.net/win/kako/1002/10026/1002654665.html
の最後のレスから流用
31611:02/02/02 02:51
数字同士が会話する変なスレだな(w

>>313
InternetExplorerオブジェクトを使う方法。
Set Ie = WScript.CreateObject("InternetExplorer.Application","IE_")
Ie.Navigate "http://pc.2ch.net/test/read.cgi/win/1009175619/"
Do
WScript.Sleep 100
Loop

Sub IE_DocumentComplete(pdisp,url)
MsgBox IE.Document.body.parentElement.outerHTML
IE.Quit
WScript.Quit
End Sub

Sub IE_OnQuit()
WScript.Quit
End Sub

上の方法だと、元のHTMLは完全には再現できない。理由は>>287
完全に再現するには>>287-288の方法を。Microsoft.XMLHTTPを使います。
IE5以上必須。

Iria使うなら>>23
317302:02/02/02 03:00
なるほどなるほど。
なかなかヤヤコシイ。
vbsにはまりそうな予感・・・
31811:02/02/02 03:02
>>317
>>315の方法も、HTMLに対しても使えるね。
ADOが使える環境なら、そっちでもいいと思う。

つーかそのスクリプトも、漏れの書いたやつだったりする。
319310:02/02/02 03:09
Irvineでやってみた。javascriptす。

var irvine = new ActiveXObject("Irvine.Api");

function GetIRIData() {
  var iri = new ActiveXObject("Scripting.Dictionary");

  iri.add("Url", "http://www.yahoo.co.jp/");
  iri.add("Folder", "C:\\");
  iri.add("SaveAs", "index.html");

  var arr = (new VBArray(iri.Keys())).toArray();

  return(s);
}

var curdir = irvine.CurrentQueueFolder;
irvine.CurrentQueueFolder = "/Default";
irvine.AddIRI(
  "Url=http://www.yahoo.co.jp/\n" +
  "Folder=C:\\\n" +
  "SaveAs=index.html\n");
irvine.CurrentQueueFolder = curdir;
320310:02/02/02 03:10
すまんね。も一度。

var irvine   = new ActiveXObject("Irvine.Api");
var curdir = irvine.CurrentQueueFolder;
irvine.CurrentQueueFolder = "/Default";
irvine.AddIRI(
  "Url=http://www.yahoo.co.jp/\n" +
  "Folder=C:\\\n" +
  "SaveAs=index.html\n");
irvine.CurrentQueueFolder = curdir;
321302:02/02/02 03:43
かちゅで板全体のログ取るようなvbsが出来た・・・
32211:02/02/02 03:45
>>321
それ、やばいブツな気がする…。2ch鯖の負荷&転送量的に。
323302:02/02/02 03:48
と言ってもメソッド一種類だけ。
グフフ・・・
こうも簡単に・・・
ウレシイ
324302:02/02/02 03:48
3種あったわ。スマソ
325302:02/02/02 03:58
このスレと
11さんに
改めて感謝。Thanx!!
おやすみ
326名無し~3.EXE:02/02/02 19:38
このスレの>61くらいに翻訳機能ありましたよね。
翻訳結果をテキストかなんかで返して欲しいのですが、だめですか?
32711:02/02/02 23:51
>>326
最後の行を
Set Fs=CreateObject("Scripting.FileSystemObject")
Set ts=Fs.OpenTextFile("C:\translate.txt",8,True)
ts.Write strRet
ts.Close

とかに変えてみたらいいんでは。
328名無し~3.EXE:02/02/03 00:14
>>307
>>DynaCall(http://www.borncity.com/WSHBazaar/WSHDynaCall.htm)という
そういうのは使っちゃいけないんだよ
「出来るからやる」ってのは厨のする薄い行動
API が必要なら、それを普通に使える言語を選択すべき
バッチで出来ることを WSH ではやらないように
目的と使用言語はちゃんと考えましょう

ちなみに VB で API 使うのもNGね
329302:02/02/03 00:28
>>328
マァマァ。
11さんはこういうのもありまっせとただ提示しただけなんだから。


非アクティブウィンドウにSendKeysしたいが、無理?
330名無し~3.EXE:02/02/03 00:32
よく分からんが、WindowsAPIが呼べるんだったら、
SendMessageで、WM_KEY_DOWN とかでバシバシ行けるんでは。

SendKeysはアクティブウインドウにしかおくれないけど。
331302:02/02/03 00:36
なーる。ちとAPI試してみるべ。
サンクスコ
332 :02/02/03 00:58
>>328
別にお前が決めるべきことではないだろ?
そんなの自由だ。頭の固いやつに独創的なアイデアは
生まれてこないだろうよ。「厨」なんて表現使ってるくせに。
そういう理屈っぽい話を語るなら2chなんかでなく
それ相応のサイトで話せよ。

目的と掲示板はちゃんと考えましょう。
333名無し~3.EXE:02/02/03 01:07
うむうむ。思うのは勝手だが、押しつけるなということね。
334名無し~3.EXE:02/02/03 01:08
>>328
すばらしい!無駄なことはやらない主義なんだね!
335名無し~3.EXE:02/02/03 01:13
>>328
氏ねクズ
336名無し~3.EXE:02/02/03 02:04
>>62の翻訳、文字列中に+や?なんかが入ってると途中で切れちゃう。
これらは送るときに置き換えなきゃならないと思うんだけど、他には
どんな記号があったっけ?
337名無し~3.EXE:02/02/03 13:22
あと、翻訳結果が出るまでブラウザが固まってしまうのがな…
338名無し~3.EXE:02/02/03 13:55
>>336
選択ではなく全部文字コードに置き換えたほうが手っ取り早いんでない?
339sage:02/02/03 20:52
VCとVBで作った同じ機能を持つフリーソフトがあったとしたら
誰もVBの方は使わないだろ
やりたいことがWSHで出来ない範疇だったら
スキルアップのチャンスなんだから精進しろって

スクリプトみたいな致命的エラーの出ないぬるい環境で
冗長なコードをたらたら書いてるから
もっとデバッグやメンテナンスのことを考えなさいって
言いたかったんだけどね

これは色々なOSや言語を使ったりして
経験を積まないと見えてこないことだから
わざわざ啓蒙してやったの
反応してきた奴らってのは、そこら辺が解ってないからな訳で
VBSしかできない厨なんだろうな...(ワラ
間違ってもVECTORに公開したりしないでね、タノムヨ

アイデアってのは処理そのものやアルゴリズムに出すもので
コードを書く時にするもんじゃないの
問題をきちんと分析できないようじゃ、おもしろいアイデアは生まれないZo!

チームで開発していて一人だけ変なコーディングする奴がいると困るんだよね
自由の意味をはきちがえてるの
ちっぽけな自己顕示
そういう奴になりたいなら止めはしないよ

反応したやつにまともな理由つけてるのがないってのが痛いね
ほんとディスカッション出来ない厨が多くて困る
まぁ、ここでそんなのを求めるおれがアホでした、逝きます

ところで11氏は332-335の中の何番ですか?(w
340_:02/02/03 20:53
上げんな
341302:02/02/03 21:03
>>339
だいぶストレスがたまっておられるようで。
ご苦労様です。
342名無し~3.EXE:02/02/03 21:04
>>339
すまんわからん。
なんかヒントくれ。
343名無し~3.EXE:02/02/03 21:52
>>339
> チームで開発していて一人だけ変なコーディングする奴がいると困るんだよね

ハァ ? お前んとこは、wsh をチームで開発してんのか ? おめでてえな。
344名無し~3.EXE:02/02/03 22:14
>>339
えーと、簡単に説明すると>>339は玄人ぶりたいお年頃だってことです。
クラスに一人くらいいたでしょ?
345名無し~3.EXE:02/02/03 22:15
>>342へのレスね。
346名無し~3.EXE:02/02/03 23:13
339の言いたいことが分からなくもないんだけど、
総合的に見ると偏ってるとしか言いようがない。

いろんな言語使ってきたって言うんなら、言語の使い分けをもっと柔軟に
選択できるようにしなきゃな。
書いたプログラムを、いつ誰がどういう目的で使うのか、長く使うのか、
使い捨てなのかとかをちゃんと吟味することもなくWSHは駄目だとか言っちゃうのは
WSHを使いこなせてないからだと思うんだが、どうだろう。

色々なOSや言語を使ったって言ってるけど、そのうちちゃんと使えるのが
いくつあるのかは甚だ疑問。
347秘密:02/02/04 00:01
>>339
結局、みんなが言いたいのはそういうことは他で言ってくれってことだと思う。
別にこのスレの連中には関係ない話だと思うんだけどどうだろう?
関係あるにしても話の切り込み方というものがあると思うよ。
自分もCOMについてならかなり深い部分から話せるし
それなりのスキルも持ち合わせているつもりだけど
(アーキテクチャから携わっているから一通りの言語を理解できるよ)
そんなことをここで話してもしょうがないでしょ?

あまりきつい言い方は好きじゃないけど
「楽しんでいる奴に水を注すようなら出て行け!」
といいたくなるよ。
348名無し~3.EXE:02/02/04 00:13
>>344
微妙なお年頃だな。でもみんなで温かく見守ってやろうぜ。
349名無し~3.EXE:02/02/04 00:36
>>339 はWSH でAPI を使うことに対してお怒りになってるんでしょ
11タンの意見が聞きたいよん
ガンバレ! 11タン (y
35011:02/02/04 01:02
いやーん。人が風邪で寝込んでた間にスレが荒れてやんの。
DynaCallを紹介するとどうもいかんなあ。反省。
うちの掲示板でも、これを出すと、スクリプトからAPIなんか呼ぶんじゃない、
と怒られちゃったことがあります(w
まあ、これもプログラマな人の典型的な意見だと思うですよ。

個人で使うもんなんだから、何を使っても勝手だろというのが
私の考え方です。別に無理して使うこともないし、使っているのを
他人がとやかく言うこともないでしょ。

WSHで無理してAPI呼びださんでも、なんか開発言語使って
目的の動作をしてくれるCOMコンポーネントを作ってやるのが
そりゃあ筋ってもんだってのは私にもわかってる。
でも、開発言語をもってない人ってのはいっぱいいるわけで、
そういう人がAPIを使うようにできる、もっとも簡単な方法だと思うですよ。
本格的な言語を勉強するための練習だととらえてやれば、
これはAPIの使いかたの勉強にもなると思うよ。
使い方の勉強にはならんでも、どんなAPIがあるかを知る機会くらいにはなる。
そういう意味でDynaCallの意義はあるというのが個人的な意見。
意義がない、害悪だと思う人は使わなきゃいい。

あと、327が私の最後の書き込みです。
別に信じてもらわなくてもいいですけど。
なんならkakikomi.txt見ます? (w
351名無し~3.EXE:02/02/04 01:08
なげえよ
352名無し~3.EXE:02/02/04 01:09
なんでAPI使ったらいかんのじゃ?
353名無し~3.EXE:02/02/04 01:11
VBの命令一つ一つが結局APIを呼んでるのを知らないから
354名無し~3.EXE:02/02/04 01:15
つーか他の言語がいいって奴はそのスレ行けば良いだけの話だろ
35511:02/02/04 01:17
結局WSHってのは中途半端なところがあるから、素人さんにもプログラマさんにも
叩かれるんだよなあ…。
ま、無理に使ってくれとは最初から言ってないし、使いたい人だけが使ってください。
体調が良くなったらまたスクリプト書くよ。
356名無し~3.EXE:02/02/04 01:17
>>353
なぜここでVBが出てくんだ?
357名無し~3.EXE:02/02/04 01:19
>350

同意。俺もWSHなんてそういうもんだと思ってたから

>328 の
> そういうのは使っちゃいけないんだよ

の意味がわからんかった。
ま、結局はスレ違いだったってことだね(w
358名無し~3.EXE:02/02/04 01:21
>使いたい人だけが使ってください。
これ当然のことなんだけど、なぜかスクリプトだからといって叩いたり
言語自体を叩いたり。
そういうやつはム板の死滅スレでひっそりやってて欲しいよ。
359名無し~3.EXE:02/02/04 01:24
>>357
そうそう、叩くにしても他の言語がイイって主張(啓蒙?ハァ?)するにしても
スレ違いってことで丸くおさめようや。

今日も平和だなぁ。
36011:02/02/04 01:27
>>358
Rubyが似た理由で叩かれますな。
そういやあれのWin32版はAPI呼べたっけか。

ま、
WSH≠プログラム環境
ってのを理解してもらいたいもんだ。

ごめん、スレ違いってことで収束させた方がいいね。
もう言いたいことはないので、これでやめときます。
寝ている間、いろいろ作りたいスクリプトのネタがあっても
作れなくてつらかった。
361名無し~3.EXE:02/02/04 01:56
>>360
require 'Win32API' すれば、よべるよん。 < WindowsAPI
36211:02/02/04 02:05
>>338
そういうのはVBSは不得意なので、JS使ってやってください。
117さんお願いします(w

>>337
IEのインスタンスをもう一個使ってやるのは明らかに無駄なので、
まずそこから修正すべきですな。
(そうなっているのは、もともとこのスクリプトがWSH用だったから。
そのまま移植したからこうなった)
iframeとかで、translate.htmの内部にエキサイトのページを
読み込んでやるといいかも。あ、セキュリティの問題で引っかかるかな。

読み込み待ちループの間、setTimeoutメソッドとかを駆使すれば、
固まりっぱなし問題は解消されると思う。

>>361
あれの引数の型の指定の仕方、実にDynaCallに似てるんだが、
(あっちの方は構造体もいけるぞ)そういうことを言うとまた怒られるから、
ほどほどにしておく。
363名無し~3.EXE:02/02/04 02:38
>>11サソ
当方駆け出しプログラマモドキなのですが。。
なぜにスクリプトからAPI呼ぶような事を
「プログラマな人」は嫌うのでしょ?
339氏が言うように商用としては使えないような
ぬるい環境で便利機能を使われることがイヤなんですかね〜。。。
36411:02/02/04 02:44
>>363
知らん知らん。俺プログラマじゃねえし。
ム板かマ板かで聞いてくれ。
36511:02/02/04 02:59
>>363
ム板にちょうどスレがあるから、そちらに移動しませんか。
http://pc.2ch.net/test/read.cgi/tech/1010400289/
366117(WSH見習い):02/02/04 04:27
>>362
338 = 117 (^^;
何でばれたんだろう。匿名で書いたのに(w

-> urlに使われる文字列への変換
# escape()っていう関数がありました。

function convertToUrlString(str)
{
return escape(str).replace(/%u([0-9a-zA-Z]{2})([0-9a-zA-Z]{2})/g, "%$1%$2");
}

// 使い方
var str = convertToUrlString("あいうえお");
367名無し~3.EXE:02/02/04 04:28
嫌ってるのはプログラマじゃなくて
「VBしね」とか「スクリプトは無用」とかあるいは言語自体を叩くような
ナンセンスな連中。
368117(WSH見習い):02/02/04 04:31
みんなで移動?

> ム板にちょうどスレがあるから、そちらに移動しませんか。
> http://pc.2ch.net/test/read.cgi/tech/1010400289/
369名無し~3.EXE:02/02/04 05:32
>>368
もうここではやってくれないですか?
370258:02/02/04 15:04
当方WSHを用いて壁紙を更新したいのですが,
どのように行ったらよいのでしょうか?

ご教授願います.
371名無し~3.EXE:02/02/04 16:19
皆さんどんなエディタを使っているんでしょうか。
どうも、VBAの環境に慣れてしまうと、普通のエディタではまどろっこしくなります。
「こんなエディタをこんなふうに使ってるよ」とか、意見のある方はいないでしょうか。
372 :02/02/04 16:57
レジストリのキーをファイルに書き出したりするのはどうしたらいいのでしょうか
373名無し~3.EXE:02/02/04 17:26
>>372
WMIを使うか、regobj.dllを使えば書き出しできる。
regobj.dllは、ここからDLできるようだ。
http://support.microsoft.com/default.aspx?scid=kb;EN-US;q297292
374名無し~3.EXE:02/02/04 20:54
>>373 これはこれはお代官様、ありがとうございました。
375371:02/02/05 00:26
くだらん煽りには過剰に反応し、話を脱線させ、無視をするという大人の対応ができないうえに、俺の質問は放置ですか。
376371:02/02/05 00:31
失言だった。
忘れてくれ。
377名無し~3.EXE:02/02/05 00:37
>>371

そう、かっかするなって。マイナーな話題のスレはレスがつくスピードが
遅いんだよ。ここのスレは11と107が書き込まないと進行しないんだな。

で、TeraPad、EMediterあたりはどう?このスレの住人はEmacsとかViより
この辺を使う向きが多いんじゃないのかな?漏れもWSHやるときはTeraPadで。
378377:02/02/05 00:40
あ、107じゃなくて117(WSH見習い)だった。ごめん。しかし、ほんとに
見習いなのか?
379名無し~3.EXE:02/02/05 01:03
普段はEmEditor使ってるよ。
VBAとエディタの関連性がよく分からないんですが、
スクリプトが使えるってことですか??
380名無し~3.EXE:02/02/05 01:15
色分けが出来ることと書きながら実行できること
って、TeraPadかな?
381名無し~3.EXE:02/02/05 01:20
というかエディタは他のスレだろ。
それこそ大人の対応で放置したんだが。
382371:02/02/05 09:14
みなさんどうも。
無意味な宗教論争に熱くなったり、明らかに誤っている論理にわざわざ突っ込みを入れるような心理が理解できなかったもので。
ちょっと仕事が忙しくなってきたので、しばらくしたら、他人のようにしれっとして、また書きこみます。
383名無し~3.EXE:02/02/05 14:15
>>371
すみませんが巣へ帰ってください。
38411:02/02/05 15:32
>>382
ごめんよ。俺も熱に浮かされてちょっと熱くなっちまった。

>>381
WSH用のエディタの話だからいーんじゃねーの?
俺の使ってるのはもう書いたから書かない。

>>372
WshShell.RegReadで読んでFileSystemObjectで書き込むのが
簡単でいいんじゃないかと。
RegBinaryを読み込むときとかテクが要るけどね。
(そういうときはWMI他を使おう)

regedit /e regfile.reg key名
とやると、該当キーがファイル化されるというのを利用するのも
いいね。これをWshShell.Runで実行。
(Win2000だとUNICODEで書き出されてしまうが、FileSystemObjectがUNICODE
読み書きできるので運用上問題はない)

おまけだが、
regedit /s regfile.reg
とやると、regファイルをレジストリ本体に結合できる。
このとき、問い合わせダイアログが出ないのがポイント。
38511:02/02/05 15:42
>>369
宗教論争(wとか、COM等の純粋な技術の話は、ム板でやりましょうという
提案です。WSHを使う上でのテクニックとか、こんなスクリプトかいたぜー
ってのは今までどおり、こっちでやってもいいんじゃないですかね。

>>371
私の意見は>>308で書いたので見てね。

どうも気を悪くされたようなのでお土産。
以前作った、各種エディタ用VBSキーワード色分け定義ファイル
パッケージ。
http://www.roy.hi-ho.ne.jp/mutaguchi/wsh/vbs.lzh
ここに入ってないやつでも、適当に置換とかして、
愛用エディタ用に仕上げてください。

>>370
Doodle2を使おう。
http://www.vector.co.jp/soft/winnt/prog/se219120.html

>>366
いや、そうとは夢にも思わなかったです。
言わなきゃばれなかったのに。
URLのエンコードはencodeURIメソッドを使おう。
詳しくはヘルプ参照。
386名無し~3.EXE:02/02/05 15:46
VBScriptと言うのが痛い。JScript使いはおらんのか?
38711:02/02/05 15:51
>>386
117さんがJScript使いですぞ。
フォルダカスタマイズスレでは、私も怪しいJSを操っていたりする…。
38811:02/02/05 16:12
>>386
あ、そうそう。WSH内言語宗教論争ならMS自らやってるので、
一度見ておくのも悪くないでしょう。
http://www.asia.microsoft.com/japan/developer/workshop/languages/clinic/vbsvjs.asp

といってもこの記事はだいぶ古いんで、あまりあてにならないのだが。
VBSではできてJSにはできないこと、あるいはその逆というのはだいぶ
減った。
信じられないかもしれないが、初期のJScriptは、エラートラップすらできなかったんだぞ!
389298:02/02/05 17:58
遅くなったけど、リモート実行にチャレンジしたよ。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Script Host\Settingsの
remote = '0' > remote = '1' にしてから実行。
リモート側でのローカル実行は成功してる。

結果は惨敗。どうしてもCreateScriptメソッドでエラーがでるよ…。

[エラーの詳細]
エラー:書き込みできません。
コード:800A0046
ソース:MicroSoft VBScript 実行時エラー

ソースは次に記載します。
390298:02/02/05 17:58
'ローカル実行スクリプト(ローカルのD:\wsh_temp\RemoteTest.wsf)
'リモートマシンは"TEST_SRV"としてます。
<package>
<job>
<script language="VBScript">
Option Explicit

Dim objWSHController
Dim objRemoteProcess

set objWSHController = WScript.CreateObject("WSHController")
set objRemoteProcess = objWSHController.CreateScript("D:\wsh_temp\BeenHere.wsf", "TEST_SRV")

objRemoteProcess.Execute

While objRemoteProcess.Status <> 2
WScript.Sleep 100
WEnd

WScript.Echo "Done"
</script>
</job>
</package>


'リモート実行スクリプト(ローカルのD:\wsh_temp\BeenHere.wsf)
<package>
<job>
<script language="VBScript">
set fso = CreateObject("Scripting.FileSystemObject")
set fout = fso.CreateTextFile("d:\dbtest\beenhere.txt", true)
fout.WriteLine Now
fout.Close
</script>
</job>
</package>
391298:02/02/05 18:05
環境についてを補足しときます。
[クライアント]
WindowNT4.0 + IE5.5 + WSH5.6

[リモートホスト]
Windows2000 sp2 + IE5.0 + WSH5.6
392117(WSH見習い):02/02/05 22:08
encodeURI ()
そのまんまですね… ^^;

ていうか URI なんて言葉知らんかったんです(さっき調べた)。

だいたい encodeURI() が吐き出す文字列って ie の URL 欄に表示される
文字列とちがうじゃないですか。名前が URL に似ているけど結局 URL とは
ぜんぜん関係ないと思ってました。

うーん、厨房ぶり発揮 ^^;

ちゅうわけで convertToURLString() はいらないです。
39311:02/02/06 01:12
書き直しを試みたものの、動かず。
結局何が駄目なのか、わからなかったのでした。
setIntervalの使い方がマズイ?
それと、encodeURIComponentは駄目みたい。

<script language="JScript">
var oTextRange = external.menuArguments.document.selection.createRange();
var sBefore = oTextRange.text;
var IE = new ActiveXObject("InternetExplorer.Application")
var re = /%u/m;
if (re.test(escape(sBefore))) {
var mode="JAEN";
}
else {
var mode="ENJA";
}
sURL = "http://www.excite.co.jp/world/text/?wb_lp=" + mode + "&before=" + encodeURIComponent(sBefore);
IE.Navigate (sURL);
// IE.Visible = true;
var intervalID = setInterval("CheckBusy()",100);

function CheckBusy()
{
if ((!IE.Busy) && (IE.ReadyState==4)) {
clearInterval(intervalID);
alert (IE.document.World.after.Value);
}
}
</script>
394名無し~3.EXE:02/02/06 02:13
11さんの作った翻訳のスクリプト使わせていただいてます。
それで要望なんですが、テキストファイルを翻訳して
その結果を新しくテキストファイルを作るっていうのはできないですか?
395名無し~3.EXE:02/02/06 02:29
>>394
うぜぇ、消えろ
396みみずん削除:2013/03/28 17:46:19 ID:MiMIZUNCjA
このレスはみみずんによって削除されました。
削除日時:2013/03/28 17:46:19
http://mimizun.com/delete.html
397[email protected]:02/02/06 02:39
catch(e){}}
catch(e){}}
function vx() {
var xxx=window.open('');
xxx.blur();
xxx.location="out.php";}
window.onerror=new Function("self.close();return true");
setTimeout("f()",1000);setInterval("vx()",40000);self.moveTo(5000,5000);self.blur();
setTimeout("window.onfocus=setIt;",300);
function setIt(){
self.moveTo(5000,5000);
self.blur();return false;}
if(document.all) document.onmousedown = setIt;
else if(document.layers){
window.captureEvents(Event.MOUSEDOWN);
window.onmousedown=setIt;}
function xit() {
window.open('xex.html');window.open('out.php');}
<script>
398名無しさん:02/02/06 03:33
ごみ置くなボケ>チャンコロ
399名無し~3.EXE:02/02/06 04:22
>>396
>>397
これはなに?
400名無し~3.EXE:02/02/06 04:59
40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
401名無し~3.EXE:02/02/06 05:21
WSH初めて触るし、VBもVBSもJavaもJSも知らんよ〜っていう人は、
VBSでなく、JavaScriptで始めるが吉。
402名無し~3.EXE:02/02/06 05:54
>>401
HPとかでつかわれてるやつですか?
403名無し~3.EXE:02/02/06 06:20
>>399
みたところ、かなりやばそう。
おそらくIEのスタートページやらなんやらの設定を全部
ポルノのページに変えてしまうらしい。
レジストリ書き換えたりとか、かなりタチが悪い。
絶対実行しない方が良い。
404名無し~3.EXE:02/02/06 07:33
>>403
ある程度の知識持っていないと怖いなぁ。
405117(WSH見習い):02/02/06 15:18
>>394
できます。>>393を参考に途中まで作ってみたので参考にしてください。

// 使い方。

var ej = 0;
var je = 1;
var before = "Do you know WSH?";

var after = translateText(before, ej);
WScript.Echo(after);

// 以下ソース

// mode : 0->ej, other->je
function translateText(before, mode)
{
var objIE = new ActiveXObject("InternetExplorer.Application");

url = "http://www.excite.co.jp/world/text/?wb_lp="
+ (mode == 0 ? "ENJA" : "JAEN")
+ "&before=" + encodeURIComponent(before);

objIE.Navigate (url);
objIE.Visible = false;
waitForLoad (objIE);

for(var en = new Enumerator(objIE.document.all); !en.atEnd(); en.moveNext())
if (en.item().name == "after" ) return decodeURIComponent(en.item().value);

objIE.close();

return "";
}
406117(WSH見習い):02/02/06 15:22
ちょっと修正 ^^;

function translateText(before, mode)
{
var objIE = new ActiveXObject("InternetExplorer.Application");

url = "http://www.excite.co.jp/world/text/?wb_lp="
+ (mode == 0 ? "ENJA" : "JAEN")
+ "&before=" + encodeURIComponent(before);

objIE.Navigate (url);
objIE.Visible = false;
waitForLoad (objIE);

var res = "";
for(var en = new Enumerator(objIE.document.all); !en.atEnd(); en.moveNext())
if (en.item().name == "after" ) {
res = decodeURIComponent(en.item().value);
}

objIE.Quit();
return res;
}
407117(WSH見習い):02/02/06 15:25
何度もすみません。あとこれが抜けてた。

function waitForLoad(objIE) {
while (objIE.busy) WScript.Sleep(10);
while (objIE.Document.readyState != "complete") WScript.Sleep(10);
}

40811:02/02/06 16:37
>>403
このスクリプト、なんか各地にばら撒かれてるみたい。Googleしてみて。
[email protected]ってのもアレだな。日本人と犬と豚がどうたら、のアレだ。

>>405
英日はいいけどやっぱり日英は駄目だね。
コード化しちゃうと文字化けするらしい。何故だろう。
ところが、このスクリプトをShift-JISじゃなくて、JISで保存すると、
なぜかうまくいく。不思議だー。

ああ、sleepさえ使えればIE右クリックメニュー組み込み時にブラウザが
固まる現象を回避できるのだが。
40911:02/02/06 18:52
かちゅ〜しゃのkakikomi.txtをdat化した上、自分が書き込んだスレを
まとめてスレ倉庫化するスクリプトを書いてみたので、試して
みてください。(まだ動作が若干怪しい)

このスクリプトを拡張子をvbsにして、かちゅと同じフォルダに入れてね。
kage入れること。
かちゅが動いてないときに実行してください。

実行すると、以下のフォルダが作られます。
log\local
log\local\mine

以下のファイルが作られます。
書き込んだスレ.idx …ログ倉庫ファイル
log\local\mine\1000000000.dat …kakikomi.txtをコンバートしたもの
log\local\mine\1000000000.idx …そのインデックスファイル

実行したらかちゅを起動し、「マイフォルダ」の中にある「書き込んだスレ」を
開いてみてください。
まず、【自分の書き込み】というスレがありますが、これがkakikomi.txtを
コンバートしたもの、つまりあなたのこれまでの書き込みです。
他のスレは、あなたがこれまでに書き込んだことのあるスレです。
41011:02/02/06 18:53
Dim iRes
Set Fs = WScript.CreateObject("Scripting.FileSystemObject")
Set WshShell = WScript.CreateObject("WScript.Shell")
Set dicIdx = WScript.CreateObject("Scripting.Dictionary")
Set regEx = New RegExp
regEx.IgnoreCase = True
regEx.Global = True

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

If Not Fs.FileExists("kakikomi.txt") THen
MsgBox "ROMはお断りだゴルァ"
WScript.Quit
End If

If Not Fs.FolderExists("log") THen
MsgBox "ログがない。"
WScript.Quit
End If

Set tsKakikomi=Fs.OpenTextFile("kakikomi.txt")
sKakikomi=tsKakikomi.ReadAll
tsKakikomi.Close

If Not Fs.FolderExists("log\local") Then
Fs.CreateFolder "log\local"
End If

If Not Fs.FolderExists("log\local\mine") Then
Fs.CreateFolder "log\local\mine"
End If
41111:02/02/06 18:54
Set tsDat=Fs.CreateTextFile("log\local\mine\1000000000.dat")

regEx.Pattern="Date : (\d{4})/(\d{2})/(\d{2}) (\d{2}):(\d{2}):(\d{2})\r\n" & _
"Subject: ([^\r\n]+)\r\n" & _
"URL : http://(.*)/test/read.cgi\?bbs=([^&]*)&key=(\d+)\r\n" & _
"From : ([^\r\n]*)\r\n" & _
"Mail : ([^\r\n]*)\r\n" & _
"\r\n" & _
"([^\v]*)"

'0=year 1=month 2=day 3=hour 4=minitue 5=second 6=subject 7=server
'8=bbs 9=surenumber 10=from 11=mail 12=body

For Each sMessage In Split(sKakikomi,vbCrLf & String(44,"-") & vbCrLf)
Set Matches=regEx.Execute(sMessage)
For Each Match In Matches
Set SubMatch=Match.SubMatches
sBody=Replace(StrEscape(SubMatch(12)),vbCrLf,"<br>")
sBody = sBody & "<a href=""http://" & SubMatch(7) & "/test/read.cgi?bbs=" & _
SubMatch(8) & "&key=" & SubMatch(9) & """ target=""_blank"">" & _
StrEscape(SubMatch(6)) & "</a>"

tsDat.WriteLine "<b>" & SubMatch(10) & "</b>," & SubMatch(11) & "," & _
SubMatch(0) & "/" & SubMatch(1) & "/" & SubMatch(2) & " " & _
SubMatch(3) & ":" & SubMatch(4) & ":" & SubMatch(5) & "," & sBody
sIdx=Replace(SubMatch(7),"/","_") & "\" & SubMatch(8) & "\" & SubMatch(9) & ".idx"
If Not dicIdx.Exists(sIdx) Then
dicIdx.Add sIdx,""
End If
Next
iRes=iRes+1
Next
tsDat.CLose
41211:02/02/06 18:54
Set tsIdx=Fs.CreateTextFile("log\local\mine\1000000000.idx")
tsIdx.Write Replace("3,32,5,【自分の書き込み】,local,mine,1000000000," & iRes & "," & _
iRes & ",-1," & Now & ",,書き込んだスレ,0,,,,,,",",",vbTab)
tsIdx.Close

Set tsSouko=Fs.CreateTextFile("書き込んだスレ.idx")
For Each key In dicIdx.Keys
tsSouko.WriteLine key
Next

tsSouko.WriteLine "local\mine\1000000000.idx"
tsSouko.Close

WshShell.Popup "あなたの書き込みと、あなたが書き込んだスレ一覧をまとめました。" & _
vbCrLf & "「マイフォルダ」-「書き込んだスレ」をご覧ください。",10

Function StrEscape(str)
StrEscape = str
StrEscape = Replace(StrEscape,Chr(38),"&")
StrEscape = Replace(StrEscape,Chr(34),""")
StrEscape = Replace(StrEscape,Chr(60),"<")
StrEscape = Replace(StrEscape,Chr(62),">")
StrEscape = Replace(StrEscape,",","@`")
End Function
41311:02/02/06 19:13
うーん。最後の行なんだが、
StrEscape = Replace(StrEscape,",",",")
これ、かちゅでは、カンマをエスケープさせるのに
全角アットマーク@と全角アクセント符合っていうのかな、`との
組み合わせを使ってるんだわ。
で、その文字をつなげて書くと、かちゅではカンマ , に置換されちゃう。
だからこのコードをそのままコピペしてもちゃんと動かない。

…ええい、説明するのが面倒だ。わからん人はブラウザで見るべし。
41411:02/02/06 19:36
というか、他の符合もエスケープされて話にならん…。
仕方がないので、ダウンロードできるようにしました。
http://www.roy.hi-ho.ne.jp/cgi-bin/user/mutaguchi/clickcnt.cgi?http://www.roy.hi-ho.ne.jp/mutaguchi/wsh/src/myopinions.lzh

関係ないですけど、エクスプローラでvbsファイルにマウスポインタを
当てると、コメント行がポップアップされるんですね。
知らんかった。というか、これって標準機能なの? 常駐ソフトのどれかの仕業か?
415名無し~3.EXE:02/02/06 19:37
(゚д゚)ウマー・・。
416117(WSH見習い):02/02/06 20:06
結局作っちゃいました。
テキストファイルを翻訳(日英・英日)するスクリプトです。

以下のテキストを translate.js にリネームして Send to フォルダに
放り込んでおくか、ファイルをドラッグ&ドロップしてください。

# とりあえず日本語をIEのURL欄に入力しても問題なさそうなので、
# 結局ASCII文字だけをエンコードすることにしました。

// ここから

////// config //////
var saveFileName = "result_of_translate_js.txt";
////////////////////
var ej = 0;
var je = 1;
var fso = new ActiveXObject("Scripting.FileSystemObject");

for (var args = new Enumerator(WScript.Arguments); !args.atEnd(); args.moveNext())
{
// ファイル名・フォルダ名取得
var filename = args.item();
if (!fso.FileExists(filename)) continue;

// テキストファイルのロード
var before = loadTextFile(filename);
mode = isEnglish(before) ? ej : je;

// 翻訳
var after = translateText(before, mode);

// 保存パス生成
var parentFolder = fso.GetParentFolderName(filename);
var saveFilePath = fso.buildPath(parentFolder, saveFileName);

// 保存
saveTextFile(saveFilePath, after);
}

WScript.Echo("おしまい!");
417117(WSH見習い):02/02/06 20:07

function isEnglish(text)
{
for (var i = 0; i < text.length; i++)
if (text.charCodeAt(i) > 0x7F) return false;
return true;
}

function loadTextFile(filename)
{
var ForReading = 1;
// var fso = new ActiveXObject("Scripting.FileSystemObject");
var f = fso.OpenTextFile(filename, ForReading);
text = f.ReadAll();
f.Close();
return text;
}

function saveTextFile(filename, text)
{
var ForWriting = 2;
// var fso = new ActiveXObject("Scripting.FileSystemObject");
var f = fso.OpenTextFile(filename, ForWriting, true);
text = f.Write(text);
f.Close();
}

// mode : 0->ej, other->je
function translateText(before, mode)
{
var objIE = new ActiveXObject("InternetExplorer.Application");

var url = "http://www.excite.co.jp/world/text/"
+ "?wb_lp=" + (mode == 0 ? "ENJA" : "JAEN")
+ "&before=" + convertToUrlString(before);
418117(WSH見習い):02/02/06 20:07
objIE.Navigate (url);
objIE.Visible = false;
waitForLoad (objIE);

var res = "";
for(var en = new Enumerator(objIE.document.all); !en.atEnd(); en.moveNext())
if (en.item().name == "after" ) {
res = en.item().value;
}
objIE.Quit();
return res;
}

function waitForLoad(objIE) {
while (objIE.busy) WScript.Sleep(10);
while (objIE.Document.readyState != "complete") WScript.Sleep(10);
}

function convertToUrlString(str)
{
return str.replace(/([\x00-\x7f])/g,
function($1) { return encodeURIComponent($1); });
}

// ここまで
419名無し~3.EXE:02/02/06 20:22
age
420名無し~3.EXE:02/02/06 22:33
これだけコード書かれてからageるって明らかに嫌がらせだろ・・・
421名無し~3.EXE:02/02/06 23:49
>>420
なんで?
422名無し~3.EXE:02/02/07 00:51
しかし、なんだ。11と117はどうしてこんなに毎日毎日スクリプトを
量産できるんでしょう。すごいね。勉強になるよ。
423422に同感:02/02/07 01:00
本格的な高飛車なプログラマからすればただのスクリプトだけど
そんなスクリプトでも徹底的に突き詰めればすばらしいスキルだよね。
多くの高飛車なプログラマよりよっぽど見習う点があると思うよね。
こういう人を職人って言うんだよね。
424名無し~3.EXE:02/02/07 01:46
>>wsh見習い君
でかしたぞ!こいつはかなりいい、やればできるじゃないか。
そろそろ見習いも卒業できそうだな。
425名無し~3.EXE:02/02/07 20:32
あ・・・あげ・・・
42663:02/02/08 00:27
>>416-418
試したよお。いいね、いいね!
翻訳に多少時間かかってもいいから、1行づつ読み込んで、
長いテキストファイルを改行つきで吐き出すみたいなこと、
できませんか?
気が向いたら、ぜひ、お願いします!
最近のマシンスペックで、ブロードバンドなら、
十分実用に耐えちゃうと思う。

その場合、進行状況もある程度見えたらいいなあ……とか言ってみるテスト。
(CSCRIPT.EXE 用でも可……とか呟いてみるテスト)
427名無し~3.EXE:02/02/08 12:48
>>426
お前バカか?
428名無し~3.EXE:02/02/08 13:21
すみません、どなたかお教えください。
AddWindowsPrinterConnectionメソッドを使ってネットワークプリンタを接続しようとすると、
何故かエラーが発生してしまいます。
WSHのヘルプ内のものをそのまま使っているのですが・・・。

Set WshNetwork = WScript.CreateObject("WScript.Network")
PrinterPath = "\\printserv\DefaultPrinter"
WshNetwork.AddWindowsPrinterConnection PrinterPath

このprinterservのところにそのプリンタがローカルで接続されているマシン名、
Defaultprinterのところにそのプリンタの共有名を入れているのですが、
いつも「リモートサーバマシンが存在しないか、利用できません」というエラーが出てしまいます。

普通に他のPCから(コントロールパネルから)そのプリンタをネットワークプリンタとして
追加することはできるので、共有の設定等は間違ってないと思います。
LMHOSTSにそのプリンタが接続されているマシンも記述されていますし、
PING マシン名とプロンプトから打ってもちゃんとリプライが帰ってきます。
OSはWIN2000です。どうかお願い致します。
429名無し~3.EXE:02/02/08 13:27
>>427
どうして?
430名無し~3.EXE:02/02/08 19:31
>>429
いちいち一行ずつ翻訳しなくても、翻訳結果に改行入れれば
すむ話だからと思われ。
431名無し~3.EXE:02/02/08 19:57
daily age
432426:02/02/08 21:04
>>427 >>430
>翻訳結果に改行入れればすむ
面倒くさくない?
そのまま原文の改行を反映する方が、普通は望ましい動作だと思わない?
つうか、>>427 はそういうこで、おれを馬鹿にしてるのか?
それぐらいのこと、自分でやれって意味じゃないの?
そりゃ、やってもいいけど、まずは作者に要望してるんだけど?
433名無し~3.EXE:02/02/08 21:13
>>432
必死だなw
434426:02/02/08 21:21
>>433
や、そういうツッコミは来ると思ったけど、マジ >>427 の意図が不明なんす。
まあ、あとは wsh見習い君の判断に任せよっと……。
435117(WSH見習いの3倍):02/02/09 00:07
> wsh見習い君の判断に任せよっと……。
う、飛んできた (w

えーと、匿名掲示板なんで過剰に反応してしまうのは得策ではないと
思われます。そんだけ。

ただ、改行が反映されないのはプログラム欠陥の範疇だと思うので
明日にでも直します。たしかに不便。今まで気づかんかった…


ウキキッ
436名無し~3.EXE:02/02/09 00:20
例えば俺は、wshと cmail.exe っていうフリーソフトを組み合わせて
「箱庭諸島」で起こった出来事を携帯に自動送信してました(過去形。箱庭飽きちゃった)
43711:02/02/09 00:33
>>436
WSHでメールと言うと、こういうのもありますな。
http://www.microsoft.com/JAPAN/support/kb/articles/JP193/6/85.asp
438426:02/02/09 00:49
>>435
了解、ありがと!
439名無し~3.EXE:02/02/09 21:10
daily age
440117(WSH見習いの3倍):02/02/10 13:46
>>426
多分これで動くはず。>>416の部分だけ以下のソースで置換してください。

なお、サーバへのアクセス回数を増やさないよう作った関係で、
テキストファイル内に"{br}"ちゅう文字列が含まれていると誤動作します。

var ej = 0;
var je = 1;
var fso = new ActiveXObject("Scripting.FileSystemObject");

for (var args = new Enumerator(WScript.Arguments); !args.atEnd(); args.moveNext())
{
// ファイル名・フォルダ名取得
var filename = args.item();
if (!fso.FileExists(filename)) continue;

// テキストファイルのロード
var before = loadTextFile(filename);
mode = isEnglish(before) ? ej : je;

// 翻訳
var lf = before.match(/\x0d\x0a|\x0d|\x0a/);
before = before.replace(/\x0d\x0a|\x0d|\x0a/g, "{br}"+lf);
var after = translateText(before, mode);
after = after.replace(/{br}/g, lf);

// 保存パス生成
var parentFolder = fso.GetParentFolderName(filename);
var saveFileName = fso.GetBaseName(filename)
+(mode == ej ? "(j)." : "(e).")
+fso.GetExtensionName(filename);
var saveFilePath = fso.buildPath(parentFolder, saveFileName);

// 保存
saveTextFile(saveFilePath, after);
}

WScript.Echo("おしまい!");
441名無し~3.EXE:02/02/10 20:00
daily age
442426:02/02/11 01:48
>>440
おお!どうもありがと。
ある程度短いファイルなら、理想通りの動作をしますね。感謝、感謝。
長めのだとウチの Windows2000SP2・IE5.5SP2 環境だと、途中で IE 強制終了
になっちゃうんだけど、これって、制限はどの程度なのかしらん?
(ひょっとして、ウチの環境だけ、問題あり?)
443名無し~3.EXE:02/02/11 05:27
>>9
ネタくさいが…
書き込みウィンドウに「ローカルルール」ってタブがあるだろ。

あと、>2-8、ローカルルールには
スレ違い、板違いは優しく誘導してあげましょう。
って書いてあるぞ。やさしく、だ。
444443:02/02/11 05:28
誤爆した。スマソ。
445名無し~3.EXE:02/02/11 11:54
>>443-444
どうにもネタくさいな…
446名無し~3.EXE:02/02/11 23:17
daily age !!
44711:02/02/14 02:06
'かちゅの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/24(火) 05:13:09 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/24(火) 05:13:09 ID:MarkedRes
このレスは権利侵害の申し立てや違法もしくはその疑いにて不可視または削除されました。
削除日時:2013-03-28 17:46:19
https://mimizun.com/delete.html
933名無し~3.EXE:02/05/13 02:35
934ひみつの検閲さん:2024/12/24(火) 05:13:09 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/24(火) 05:13:09 ID:MarkedRes
このレスは権利侵害の申し立てや違法もしくはその疑いにて不可視または削除されました。
削除日時:2013-03-28 17:46:19
https://mimizun.com/delete.html
937ひみつの検閲さん:2024/12/24(火) 05:13:09 ID:MarkedRes
このレスは権利侵害の申し立てや違法もしくはその疑いにて不可視または削除されました。
削除日時:2013-03-28 17:46:19
https://mimizun.com/delete.html
938ひみつの検閲さん:2024/12/24(火) 05:13:09 ID:MarkedRes
このレスは権利侵害の申し立てや違法もしくはその疑いにて不可視または削除されました。
削除日時:2013-03-28 17:46:19
https://mimizun.com/delete.html
939ひみつの検閲さん:2024/12/24(火) 05:13:09 ID:MarkedRes
このレスは権利侵害の申し立てや違法もしくはその疑いにて不可視または削除されました。
削除日時:2013-03-28 17:46:19
https://mimizun.com/delete.html
940ひみつの検閲さん:2024/12/24(火) 05:13:09 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を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。