お前ら、WindowsScripting使ってますか? Part3

このエントリーをはてなブックマークに追加
1名無し~3.EXE
前スレ
#1 http://pc.2ch.net/test/read.cgi/win/1009175619/
#2 http://pc2.2ch.net/test/read.cgi/win/1022248379/
こんなことコンピュータにやらせろよ。そう思ったことはありませんか?
簡易的な実行環境も含めて普通のOSだったら当たり前に備わっている自動実行。
Windowsの標準に備わっているそれがWSH(Windows Script Host)です。
また、ここではWSHだけに限らずWMI、ADSIなどのネタもOKです。

掲示板一般の注意は包括の上、その他諸注意。

・煽りや荒らしは基本的に無視の方針でお願いしますが、ウイルス、ワーム等の投稿は拒めません。
この板はWindows板であって、プログラム一般に知識のない方も見る可能性があります。
ローカルおよびネットワーク等に害が加わるコードを発見しましたら、その投稿者を騙って何をするものなのかとか、無害化、有益化等の解説を加えて頂ければありがたいです。

・また、一レスに収まりきれないコード(30行以上)はソースアップ板でどうぞ。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1022248177
ソースをアップ出来ましたら、そこの個別リンクを張り、それを元に話を進めていただけると便利かもです。

・ここでヒントを得て完成したスクリプトは皆さんにお披露目してください。
 同じことで悩んでいる人のためになります。

・質問する際は、OS及び使用するコンポーネントのバージョンもまず先に告げることをお忘れなく。

基本的にsage進行で、プログラムのことよりも「これが出来る」便利さを語るスレになったらいいなと思います。

また関連の>>1-4も見てください。


2名無し~3.EXE:03/07/22 08:22 ID:ltGk05DV
 森山 直太朗  【さくら(独唱)】



                   サクラッ
   サクラッ       ヽ(゚∀゚ )ノ
          彡   (桜 )ヘ
   ヽ( ゚∀゚)ノ      <
     ( 桜)ヘ   彡
     <
3名無し~3.EXE:03/07/22 08:23 ID:mXvbxGuv
便利なリンク集(前スレまとめ)

WSH本体
http://www.microsoft.com/japan/msdn/scripting/default.asp
オンラインドキュメント
http://www.microsoft.com/japan/developer/library/default.asp?PP=/japan/developer/library/toc/script56/script560.xml&tocPath=script560&URL=/japan/developer/library/script56/vtoriMicrosoftWindowsScriptTechnologies.htm

オブジェクト内のメソッドプロパティがわからないときはVB、Officeがあるならオブジェクトブラウザを見ること。
持ってない人はOLE/COM Object Viewerを使う。
http://www.microsoft.com/com/resources/oleview.asp

WindowsXPには、コマンドラインツールとして、VBSファイルが結構あるみたいですね。
http://www.atmarkit.co.jp/fwin2k/xp_feature/013commandtool/commandtool.html
XPで追加・強化された、スクリプト関係の機能についてはこちら。
http://content.communities.msn.com/WindowsScript/windowsxp.msnw
ADSIの特集全文(?)が再掲されています。
http://www.galliver.co.jp/writing/nikkei_tokushu/wad002/index.html

Windows StartのWSH連載記事「Windows Scripter 2000」
http://www.netjoy.ne.jp/~tuya/RensaiHome.html

USERS Group過去ログ - WSH
http://www.users.gr.jp/ml/archive/wsh/

個人サイト
ttp://www.roy.hi-ho.ne.jp/mutaguchi/wsh/
ttp://member.nifty.ne.jp/aya/wsh/
ttp://www.hi-ho.ne.jp/tetsuzo/windows/wsh/
4名無し~3.EXE:03/07/22 08:24 ID:mXvbxGuv
コンポーネント関連リンク
外部コンポーネント(MS)
DCOM(98/Me)
http://www.microsoft.com/japan/com/dcom/dcom98/dcom13.asp
DCOM(95)
http://www.microsoft.com/japan/com/dcom/dcom95/dcom13.asp

MDAC - データベース・メールボックス・WebDAV・バイナリの操作
http://www.microsoft.com/data/download.htm
WMI(95/98/NT4.0) - 統一されたコンピュータオブジェクト化モデルを提供するスクリプティングAPI、リモート管理
http://www.microsoft.com/downloads/release.asp?releaseid=23142
ADSI - Active Dictoryの機能を操作
http://www.microsoft.com/downloads/release.asp?releaseid=11093
SOAP - 非集中/分散環境におけるシステム間の構造化され型付けされた情報の交換
http://msdn.microsoft.com/downloads/default.asp?URL=/code/sample.asp?url=/msdn-files/027/001/580/msdncompositedoc.xml
MSXML - XMLパーサ、SAX・DOM API、XSLT変換、POST/HTTPダウンロード
http://msdn.microsoft.com/downloads/default.asp?url=/downloads/sample.asp?url=/msdn-files/027/001/766/msdncompositedoc.xml

外部コンポーネント(MS社製以外)
BASP21 - メール、ファイルエンコード、文字コード変換、FTP/HTTPアップ、その他
ttp://www.hi-ho.ne.jp/babaq/basp21.html
Doodle2 - グラフィック変換、操作、描画
http://www.vector.co.jp/soft/winnt/prog/se219120.html
DynaCall - Win32APIコール
http://www.borncity.com/WSHBazaar/WSHDynaCall.htm
5名無し~3.EXE:03/07/22 08:24 ID:mXvbxGuv
WSH(COM)参考書籍

「はじめてのWindows Scripting Host」 (株)アンク著 技術評論社
http://www2.gihyo.co.jp/books/bookinfo.asp?ID=327

「VBScriptポケットリファレンス」
http://www2.gihyo.co.jp/books/bookinfo.asp?ID=616

「使いながら覚えるWindowsScriptingHost プログラミング入門」 竹田英雄著 エーアイ出版
http://www.ai-pub.co.jp/contents/book/os/win_scr_host.html

「Windows Scripting Host入門 with VBScript」 毎日コミュニケーションズ
http://book.mycom.co.jp/books/bookshelf/1998/09/win_sp/index.html

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

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

「Rubyを256倍使う本 邪道編」 arton著 ASCII
http://www.ascii.co.jp/books/detail/4-7561/4-7561-3603-6.html

「ADSIスクリプトによるWindows2000システム管理 Windows2000管理者ガイドブック」ピアソン・エデュケーション トーマス・エック 著
http://www.pearsoned.co.jp/washo/win/wa_win70-j.html (どちらかというとVBによる操作本?)

「標準ASPテクニカルリファレンス」山田祥寛著 SOFTBANK
http://books.softbank.co.jp/bm_detail.asp?sku=4797314001
6名無し~3.EXE:03/07/22 08:35 ID:IiE/kLtw
中途半端なスレタイ
7名無し~3.EXE:03/07/22 08:45 ID:L02HH9Fr
Host
8名無し~3.EXE:03/07/22 09:28 ID:61ZaJMEh
何はともあれ乙 >>1
9名無し~3.EXE:03/07/22 10:12 ID:kJLa1zTg
.zip .cabファイルの圧縮展開はどうやればいいですか?
コマンドラインではなくCOMでやりたいのですが。
10名無し~3.EXE:03/07/22 10:17 ID:9WE9KdxJ
>1 乙
結構参考にしているのでスレ立って良かった!
11前々スレ11:03/07/22 11:11 ID:jMrqRMix
今度こそゲット!

>3に追加してここもどうぞ。

Microsoft TechNet
http://www.microsoft.com/japan/technet/treeview/default.asp?url=/japan/technet/scriptcenter/default.asp

>>9
http://www.csdinc.co.jp/archiver/lib/activex/index.html
ここのActiveX DLLがWSHから使用できるはずです。
12名無し~3.EXE:03/07/22 11:28 ID:ss/Xn/fi
WindowsScriptingでぐぐると8件しか出てこない罠
13名無し~3.EXE:03/07/22 13:20 ID:b0tmSvvu
アクセスでデータベースのデザインビューの説明の項目を
取得したいのですが、どうすればいいでしょうか。
149:03/07/22 13:35 ID:kJLa1zTg
>>11
できればOS標準の機能を使いたいのですが。
15名無し~3.EXE:03/07/22 14:13 ID:liBTLFvo
圧縮解凍ができるAPIとかあったっけ?
1611:03/07/22 14:17 ID:jMrqRMix
>>14
http://groups.google.com/groups?hl=ja&lr=&ie=UTF-8&inlang=ja&c2coff=1&selm=Oqs%24H3ioCHA.1636%40TK2MSFTNGP09
cabファイル作成なら、MakeCab.MakeCabというコンポーネントが使えるようです。
Win2000とXPのみらしいですが。
また、解凍ができるかどうかは調べてません。

WinXPにはzipファイルを作成する機能がOS標準で存在するので、
コンポーネントとして登録されているような気がしますがこれも未調査です。

http://groups.google.com/groups?hl=ja&lr=&ie=UTF-8&inlang=ja&c2coff=1&selm=3D7FDE08.CDA30007%40hydro.com
あまり関係ないですが、WMIを使ってファイルやフォルダに圧縮属性をつける方法が出てます。
17名無し~3.EXE:03/07/22 20:25 ID:wIvcYyB3
>>11 殿
11時11分 おみごと!
18名無し~3.EXE:03/07/22 21:13 ID:7n8zB16V
1)WSH(VBS)でIEで表示しているページを印刷させたいのですが、どのようにすれば良いでしょうか?

2)また、現在表示してるページの文字列(ソース)を取得するにはどうすれば良いでしょうか?

教えて君で申し訳ないのですが、このような情報をどうやって調べるかも教えていただければ助かります。
会社の仕事で、トップページを指定すると全てのリンクをたどって印刷する必要があるのです。
宜しくお願いします。
1913:03/07/22 22:04 ID:kSIjvv99
1。ExecWB でできますがなにか?
2。innertextとか。。

答えてあげたので、漏れの答えもキボン
201様:03/07/22 23:01 ID:mXvbxGuv
>>18
2) の回答です。Windows2000で動作確認。
------------------------------------------
set http = createobject("msxml2.xmlhttp")
sURL = "http://www.microsoft.com/ms.htm"
http.open "GET",sURL,false
http.send
sHtml = http.responsetext
msgbox sHtml
------------------------------------------

>>このような情報をどうやって調べるか
臆せずに英語サイトを徘徊すれば、すぐに見つかります。
今回は「vbscript htm get source」でぐぐりましたよ。
21名無し~3.EXE:03/07/22 23:17 ID:HId2o3DK
確かそれってUnicodeだよね?
221様:03/07/22 23:42 ID:mXvbxGuv
unicode でまずければ、自分でコンバータを用意するんじゃない?
このへんで。
<http://search.microsoft.com/search/results.aspx?View=msdn&st=a&s=2&c=4&qu=AscW>
234864968:03/07/22 23:45 ID:K93L1mQj
24名無し~3.EXE:03/07/23 02:17 ID:dson7ACp
まずいとは言ってないけど…
25平民:03/07/23 23:05 ID:WKUX6Oxz
現在開いているIEのウインドウの右上の[X]が押されるのを認知してイベントを起こす方法、解る神様いらっしゃいませんか???
26名無し~3.EXE:03/07/24 00:57 ID:EyV/w3Us
>>25
ウインドウハンドルを監視する。
もしくは、IEをスクリプトから起動すれば、終了後になんらかの処理が可能。

言語に関係なく、アルゴリズムで悩んでるやつ多すぎ。
27名無し~3.EXE:03/07/24 01:37 ID:/V1ocjcw
Dim objIE
Set objIE = WScript.CreateObject("InternetExplorer.Application", "Event_")
objIE.Visible = True
objIE.GoHome()
Do
WScript.Sleep 100
Loop

Sub Event_OnQuit()
MsgBox "閉じるイベント"
End Sub
28平民:03/07/24 07:28 ID:YTx4JcSn
回答ありがとうございます。
回答いただいたスクリプトについてですが
これをIEのhtmソースに組み込む場合、Wscript.Sleepが使えないと思うのですが
どのようにしますか?
2927:03/07/25 01:37 ID:9cGWvKD0
htmlでやるのなら、シンプルにbodyタグのonUnload属性ではダメなの?
ページ切り替え時もイベント起きるけどね。
30平民:03/07/30 22:22 ID:g73wqP0y
結局それでやりました。age
31直リン:03/07/30 22:23 ID:25+DqMIw
32名無し~3.EXE:03/07/31 10:15 ID:yBhq53DF
なんかインストの後しばらく使ってると、どこかが壊れてしまうのか
まともに機能しなくなって、ブラウザでサイト開いたときや
右クリックでスクリプト使うメニュー動かしたときにエラーがでるようになる。

その度に js56njp.exe や WindowsScript56JP.exe を当て直して
いちおうはエラーがでなくなるけど、ひと月くらいでまたおかしくなる。鬱…
33ぼるじょあ ◆ySd1dMH5Gk :03/08/02 05:25 ID:HUaFCpOt
     ∧_∧  ∧_∧
ピュ.ー (  ・3・) (  ^^ ) <これからも僕たちを応援して下さいね(^^)。
  =〔~∪ ̄ ̄ ̄∪ ̄ ̄〕
  = ◎――――――◎                      山崎渉&ぼるじょあ
34名無し~3.EXE:03/08/03 23:35 ID:ygqtzpR5
未決あったんちょっと見逃した。悪い。解決したかもしれないが、とりあえずサンプルだけ書いとく。
>13
Const dbHiddenObject = 1
Const dbSystemObject = &H80000002

Set oFS = CreateObject("Scripting.FileSystemObject")
Set Application = CreateObject("Access.Application")
Application.OpenCurrentDatabase "C:\Documents and Settings\hogehoge\My Documents\toaru.mdb"
Set Database = Application.CurrentDb
For Each TableDef In Database.TableDefs
With TableDef
If ((.Attributes And dbSystemObject) Or (.Attributes And dbHiddenObject)) = 0 Then
sOutput = sOutput & .Name
On Error Resume Next
sOutput = sOutput & "/説明:" & .Properties("Description")
On Error GoTo 0
sOutput = sOutput & vbNewLine
End If
End With
Next
oFS.OpenTextFile("toaru.lst", 2, True).Write sOutput

35名無し~3.EXE:03/08/03 23:49 ID:1IR1sTSt
スクリプトにもかかわらずタイプ量が無駄に多いのはいかがなものか。
36名無し~3.EXE:03/08/04 01:32 ID:7MdLUjy5
これをCで書いたらどれくらいの長さになるもんだか…
37名無し~3.EXE:03/08/04 03:52 ID:1F2wXJ1g
>>35-36
たぶんどっちの言ってることも正しい(w
スクリプトといえど目的によってはそれなりのコーディング量になってしまうのであれば、
スクリプトの魅力は半減だし、いっぽうで、言語でコーディングすれば、
やっぱりそれなりのコーディング量になるわけで。

「こんなことできないかな」が、スクリプト数行でできてしまうのは、スクリプトの醍醐味だし、
7行プログラミングじゃないけど、短くて実用的なものが書けたときはスクリプト冥利に尽きるね。
38名無し~3.EXE:03/08/04 23:04 ID:rze7uNKQ
.chmファイルにキーワードを指定して開きたいんですが
コマンドライン引数の指定の仕方が分かりません。
どう指定すればいいですか?
39名無し~3.EXE:03/08/04 23:56 ID:NX0AWO+t
>>38
開いてから
SendKeys('%(NW){END}+{HOME}{DEL}KEYWORD{ENTER}');
で流し込めば?
40名無し~3.EXE:03/08/06 01:39 ID:juL7OMQg
>>38
hh.exeを前提としているのであれば、引数にキーワード指定はないので
コマンドラインからの実行は諦めるしかない。
41名無し~3.EXE:03/08/06 13:33 ID:MlhEuSBn
>>40
アプリはどうやってキーワードを渡してるんですか?
4213:03/08/06 20:59 ID:b2M0lgd/
>>34

ありがとう。

見捨てられてるかとオモターヨ。
なぜか、漏れのAccessでは、
テーブル名しか取得できなかった。

多分、Fields コレクション取得してないのが
原因だと思うのだが、どうすればイイ?

たびたびスマソ。
43名無し~3.EXE:03/08/07 00:19 ID:8c+b9D2f
>>41
HtmlHelpAPI
44名無し~3.EXE:03/08/07 00:43 ID:wAvDHHlR
>42
Ifブロック中の最後の方で
For Each Field In TableDef.Fields
sOutput = sOutput & "フィールド: " & Field.Name & vbNewLine
On Error Resume Next
sOutput = sOutput & "/説明:" & Field.Properties("Description") & vbNewLine
On Error GoTo 0
Next

動作は確かめてないけど、こんな感じで良いんじゃないのかな。
ここいらを詳しく知りたいときはDAOのオブジェクトモデルを調べること。
4542:03/08/07 15:39 ID:dRZ2D5+c
>>44

サンクス。

今度はうまく逝ったようだ。

> ここいらを詳しく知りたいときはDAOのオブジェクトモデルを調べること。

DAOならアヤたんとこで知ってたんだが、Accessのオブジェクトから
取得する方法は知らなんだ。

勉強になたーヨ。
46名無し~3.EXE:03/08/08 09:44 ID:krG258V7
ShellUIHelperのAutoScan メソッドの使い方
を教えてください。
47名無し~3.EXE:03/08/09 12:10 ID:ksFxcMI1
Win98/IE5.5sp2、WSH ver5.1を使ってます。
2chのお気に入りスレのログを定期的に保存するスクリプトを書こうと思っています。

2chサーバの場合、存在しないファイルにアクセスすると
404 Not Found でなく
302 Found と Location: ヘッダ等を返してきますが、
とりあえずVBScriptでこのようなものを書いてみて実行すると

---
Set xh = WScript.CreateObject("microsoft.xmlhttp")
xh.Open "HEAD", "http://pc2.2ch.net/hoge", False
xh.Send
Msgbox xh.Status
---

ステータスとして HTTP/1.1 302 Found を返してくれず、なぜか
Location で飛んだ先までアクセスして HTTP/1.1 200 OK を返してきてしまいます。
メソッドをHEADでなくGETにしても同じでした。

これは microsoft.xmlhttp の仕様なんでしょうか?
最初に返ってくるステータスを取得する方法はないでしょうか?
#basp21 の W3get なら戻り値を使うだけですぐできますが、
#なるべくそういった追加のソフトを使わないで実現したいのです…
48名無し~3.EXE:03/08/09 12:45 ID:/nGaS3A5
Jet4.0SP7 あげ。

MDAC 入れると XML perser のバグ入りも入ります(windowsupdate で修正可)。
ttp://www.microsoft.com/japan/msdn/data/default.asp
49名無し~3.EXE:03/08/09 20:41 ID:5n5ENv+G
そのパーサのバグってどんな内容ですか?
50名無し~3.EXE:03/08/09 23:39 ID:DmLS44QD
>46
ShellUIHelper::AutoScanなら板&スレ違い、APIかC++関係で聞いて下さい。
external.AutoScanメソッドならスクリプトがらみでこっちでも良いですけど。

>47
ウチの環境では取得できない場合、エラーが出る。(Win2k,IE6,WSH5.6,msxml3.dllのver8.30.9926.0)
だので想定の域を出ないのだが、Request-URIとContent-Locationを比較するってのは解決方法にはならないかな?

>48
MDACは修正効かない場合があるから逆じゃなくてよかった。
5147:03/08/10 01:41 ID:NdwTzMAI
>>50
レスどうもです。
GetAllResponseHeaders メソッドを使って Content-Location ヘッダを探すということですか?
しかしレスポンスヘッダには Content-Location が見当たらないようです…


っと、書きながら気づきましたが、datを落とすのだけが目的なら
Content-Type が text/plain(2chのdatファイルの形式) か
text/html(2chの302エラーページはほとんどこの形式?) かで判断できそうです。
しかし場当たり的で気持ち悪い。
52名無し~3.EXE:03/08/10 02:00 ID:EyDmO+/H
Perlでも導入してはどうです。
いろいろ出来ますし、他のOSに移行しても過去の資産が有効活用できます。
5346:03/08/10 10:09 ID:1vl5ww6v
>>50
> external.AutoScanメソッドならスクリプトがらみでこっちでも良いですけど。
オブジェクトとしては同じなので、そちらで結構です。
(前者がVBScript、後者がJavaScript)
よろしくお願いします。
5411:03/08/10 10:50 ID:/T1SkZv4
>>46>>50
ShellUIHelper::AutoScanのリファレンスはこちら。
http://msdn.microsoft.com/library/default.asp?url=/workshop/browser/external/reference/ifaces/ishelluihelper/ishelluihelper.asp

externalオブジェクトを経由するならこんな感じで使います。
(HTAはexternalオブジェクトにアクセスできないので、拡張子はhtmlにしてください)
<script language="vbscript">
external.AutoScan "2ch","",""
</script>

この例だと、www.2ch.co.jp→www.2ch.org→www.2ch.net→www.2ch.eduの順でWebサーバーへの
接続を試行します。最初に存在したドメインのindex.htmlに移動します。
(この例だと、www.2ch.net…じゃなかったりします)

実際の検索順は、HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\UrlTemplateで
指定された順になります。日本語版IE6ではデフォルトでは上記のようになってます。

二つ目の引数は、ドメインが見つからなかった場合に表示するページのアドレスで、
指定しない場合はres://C:\WINNT\system32\shdoclc.dll/dnserror.htmになります。
また、三つ目の引数は、結果を表示するターゲットフレーム名です。

WSHから使うとしたらこうでしょうか。
Set UIHelper=WScript.CreateObject("Shell.UIHelper")
MsgBox UIHelper.AutoScan ("2ch","","")

ただし、まったく無意味ですねコレ。
というのも、WSHは、Webページを表示するためのコントロールを持ちませんから。
おそらく、使えても無意味なため、ShellUIHelperスクリプトリファレンスの方には
載ってないんでしょう。
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/objects/shelluihelper/shelluihelper.asp
5511:03/08/10 11:21 ID:/T1SkZv4
>>47
私も>50さんと同じ環境なため、やはり同じくxh.Sendの時点で「アクセスが拒否されました」という
エラーになります。

でもエラーというのもおかしな挙動だなぁ。IEで接続する限りは、ちゃんと302を返すんですが。
ちなみに、ドキュメントが無い場合404を返すWebサーバーなら、問題なくxh.Statusに404が入ります。
302とXMLHTTPは相性が悪い(?)んですかね。

私は半ば諦めモードで、httpを扱うときはBASP21に頼ってます。

で、datを取得するという目的に限定するならこんなのはいかがでしょう。

たとえばhttp://servername.2ch.net/dat/threadkey.dat の生存を確認するには、
http://servername.2ch.net/test/read.cgi/bbsname/threadkey/1 をGET(これは必ずHTTP/1.1 200 OKを返す)して、
レスポンスに「そんな板orスレッドないです。」という文字列があれば、
threadkeyは存在しない。
「このスレッドは過去ログ倉庫に格納されています。」という文字列があれば、
threadkeyはdat落ち。
その他ならスレは生存している。

のように判別する手もあります。もちろん決してスマートではないですが。
(あと、人大杉の時も使えない手だな)
5648:03/08/10 11:24 ID:8qzH3XTz
Jet 入れたら walign を忘れずにね>Win98系使ってる方(オレモナー

>>49-50
ttp://www.microsoft.com/japan/technet/treeview/default.asp?url=/japan/technet/security/bulletin/ms02-008.asp

うちの環境(98SE + IE6SP1)では MDAC2.6SP2 入れたら起きました。

スレ違いで申し訳無いのですけど、MDAC を入れると、素の状態よりも
リソースが増える気がするのは漏れだけ?
5711:03/08/10 11:48 ID:/T1SkZv4
>55の補足ですが、2chのCGIを呼ぶときは、こちらのリクエストヘッダがデタラメだと、
容赦なく302を返してきます。
幸い、XMLHTTPはリクエストヘッダを省略時でもそこそこ適当に付けてくれるので、
デフォルトのままでも弾かれることは無いようですが。

GET / HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Q312461; .NET CLR 1.0.3705; .NET CLR 1.1.4322)
Host: 127.0.0.1
Connection: Keep-Alive

デフォルトではこんな感じです。User-AgentはsetRequestHeaderメソッドで上書きしない限り、
IEと同じになります。(.NET Framework 1.0に1.1を上書きしたのがバレますね)
IEのキャッシュに残ってればIf-Modified-Since:なんかも勝手に付けてくれます。

…それより、XMLHTTPが日本語テキストのレスポンスをまともに
デコードしてくれないという問題があることを忘れてた(w
5846:03/08/10 20:25 ID:1vl5ww6v
>>11さん

ありがとうございます。
いままでの疑問が氷解しました。

自分の場合は、.comのURLに飛ばされました。

いま応用とか考えていますが、IEのオブジェクト

(ShellWindowsやInternetExplorer.Application)

とかにこれを利用するには、どうすればいいでしょうか。
59名無し~3.EXE:03/08/11 23:47 ID:1tSxff8p
ダイヤルアップネットワークを制御することってWSHでできますか?
(接続したり、切断したり)
60名無し~3.EXE:03/08/12 00:12 ID:l2aZPl4c
バッチですら出来まっせ。

rasphone.exe
6159:03/08/12 00:13 ID:6yVB1Lxv
ttp://www.roy.hi-ho.ne.jp/mutaguchi/bbs/list12.shtml
を発見。これを参考にして↓を書いてみました。Win98用。
---
Set Shell = WScript.CreateObject("Shell.Application")
For Each oItem In Shell.NameSpace(17).Items

If oItem.Name="ダイヤルアップ ネットワーク" Then
Set oFolder=oItem.GetFolder
For Each oSubItem In oFolder.Items
If oSubItem="接続/切断したいプロバイダの接続設定名をここに入力" Then
If oFolder.GetDetailsOf(oSubItem,3)="接続" Then
oSubItem.InvokeVerb "切断(&I)"
Else
oSubItem.InvokeVerb "接続(&O)"
End If
End If
Next
Exit For
End If

Next
---
ただこれだと、切断は一発ですが、接続の時にダイアログの「接続」ボタンを押す必要が…
もう少しがんばってみます。
失礼しました。
6259:03/08/12 00:16 ID:6yVB1Lxv
入れ違いになってしまいました。
>>60
windowsのフォルダ内にはそのファイルがありませんでした。
6359:03/08/12 00:19 ID:6yVB1Lxv
win98では
rundll32.exe rnaui.dll,RnaDial エントリ
とやるんですね…無知で恥ずかしい。
6459:03/08/12 00:30 ID:6yVB1Lxv
Else
oSubItem.InvokeVerb "接続(&O)"
End If
だったところを
Else
oSubItem.InvokeVerb "接続(&O)"
Wscript.sleep 1000
WshShell.AppActivate("接続")
Wscript.sleep 1000
WshShell.SendKeys "~"
End If
で解決ですね…スレ汚し失礼しました。
65名無し~3.EXE:03/08/21 23:56 ID:lcHR3fX/
見よう見まねでVBSをつかってますがWMIに突入しようとするといきなり訳わからなくなりますね・・・
やはりきちんとVBから勉強すべきなんでしょうか?
VB6.0とか.netとかありますけどどっちがいいですかね
66名無し~3.EXE:03/08/22 01:33 ID:yI6YAMhl
MS03-033 あげ
MDAC2.5-2.7 が影響を受けるそうです(2.8 は影響を受けない)。
6766:03/08/22 01:36 ID:yI6YAMhl
68名無し~3.EXE:03/08/22 01:56 ID:RzA3EqXB
.NET Framework標準搭載なLonghornがでたら
wshの位置付けってどうなるんだろ。
尻すぼみになるのかね。
69名無し~3.EXE:03/08/26 11:21 ID:X+6A2fwM
ショートカットのようにアプリ名、引数、ディレクトリを指定して
実行するにはどうすればいいですか?
WScript.ShellのExecやRunではディレクトリは指定できないようです。
70名無し~3.EXE:03/08/26 12:44 ID:GfNkexby
>>69
その起動したいアプリにはディレクトリ指定するオプションはないの?
71名無し~3.EXE:03/08/26 13:57 ID:5aize2cF
>69
全てを設定したショートカットを Run する
72名無し~3.EXE:03/08/27 13:04 ID:yp7pMq5n
71補足
ショートカットはスクリプトで作成可能
(WshShell オブジェクトのCreateShortCutでWshShortcutオブジェクトを生成し、WorkingDirectoryプロパティ等を設定)
73名無し~3.EXE:03/08/28 02:55 ID:/MDBk+o3
>>69
実行する前ににカレント ディレクトリを変えてあげれば良いのでは?
74名無し~3.EXE:03/08/30 09:02 ID:YVCpZKrK
VBSで、ある特定のフォルダの共有設定をしたりその設定を解除したり
みたいなことは可能でしょうか。
(フルアクセスかリードオンリーかというような細かいところも含めて)
7574:03/08/30 18:10 ID:4kf09Ugs
ヘルプファイルみたいなもの見つけて、「WSH ネットワーク管理者サンプル
スクリプト」って項目見てたら何だかそれっぽい解説がのってました。
ちょっとかじりついてみます。
失礼しました。
76名無し~3.EXE:03/09/03 15:02 ID:kMvLeho+
あと、DOSコマンドの NET SHARE を叩いてみるとか。
これはあんまり細かい設定はできないんだっけ。
77名無し~3.EXE:03/09/03 22:47 ID:7whhqdoj
難問ですが、IIS(ASP)のWEBに埋め込んだスクリプトから
Exchange(MAPI)にログオンして会議通知を出すことってできないでしょうか。
神様教えてください。
78名無し~3.EXE:03/09/05 00:10 ID:eLw6MIRp
埋め込みスクリプトじゃなくて、サーバーサイドのASPから
BASP21でも叩いて単純にメール発射するだけじゃだめ?
7977:03/09/08 20:19 ID:TxNAMb3v
あなたはBASPでMAPI操れるんですか。
そうでないとしたら、仕様要求が満たされてないです。
しかしなぜBASP?メールならIISの標準機能で間に合わせませんか?普通…
80名無し~3.EXE:03/09/08 23:44 ID:qIXb5KyB
WEBに埋め込んだスクリプトっていまいち意味がわからんけど、
MAPI.Session でぐぐればちょこちょこ出てくるやつとは違うのか?
81名無し~3.EXE:03/09/09 06:06 ID:lUwaCxNa
今まで焼いた動画を真空波動研に送り詳細コピー
ファイル名+焼き.txtを作り貼り付け、元の動画を削除
とやっていたんですがWSHで一発で出来ませんか?
よろしくお願いします

あとリネームスレでエディタを使った
一括リネームのスクリプトがあったので載せておきました
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1022248177&res=40
82名無し~3.EXE:03/09/14 02:22 ID:a9ZaT47+
>>81
一生手でやってろ。
83名無し~3.EXE:03/09/14 10:32 ID:8ZsOTXme
>81
ちょっとまじめに考える。まだスクリプトは作らんけどね。
また、現時点では作るか作らないかの判断も保留にさせていただく。
手始めに要求仕様の分解から。

>今まで焼いた動画を
これは、誰か管理しているの? 管理していないのだとすればカタログから作る必要がある。
現データがHDDにあるという前提で一対一の関係? フォルダ構成は同一? その中のファイル構成は漏れ・別焼き等は無い?
こういった場合には、よくボリュームラベルがIDに使われる。同一のボリュームラベルは無い?
現状のカタログデータに参列していない場合の追加と削除はどのように考える?

>ファイル名+焼き.txtを作り
スキーマはどうする? 特に指定が無ければMD5等のハッシュ、焼き先のフルネーム、更新日時が加算されたカタログを作成することになるだろう。
真空波動研というアプリがどういったスキーマを生じるさせるのか? 全てを列記する必要がある。
一対一の対応で無い場合の処理は?
また、こういった場合自分はXMLで定義するのが好き。上記程度は必須でいいけど
それ以上細かい打ち合わせしなくても大抵の場合先方で加工できるからね。

>元の動画を削除
同様に一対一の対応で無い場合の処理は?

ぱっと見考えられるのはこのぐらいかな。ルーチンワークといっても手作業と言えるところは全てチェックする。
またこういうものは択一化したほうが後で整理されていて見やすいと思えるから、できれば作業も固定してこれだと言えるやり方をもっておく。
84名無し~3.EXE:03/09/14 12:43 ID:8B6V447O
DExploreをスクリプトから操作したいんですが、
スクリプトが終了すると作成したDExploreも終了してしまいます。
これをIEのようにスクリプトが終了しても作成したプロセスが残るようにする方法はあるんでしょうか?
85名無し~3.EXE:03/09/14 20:51 ID:LY4vb1Qy
>>83
小難しく考えすぎな気が。スクリプトなんだからこの程度じゃ駄目?
yakizumi.js とかで保存して動画ファイルをD&D。
消した動画ファイルはゴミ箱に入らない無いので注意。

var Shell = WScript.CreateObject( "WScript.Shell" );
var Argu = WScript.Arguments;
var Fso = new ActiveXObject("Scripting.FileSystemObject");
var IE = new ActiveXObject("InternetExplorer.Application")
IE.Navigate("about:blank");

for ( var i = 0; i < Argu.length; i++ ) {
var target = Argu.Item(i);
Shell.Exec( "C:\\temp\\sinkuhadouken\\SinkuHadouken.exe " + target );
WScript.Sleep(800);
Shell.Sendkeys( "^c" ); WScript.Sleep(100);
Shell.Sendkeys( "%{F4}" ); WScript.Sleep(100);
var data = IE.Document.frames.clipboardData;
var file = Fso.CreateTextFile( target + "_焼き.txt" );
file.WriteLine( data.getData("text") );
file.Close();
Fso.DeleteFile(target);
}
8683:03/09/15 09:48 ID:vBMxDNYv
>84
確認するけどDExplorerってMicrosoft Document Explorerの事だよね。
Runメソッドでそんな振る舞いをするの? ウチでは普通に起動するのだが、別の操作方法があるか、そもそも別物?
解答ではなくすまないが、.NETでWSH Helpクン見たいな事ができないか模索しているとこなので。

>85
おお、すまねっス。
風呂敷広げすぎて、下手したら今週か来週の休日半日ぐらい潰すとこだった。
多分そこまで要求していないとは思ったけど、使い方が分からない以上必要十分を満たすまでは提示して無いと。
OLSで前出で言った感じ+サムネール機能まで備えたものとかがありそうな気もするし。
徒労はたいした事ではないが、再発明はコストかかり過ぎと思えたので。
87名無し~3.EXE:03/09/17 10:16 ID:/NLoFkkS
>>85
ありがd。ラクチンでよいですね

しかし、手動では取得できるんですが
ファイルによって必ず「ファイルのオープンに失敗」になります
多分真空波動研側の問題っぽいですけど
88名無し~3.EXE:03/09/17 23:05 ID:d7ZBtWRC
>>87
ファイル名やディレクトリ名にスペースが含まれているとか。

Shell.Exec( "C:\\temp\\sinkuhadouken\\SinkuHadouken.exe " + target );
↓変更
Shell.Exec( "C:\\temp\\sinkuhadouken\\SinkuHadouken.exe " + "\"" + target + "\"" );
89名無し~3.EXE:03/09/17 23:06 ID:d7ZBtWRC
sage忘れた…回切首升。
90名無し~3.EXE:03/09/19 10:33 ID:jYVZqxOM
同じ環境で(ハードウェア構成のみ違う)片方だけWSHでエラーが出ます。
エラーは
行 20
文字 1
エラー 0x80041013
コード 80041013
ソース (null)
で、スクリプトは(上12行は改行エラーに引っかかるので削って有ります)
SamurizeDir = "C:\progra~1\Samurize"

'---- これ以降は恐らく触らないように
Dim WshShell

Set WshShell = CreateObject("WScript.Shell")

for each Process in GetObject("winmgmts:").InstancesOf ("win32_process")
if Process.name = "Client.exe" then
Process.Terminate()
end if
next

WshShell.run chr(34) & SamurizeDir & "\Client.exe" & chr(34)
です。
WSHも最新版入れてみたんですけど駄目でした。
片方は正常に動作してるんですけどもなぜでしょうか?
XPSP1a
91名無し~3.EXE:03/09/19 12:59 ID:YbfJ695c
そのエラーはWMIのライブラリがおかしいか、In-proc-providerがregsvrされていないか
どちらにせよXPだと外部コンポーネントでは無いので直すのはきつそうだね。
92名無し~3.EXE:03/09/21 02:18 ID:6/vZ8kKX
win98のペイントに SendKeys を使って
起動/変形(I)/キャンパスの色とサイズ(A)/ の
ダイアログを開くところまでの .vbs を書きました。
このあとダイアログ内の幅・高さの値として
それぞれの枠内へ共に 16 を打ち込ませる記述の仕方を教えて下さ。
93名無し~3.EXE:03/09/21 02:51 ID:Hyh0GkZT
>>92
{TAB}
94名無し~3.EXE:03/09/21 11:23 ID:45wJ62Te
>>81のエディタを使った一括リネームスクリプトをjsで書き直しつつ改造してみた。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1022248177&res=41

大文字<>小文字の変換、ファイル名の相互変換が可能なあたりが
改造ポイントだったんだけど、書いてる内にドンドン長くなって収拾つかなくなった…
最初によく考えてから作らな駄目ね。
9590:03/09/21 18:22 ID:zUh2oDNn
>91
ありがとうございました。SP2出たら再インスコします。
他に特に不具合無いですし、dll書き換えしてあるから面倒なので。
その間に解決法もう少し探してみます。 
96名無し~3.EXE:03/09/24 01:03 ID:1oDMEKKm
wsfファイルに

<?xml version="1.0" encoding="Shift_JIS" standalone="yes"?>
<job id="hoge">
<script language="JScript">
for(i = 0 ; i < 10 ; i++) {
WScript.Echo("hoge");
}
</script>
</job>

これを実行すると「temp.wsf(4, 17) Windows Script Host: 適切な名前を指定してください。」とエラー。
なんでだろ?
ちなみに一行目のxml宣言を消去するとエラーが出ません。
97名無し~3.EXE:03/09/24 01:06 ID:iFxw9luN
<![CDATA[

]]>
98名無し~3.EXE:03/09/24 01:10 ID:1oDMEKKm
>>97
即レスサンクス。
; って実体参照に変換されてしまうんでしたっけ。
99 ◆aiko2Ox.8g :03/09/24 03:39 ID:wHaOswjZ
たしか参照実態になると思う。
100名無し~3.EXE:03/09/24 09:10 ID:1oDMEKKm
あ、< が使えないんだった・・・。
< にすればいいのか。
101名無し~3.EXE:03/09/24 09:22 ID:1oDMEKKm
>>100 後者は &lt; です。
102名無し~3.EXE:03/09/24 13:36 ID:ZGxymplv
ドキュメントの嘘ハケーン
InputBoxでキャンセルを押すと""(空文字列)が返ると書いてあるが
返るのは未定義値じゃないか。
103名無し~3.EXE:03/09/24 22:47 ID:PLBE2AqK
>102
MsgBox TypeName(InputBox(""))
OK      →String
キャンセル→Empty
当方Win2kWSH5.6
104103:03/09/24 22:58 ID:PLBE2AqK
あ、TypeName(vbNullString)もTypeName("")もStringだった。
疑って失礼。それで桶。
105102:03/09/24 22:58 ID:1oDMEKKm
>>103
EmptyってJScriptでいうundefinedですよね?
JScript側でその変数を受けるとundefinedになるもんで。
106教えて君:03/09/24 23:36 ID:t9Wfbtkd
皆様の足元にも及ばない、まるで教えて君で申し訳ないのですが
パスワードの設定に関して妥当性を正規表現で評価する方法を探しています。
もし皆様のなかで優れた方法をご存知でしたら、教えてください。
VBSで評価しようとしています。(お恥ずかしい話です)
条件は色々あると思いますが、私が想定しているのは
-8文字以上
-14文字以下
-アルファベット(大文字小文字)どこにあってもよく各1文字以上
-数字 どこにあってもよく各1文字以上
で作られていることです。
107名無し~3.EXE:03/09/25 14:32 ID:jtvQuq5F
108名無し~3.EXE:03/10/02 17:26 ID:GMdrafYJ
おい藻舞等!

\Program files\ディレクトリ内にあるアプリを4つほど一定間隔(2,3秒)あけて実行するようなスクリプトってどういう記述なのか教えてください。
おねがいします。
109名無し~3.EXE:03/10/02 17:48 ID:ydnykN2R
var exeList = ["exe1","exe2","exe3","exe4"];
var path = "略\\Program files\\";
var w = WScript;
var wsh = w.createObject("WScript.Shell");
for(var i = 0; i < exeList.length; i++) {
wsh.run(path + exeList[i]);
w.sleep(2500);
}
110名無し~3.EXE:03/10/05 00:21 ID:UjFj5wuS
92>>93
ありがとうございます。
WshShell.SendKeys "^e1{TAB}1{ENTER}^vy" として
起動・キャンバスサイズ調整・貼付までを以前より随分楽できるようになりました。
111名無し~3.EXE:03/10/05 15:04 ID:OL3S5a/m
WSHでメッセージダイアログを常に最前面に表示する方法ってありますか?
112名無し~3.EXE:03/10/06 23:49 ID:wyQwr0PS
shell = new ActiveXObject('WScript.Shell');
shell.Popup('Message', 0, 'Title', 0x40000);
とか
MsgBox "Message", &H40000, "Title"
とか。
113111:03/10/10 01:14 ID:XYjFDDZh
>>112
レス遅くなってすみません。

Popupメソッドにそういうのがあったなんて知りませんでした。
出来ました〜ありがとうございます。

114名無し~3.EXE:03/10/17 08:54 ID:5nmvnQOT
WSHで現在のCPU使用率と
送受信の速度と物理メモリ残量、
アクティブタイトルウィンドウの名前を
テキストファイルに吐き出させるのって
どういう記述なのですか?
教えておながい。
携帯にこれらの情報をメールで送りたいのです。
115名無し~3.EXE:03/10/17 23:00 ID:NiOh3LHO
>114
上の3つは解説尻侍のページに載ってるけど、タイトルの名前だけはいかんともし難い。APIが使える言語で取得するのがお勧め。
116名無し~3.EXE:03/10/18 01:43 ID:vXBochA+
Windows のメモ帳が
いつも同じウインドウの位置とサイズで起動するような VBS ください。
117名無し~3.EXE:03/10/18 05:53 ID:R4zSi0xK
>>114
立ち上げているアプリケーションが決まっていて、その中から選択して確認するので
あれば、AppActivateを工夫して使えば何とか出来そうな気がしますが如何でしょうか?

あと、ActivePerlならWin32APIにアクセスできるけど、どうでしょうか?
参考までにhttp://plaza27.mbn.or.jp/~satomii/jdoc/ActivePerl/lib/Pod/Win32.htmlを読んでみるとよいかも
118114:03/10/18 08:57 ID:qyKObo/h
>115
>117
レスサンクス。最近ActivePerl入れたばかりなので
頑張ってみるっす。ありがとうございました。
119114:03/10/20 22:15 ID:znpZc9CR
dim objWMI, objProcess, strProcessesSize

Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}")
Set objProcess = objWMI.InstancesOf("Win32_process")

For each Process in objProcess
strProcessesSize = strAllProcesses & Process.WorkingSetSize & vbcrlf
Next

Set Fs = WScript.CreateObject("Scripting.FileSystemObject")
Set ts = Fs.OpenTextFile("mem.txt",8,1,0)
ts.Write Date & " " & TIME & vbCrLf & strProcessesSize

これでメモリ使用量を取得できたんだけども
これだとプロセスごとのメモリサイズがByteで表示されてしまう。
プロセスごとではなく合計のメモリ使用量をMB換算で得るには
どう書けばいいんですか?
120名無し~3.EXE:03/10/21 01:10 ID:2yrhp+1q
>>119
足して割れば?
121名無し~3.EXE:03/10/21 19:47 ID:3JpVx+Zc
>>119
win2k、xp限定、利用可能な物理メモリ量だけど
Win32_processじゃなくてWin32_PerfRawData_PerfOS_Memoryを使い
AvailableMBytesでMB単位で取得できます。

あとbyte単位だけど、Win32_OperatingSystemで
TotalVisibleMemorySizeからFreePhysicalMemoryというのはどうでしょう。
MBが良ければ割ればいいし。
122114:03/10/21 20:04 ID:oL/Yjexx
svr = "localhost"
Set objLocator = CreateObject("WbemScripting.SWbemLocator")
Set objService = objLocator.ConnectServer (svr, "root/cimv2")
strOSQuery = "Select * from Win32_OperatingSystem"
set objOS = objService.ExecQuery(strOSQuery)
for each machine in objOS
Set Fs = WScript.CreateObject("Scripting.FileSystemObject")
Set ts = Fs.OpenTextFile("memory.txt",8,1,0)
ts.WriteLine FormatNumber(machine.FreePhysicalMemory / 1024,0) & "MB"
next
これで表示することができーたよ
ありがとう。あとは送受信の速度だけだ。
アクティブタイトルウィンドウはもういいや
123121:03/10/21 20:48 ID:3JpVx+Zc
>122
出来たみたいなので今更だけど>121の修正。
× あとbyte単位だけど、
○ あとkilobyte単位だけど、

× TotalVisibleMemorySizeからFreePhysicalMemoryというのはどうでしょう。
○ TotalVisibleMemorySizeからFreePhysicalMemoryを引くというのはどうでしょう。
124名無し~3.EXE:03/10/22 00:08 ID:UDOmLW+j
固定長のファイルを開いて特定の位置を参照しに行って
そのフィールドの内容が変わったらその内容をファイル
名として保存。
を出来なくなるまで繰り返すと言う構文を誰か作ってくれませんか?
125名無し~3.EXE:03/10/22 00:13 ID:Sk6axIvV
データの置き換えをしたいのですが、
バイナリファイルを書き換えるスクリプトの書き方がわかりません。
126名無し~3.EXE:03/10/22 12:44 ID:GwH1gVPa
>>122
お昼休みに時間が空いたので
WSHからアクティブウィンドウのタイトルを取得できるCOMコンポーネントを作ってみた。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1022248177&res=44&fi=no

ちなみにPerlでやると↓これで終わり。
#!/usr/bin/perl

use Win32::GuiTest qw(
GetForegroundWindow
GetWindowText
);

print GetWindowText(GetForegroundWindow());
127名無し~3.EXE:03/10/22 12:49 ID:gbJcXGbD
おまいらこの分野で飯くっていけるんじゃね?
128114:03/10/22 22:11 ID:7N37iGyL
>>126
取得できたー
お昼休みにつくれちゃうんだ。すげぇ
ぐぐってた時間より短いかも。
ありがd
COMコンポーネントっつーのは便利だね
また一歩前進しますた
129124:03/10/24 00:28 ID:4F38giwl
>>11さん

例えば 

aaa123ffaaabbb
aaa123ffaaabbb
aaa124ffaaabbb
aaa124ffaaabbb
aaa125ffaaabbb

と言うテキストファイルが有った場合、
4バイト目から3バイトと指定すると上から2レコードを[123]
3・4レコードを[124]、5レコード目を[125]と言うファイル名で
分割保存する構文を作って頂けないでしょうか・・・
130名無し~3.EXE:03/10/24 13:13 ID:aQiPIRxb
>>129
こんな感じか。元ファイルはソートされていると仮定、
且つ「4バイトから3バイト」じゃなくて「4文字目から3文字」だけど。

var fso = new ActiveXObject( "Scripting.FileSystemObject" );
var inFile = fso.OpenTextFile( "inFile.txt", 1 );
var line, oword, nword, outFile; oword = "";
while ( line = inFile.ReadLine() ) {
if ( oword != ( nword = line.substr( 3, 3 )) ) {
if ( oword != "" ) { outFile.Close(); }
outFile = fso.CreateTextFile( nword );
oword = nword;
}
outFile.WriteLine( line );
}
inFile.Close();
131130:03/10/24 13:29 ID:aQiPIRxb
>>130 ループ失敗。
while ( !inFile.AtEndOfStream ) {
line = inFile.ReadLine();
132名無し~3.EXE:03/10/24 23:59 ID:R+rlcIk6
http://www.emeditor.com/jp/v4.htm
次期バージョンのEmEditorがマクロ機能にWSHを利用。

少し面白いことになりそうかも?
133名無し~3.EXE:03/10/25 01:01 ID:HrqsxY5Q
>>132
WSHマクロの記録機能を持ったエディタって他にもあるんですか?
134名無し~3.EXE:03/10/25 01:40 ID:sXzppNsu
>>133
サクラがそうだったような
135名無し~3.EXE:03/10/25 21:38 ID:Hw2+CnR3
>>130
ありがとう!神様
136名無し~3.EXE:03/10/25 22:23 ID:UGZkVwHC
WMIの情報ってまとまってどっかにありますか?
普段見てるところとか。
英語かなーやっぱり。
137名無し~3.EXE:03/10/25 23:31 ID:W3zYBTM0
>>136
なんだかんだ言ってもMSDNかな。
WMI スクリプト入門
http://www.microsoft.com/japan/msdn/columns/scripting/scripting06112002.asp
このページは1部だけど、2部もある。
ページの下の方にリンクがある他のコラムも役に立つ。

リファレンスとかは英語しかないけど
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/wmi_reference.asp?frame=true
138名無し~3.EXE:03/10/26 00:14 ID:NNG1rQuw
wshって何て読むの?
139名無し~3.EXE:03/10/26 00:52 ID:DFi2wPBH
うしゅ
140_:03/10/26 00:53 ID:1w01ydiz
>138
windowsのヘルプに訊いてみれ
141名無し~3.EXE:03/10/26 05:05 ID:aZPN4Wwk
テキストファイルの最後の行だけ書き出すってどうすればいいんですか?
winampのプラグインに現在演奏中の曲情報をテキスト書き出すやつがあるんですけど、
新しい曲の情報は前の曲の情報が書かれている次の行に書かれてしまうので、
演奏中の曲の情報は常に最後の行にあるのでつ。
Option Explicit
Const ForReading = 1
Dim objFS, objTS
Dim strLine
Set objFS = WScript.CreateObject("Scripting.FileSystemObject")
Set objTS = objFS.OpenTextFile("C:\songs.txt", ForReading)
strLine = objTS.ReadLine
Set objTS = objFS.OpenTextFile("playlist.txt",2,1,0)
objTS.Write strLine
これだと最初の行、つまり一番古い情報しかとりだせない。ヽ(`Д´)ノウワァァン
お前ら、教えてつかーさい。おながい。
142名無し~3.EXE:03/10/26 05:48 ID:V/IhCthU
Do Until objTS.AtEndOfStream = True
strLine = objTS.ReadLine
Loop
143名無し~3.EXE:03/10/26 06:00 ID:aZPN4Wwk
>>142
なるほど。無事できました。
ありがとうございました。
144129:03/10/26 21:06 ID:OjBserzL
>>130-131

ちょこっと勉強して、basic言語の方(拡張子.vbsの方)
で作ってみました

dim fs
dim inFile
dim outFile
dim line
dim oword
dim nword
oword=""
set fs=WScript.createobject("scripting.filesystemobject")
set inFile=fs.OpenTextFile("test.txt",1)
do until inFile.AtEndOfStream
line=inFile.ReadLine()
nword=mid(line,4,3)
if oword <> nword then
if oword <> "" then
outFile.Close()
end if
set outFile=fs.CreateTextFile(nword)
oword=nword
end if
outFile.WriteLine(line)
loop
inFile.Close()
145名無し~3.EXE:03/10/26 21:32 ID:0UDkjOLo
sendkeysメソッドがうまく動かないときがあります。
処理にはsleepで充分待ち時間を持たせていますがダメです。
どうにか安定して動作させられないでしょうか。
146126:03/10/26 23:11 ID:dxECXyGU
>>128
ごめん。>>126でうpしたヤツはバグってました。差し替えて下さい。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1022248177&res=45&fi=no

もう見てないかなぁ。
147名無し~3.EXE:03/10/27 14:54 ID:Q3OD8uHQ
あのー、winampのメインウィンドウのクラスであるWinamp v1.x
に次の曲を演奏させるキーコード[40048]を送りwinampを
操作するようなことはWSHで可能なんでしょうか?
148名無し~3.EXE:03/10/27 21:08 ID:3qtoEVsf
149名無し~3.EXE:03/10/27 23:52 ID:SDkI7BUP
>>147
>>4にある「DynaCall - Win32APIコール」が必要だけど、簡単に出来た。
ただし、ウィンドウクラスが"Winamp v1.x"なのはver 1.x or 2.xなので注意。
ver 3.x は"BaseWindow_RootWnd"かな?

var WM_COMMAND = 0x0111;
var WM_USER = 0x0400;
var UserWrap = WScript.CreateObject("DynamicWrapper");

UserWrap.Register ( "USER32.DLL", "FindWindow", "i=ss", "f=c", "r=h" );
UserWrap.Register ( "USER32.DLL", "SendMessage", "i=huuu", "f=c", "r=l" );
var hWnd = UserWrap.FindWindow( "Winamp v1.x", 0 );
var result = UserWrap.SendMessage( hWnd, WM_COMMAND, 40048, 0 );
150147:03/10/28 01:04 ID:rFgJP0ul
>>149
148氏による斡旋により、winampのディベロッパーなんちゃらのページを
みてデルファイやコンパイラなどをインストールしましたが、
さっぱり使いこなせず困っておりました。
作っていただきありがとうございます。
これは値を変えればほかのアプリにも利用できそうですね。
しかし、next.jsとして実行するとこんなエラーが出てしまい、処理できないです。
"0x6b71fd81" の命令が "0x000c0000" のメモリを参照しました。メモリが "read" になることはできませんでした。
DynaCallも登録したのになんでだぁー・゚・(ノД`)・゚・。
151名無し~3.EXE:03/10/28 02:11 ID:cw5TLuZA
>>150
f=c を f=s に変更する。
UserWrap.Register ( "USER32.DLL", "FindWindow", "i=ss", "f=c", "r=h" );
UserWrap.Register ( "USER32.DLL", "SendMessage", "i=huuu", "f=c", "r=l" );
の2行を
UserWrap.Register ( "USER32.DLL", "FindWindow", "i=ss", "f=s", "r=h" );
UserWrap.Register ( "USER32.DLL", "SendMessage", "i=huuu", "f=s", "r=l" );
に変えてみて。
152147:03/10/28 12:56 ID:rFgJP0ul
できました。
一時停止や前の曲に戻るなども送ることができました。
マウ筋っていうマウスジェスチャソフトに登録して使ってます。
かなり(・∀・)イイ!!
サンクス。
153名無し~3.EXE:03/10/29 12:44 ID:6qUS970B
自分のサイトを見ているときに、右クリックから呼び出すと
ローカルのファイルをエディタで開き、編集後エディタを閉じると、
自動でFTPアップロードするスクリプトを書いてみた。
>4で紹介されている BASP21 ttp://www.hi-ho.ne.jp/babaq/basp21.html が必要。

ttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1022248177&res=46
154名無し~3.EXE:03/11/01 21:40 ID:jP49QEJc
質問なんですが同じ名前のアプリを同時起動してる場合は
AppActivateの引数で指定するとどちらがアクティブになるんでしょうか?

例えば
Dim WSHShell
Set WSHShell = WScript.CreateObject("WScript.Shell")
WSHShell.AppActivate("無題 - メモ帳");

このときメモ帳が2つ開いていた場合です。
155名無し~3.EXE:03/11/01 21:47 ID:vF/O2HTq
名前が title と一致するアプリケーションのインスタンスがいくつかある場合、アクティブになるインスタンスは不定です。
156名無し~3.EXE:03/11/04 00:28 ID:Oi7xTTpY
Syrup16g - 明日を落としても 4:58
2003/11/04 0:19:52
っていう文字列を
artist:Syrup16g
title:明日を落としても
time:4:58
date:2003/11/04 0:19:52
このように表記するためのvbスクリプトきぼん
157名無し~3.EXE:03/11/04 02:31 ID:ieNSu29Z
>>156
msgboxに表示させたいのであれば、ダイアログクリエータ(名前間違ってるかも)というソフトを使えばいいかと。ベクターのジョークソフトカテにある。
158名無し~3.EXE:03/11/04 12:34 ID:ZPgYCqbJ
>>156
入出力をどうするつもりか知らないけど。

str1 = "Syrup16g - 明日を落としても 4:58"
str2 = "2003/11/04 0:19:52"
Set bobj = WScript.CreateObject("basp21")
out = bobj.Replace("s/(.*) \- (.*) (\d+:\d\d)/artist: \1\ntitle: \2\ntime: \3\n/k", str1)
out = out & "date: " & str2
Set bobj = Nothing

MsgBox out

なんか .* の使い方がいいかげんな気はするけど、いちおう動くな。
で、慣れてるBASP21使っちゃったけど、こういうのってRegExpオブジェクトではどう書くの?
Set re = New RegExp
re.Pattern="(.*) \- (.*) (\d+:\d\d)"
MsgBox re.Replace(str1, "\1 \2 \3")
とか試してみてもうまくいかないし。
ExecuteしてMatches参照するのもなんか違うような。
15911:03/11/04 14:20 ID:4ZmepCbj
Set re = New RegExp
str1 = "Syrup16g - 明日を落としても 4:58"
str2 = "2003/11/04 0:19:52"
re.Pattern="(.*) \- (.*) (\d+:\d\d)"
out= re.Replace(str1, "artist: $1" & vbCrLf & "title: $2" & _
vbCrLf & "time: $3" &vbCrLf & "date: " & str2)
MsgBox out
160158:03/11/04 15:39 ID:ZPgYCqbJ
はっ、\1 \2 \3 じゃなくて $1 $2 $3 でしたか。
たしかにMSDNにもそう書いてある。
勘違いはずかしー、どもっす。
161156:03/11/04 18:13 ID:Oi7xTTpY
レスサンクス。
ホームページに演奏中の曲を表示させてみたかったんッス
(perlだけでできるのかもしれないけど)
無事表示させることができた。
お前等、ありがとう。勉強になったよ
162名無し~3.EXE:03/11/04 18:23 ID:U/IfMn1D
>>161
文字処理はむしろperlの領分だろ……
163名無し~3.EXE:03/11/05 01:45 ID:6Leu/nYp
うんざりするほど大量にあるWord Document, Exel Sheetに
テキスト全置換かけることになりました。
とりあえずそれぞれのアプリでVBAマクロとして全置換操作を
記録させ、そのコードを表示させてパクり、WSHとして外から
CScriptで置換してみたのですが、テキストボックス等の図中の
テキストが置換対象になりません。
どうやら、ActiveなDocumentなりWorkSheet上でCtrl-Aによって
選択できる範囲のみが、置換対象となる模様です。

テキストボックスなどの図を含めて、全置換を行うには、
どうしたらよいでしょうか。知恵を貸してください。
164名無し~3.EXE:03/11/05 17:52 ID:zQfITpr6
>>163
WSH使わないでVBAだけでやった方が良いんじゃない?
あんまりスマートじゃないけど、
予め処理したいファイルのパスを配列に格納しておいて、
順次Documents.Open、置き換え、Closeすれば行けそう。
VBAスレ探して聞いた方が良いかもね。
165名無し~3.EXE:03/11/05 23:42 ID:kkgOPlFa
それって普通にアプリ上から全置換操作をかけたときには置換対象どうなるの?
166名無し~3.EXE:03/11/05 23:54 ID:7ofPajCH
>165
手動による置換では、DocumentやWorkSheet中のテキストは全て置換されます。
その操作を記録したマクロを実行してもダメなようですね。同様に、その
マクロをパクッたWSHスクリプトでも、置換残しが発生します。
167名無し~3.EXE:03/11/06 00:49 ID:8+idPDEE
Excelテキストボックス検索置換ツール なんてもんがあったんで
どんなことしてるのか参考にしてみようと思ったら、
シェアウェアなのでコード見せてくれない。ドケチ。

まあWSHっていうより完全にVBAの問題だけどな。
168名無し~3.EXE:03/11/06 04:41 ID:gx82oMae
テキストファイルに書いてある先頭の5行だけを表示するには
どうすればよいですか?
169名無し~3.EXE:03/11/06 07:20 ID:JPvi7d0b
ReadLine() 使って何とかしろ
170名無し~3.EXE:03/11/07 14:13 ID:m3O/O1XQ
http://pc2.2ch.net/test/read.cgi/software/1067407316/36
すいません、↑こちらから誘導受けてきました
気が向いたらレスください。
171名無し~3.EXE:03/11/07 16:20 ID:ogbv3E5y
>>170
<!------------------------------ここから------------------------------>
<job id="js">
<script language="JScript">
var WshShell = new ActiveXObject("WScript.Shell");

// 電卓が起動していなければ起動
if(!(WshShell.AppActivate("電卓"))){
WshShell.Exec("calc.exe");
WshShell = null;
WScript.Quit();
}

WshShell.AppActivate("電卓");
WScript.Sleep(100);
WshShell.SendKeys("%{F4}");
WshShell = null;
</script>
</job>
<!------------------------------ここまで------------------------------>
上記のものを適当な名前(例えばCalc.wsf)で保存し、ダブルクリックすれば希望する動作が(一応)可能。
終了はSendkeysを使用しているので、Sleepを長めに変更しないとうまく行かないこともあります。(デフォルトは100ms)
ファイル名は拡張子を『.wsf』で保存しないと動作しないので要注意!

こんなんでどう?
172名無し~3.EXE:03/11/07 21:16 ID:xqel7PTK
>>168
こんな感じか?

Txtfile = "hoge.txt"
Set WShell = WScript.CreateObject("WScript.Shell")
WShell.Run "notepad """ & Txtfile & """"
WScript.Sleep(1000)
WShell.Sendkeys("{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}+^{END}{DEL}")
173名無し~3.EXE:03/11/07 21:21 ID:gjOvYTRU
>>172
間違ってCtrl+s押しちゃうと怖いから、
ReadLine()で5行読み込んで新規ファイルに保存してそれを開く方が良いんじゃないかな。
174名無し~3.EXE:03/11/07 23:08 ID:iJi50Muw
どうやってReadLine()で5行だけを読み込むの?
175名無し~3.EXE:03/11/07 23:19 ID:H0SLYH01
>>171
終了させる部分だけね。

var prc = GetObject("winmgmts:{impersonationLevel=impersonate}")
.ExecQuery("SELECT * FROM Win32_Process");
for ( var e = new Enumerator(prc); !e.atEnd(); e.moveNext() ) {
var pf = e.item();
if ( pf.Caption == "calc.exe" ) {
pf.Terminate();
}
}
176名無し~3.EXE:03/11/07 23:38 ID:Rb23YGOW
ReadLine()を5回使う
177名無し~3.EXE:03/11/07 23:41 ID:u7kPPAAZ
>>174
for ( var i = 0; i < 5 && !file.AtEndOfStream; i++ ) {
str += ( file.ReadLine() + "\n" );
}
178名無し~3.EXE:03/11/08 14:16 ID:xbhrHbUR
>>170です。
レス頂いた皆様に感謝しながら感謝します。
内容読んでよーく勉強します。ありがd 
179名無し~3.EXE:03/11/11 23:46 ID:LGBvqsad
vbsでモニターの電源がONかOFFなのかを
みわけることってできる?
180名無し~3.EXE:03/11/12 09:59 ID:1xe1a8cO
できるよ、たぶん。

 消費電流を測るセンサーをモニタに取り付ける
→その結果をPCで読み出すCOMコンポーネントを作る
→vbsで呼び出す
181名無し~3.EXE:03/11/12 13:01 ID:fc7BQiUd
ハードがいるのか・・
PCの電源切るとモニタがスタンバイ状態になるので
取得できると思ったが、あれはモニタ側が感知
してるんだった。
182名無し~3.EXE:03/11/16 02:28 ID:SAcCF5a2
vbsでGetFolderを使うと、フォルダのなかにあるファイルの数を調べたり、
サブフォルダの数を調べたり、フォルダのなかにあるファイルの
オブジェクトを返すことが出来ますが、C言語で同じことをするには
どうしたらいいでしょうか。
183名無し~3.EXE:03/11/16 04:36 ID:2mli69J5
>>182
Cつっても色々だしな。
unix系なら#include <dirent.h>してopendir、readdir、closedir。
windowsならFindFirstFile、FindNextFile、FindClose。
ボーランドの処理系もdirent.hあるらしいからunix系と同じで可かな。
184名無し~3.EXE:03/11/17 05:34 ID:lPUeT4sI
>>179
とりあえず、JScriptで作ってみたがこんなのはどう?
//----------------------------------------------------- ここから -------------------------------------------------------
var e= new Enumerator(GetObject("winmgmts:").InstancesOf("Win32_DesktopMonitor"))

var A_state = new Array();
A_state[1] = "Other"; A_state[2] = "Unknown"; A_state[3] = "Running/Full Power";
A_state[4] = "Warning"; A_state[5] = "In Test"; A_state[6] = "Not Applicable";
A_state[7] = "Power Off"; A_state[8] = "Off Line"; A_state[9] = "Off Duty";
A_state[10] = "Degraded"; A_state[11] = "Not Installed"; A_state[12] = "Install Error";
A_state[13] = "Power Save - Unknown"; A_state[14] = "Power Save - Low Power Mode"; A_state[15] = "Power Save - Standby";
A_state[16] = "Power Cycle"; A_state[17] = "Power Save - Warning"; A_state[18] = "Paused";
A_state[19] = "Not Ready"; A_state[20] = "Not Configured"; A_state[21] = "Quiesced";

for (;!e.atEnd();e.moveNext()){
var DesktopMonitor = e.item();
WScript.echo (A_state[DesktopMonitor.Availability]);
}
//----------------------------------------------------- ここまで -------------------------------------------------------
WMIを利用しているのでDefaultで使えるのはWin2k/XPのみだけど、WMI SDKをインストールすれば、Win98とかでも使えるはず。

スクリプトの内容は、WMIのWin32_DesktopMonitor Classをコレクションに入れて、配列に当てはめた文字列を呼び出しているだけなのでVBScriptでも同じことが出来るはず。

Win32_DesktopMonitor Classに関してはhttp://msdn.microsoft.com/library/en-us/wmisdk/wmi/win32_desktopmonitor.aspを参照されたし

185179:03/11/17 18:51 ID:nRzsi6TW
>>184
こんなクラスがあったとは知らなんだ。
某掲示板過去の記事にも載ってなかったYO。
リンクまで貼ってくれてありがd
リンク先で勉強してきまつ。
186182:03/11/18 04:30 ID:cKQr6PFc
>>183
ありがとうございます。調べてみます。
187180:03/11/18 04:33 ID:hrSaSO12
!!!
同じくこんなクラス知らなんだ。
めちゃめちゃ勉強になったです。ありがd
188179:03/11/18 06:06 ID:Y24V+OlW
モニタの電源をOFFにして実行してもRunning/Full Power
になる。なぜ?
189名無し~3.EXE:03/11/18 12:16 ID:/OetXwLa
IEオブジェクトを使って、
ttps://trade.hirota-sec.co.jp/inet_trade.html
ここで表示される「ログインID」にデータを入れることはできませんか?
190名無し~3.EXE:03/11/18 19:34 ID:3baO7seh
>>188
電源状態はグラフィックボードの出力状態であって
実際のモニターの電源状況じゃないんじゃないの?
手動でモニターの電源を切ってもPCは判別出来ないんじゃないの?
191名無し~3.EXE:03/11/19 01:16 ID:BGGlXLpV
janeで書き込んだ後に、adslモデムを切断して再接続させるwshをください。
192名無し~3.EXE:03/11/19 02:27 ID:tuh5bMJr
>>189
ここのすなはらさんに対するレスが参考になると思います。
http://www.roy.hi-ho.ne.jp/mutaguchi/bbs/list92.shtml
193名無し~3.EXE:03/11/19 02:44 ID:9YVFNkGB
ttp://page6.auctions.yahoo.co.jp/jp/auction/f11485539
ttp://page6.auctions.yahoo.co.jp/jp/auction/f11603514
http://page6.auctions.yahoo.co.jp/jp/auction/f11748898

z_y_x_3_2_1 (51)←コイツ●紅PC何気に12台出品。

今回の出品で100万越えはほぼ確定。
194189:03/11/19 10:07 ID:0Vo1qZxr
>>192
ありがとうございます。
しかし、目的のhtmlがフレームとjavascriptでうまく隠蔽されているようで、通常のhtmlを操作することはできますが、このページだけはオブジェクトが取得できないです。。。
195184:03/11/19 20:54 ID:9g/8/ljW
>>188
たぶんそうです。
>>194
こんなのはどうでしょう?
<!------------------------------ 自動ログイン:廣田証券.html ここから------------------------------>
<script language="JavaScript">
// 任意の値を設定してください。
account_0 = "ユーザID";// アカウント名
password_0 = "パスワード";// パスワード
// 設定ここまで。
hParent = external.menuArguments;
pageURL = "https://trade.hirota-sec.co.jp/HRP02/TRADE/SV";
formNumber = 0; submitTag = "INPUT"; submitNumber = 6;
accountTag_0 = "userID";
passwordTag_0 = "password";
DoLogin(hParent.document);
function DoLogin(objDoc){
var document = objDoc;
try {
document.forms(formNumber).elements(accountTag_0).value = account_0;
document.forms(formNumber).elements(passwordTag_0).value = password_0;
document.all.tags(submitTag).item(submitNumber).click();
return true;
} catch(error){
return false;
}
}
</script>
<!------------------------------ 自動ログイン:廣田証券.html ここまで------------------------------>
196184:03/11/19 21:05 ID:9g/8/ljW
上記を適当な名前(例えば、廣田証券.html)で保存し、うりゅそふとのIE MenuExtなどで登録すればIEコンテキストメニューから動くはず。
こちらで試した限りでは、IE6.0とSleipnirではOKみたいだったよ。
(ログインIDを持ってないので正確なチェックは不可能)
後は違うページでは動かないように分岐命令でも組み込んでちょうだい。

作成に当たっては、SleipnirのAutoLoginCreatorとうりゅそふとのゆなデュプリケートを参考にしてます。

ちなみに、うりゅそふとの URL は http://www.uryusoft.com/ だよ。
197184:03/11/19 21:21 ID:9g/8/ljW
>>195

> >>188
> たぶんそうです。

スマン >>190 の間違えだす。
198189:03/11/20 18:50 ID:wPBUdrDV
>>195-196
ありがとうございます。
こちらも解決しました。
IE.document.frames("viewFrame").document.all("userID").value
で代入できました。
こういうのってヘルプないから困るなぁ・・・。

そちらのやり方も試してみます。
199名無し~3.EXE:03/11/20 19:34 ID:F2oQzAaC
janeで書き込んだ後に、adslモデムを切断して再接続させるwindowsscriptinghをください。
200名無し~3.EXE:03/11/20 19:46 ID:9TVnCrzg
>>199
それをやってもID変わらない可能性が大きいんじゃないか?
201名無し~3.EXE:03/11/20 20:12 ID:F2oQzAaC
>>200
いや、いつもそうやって自分の書き込みを援護している。
202名無し~3.EXE:03/11/20 20:13 ID:F2oQzAaC
ちなみにこれね。
FLASHWAVE 2040 M1
203名無し~3.EXE:03/11/21 08:32 ID:rsS5zwFm
>>201
   ∧_∧  / ̄ ̄ ̄ ̄ ̄
  ( ´∀`)< オマエモカー
  (    )  \_____
  | | |
  (__)_)

204名無し~3.EXE:03/11/21 10:30 ID:yyLTac4z
>>203
   ∧_∧  / ̄ ̄ ̄ ̄ ̄
  ( ´∀`)< オマエモカー
  (    )  \_____
  | | |
  (__)_)

やっぱり需要高そうだな>199
205名無し~3.EXE:03/11/22 00:55 ID:57Aaw68x
>>204
つーか、そんなレベルで馴れ合ってどうする(w

                                  しかも、その後レスつかないし(泣
206名無し~3.EXE:03/11/22 01:31 ID:g6z33+vy
http://jbbs.shitaraba.com/game/bbs/read.cgi?BBS=XXXX&KEY=YYYYYYYYYY

こういうURLから、XXXXとYYYYYYYYYYの部分を抜き出すにはどうすればいいのでしょうか?
split使ってArrayじゃ無理ですよね・・・
207184:03/11/22 02:42 ID:aFqgt2RD
>>206
正規表現で何とかなるはず。
<!--------------------------------- ここから ---------------------------------->
<job id="main">
<script language="VBScript">
'InputBoxを呼び出す関数
function vbinput(strprompt)
vbinput = InputBox(strprompt)
end function
</script>
<script language="JavaScript">
var InputStr = vbinput("文字を入力して下さい。");

var re;

re = /http:\/\/jbbs.shitaraba.com\/game\/bbs\/read.cgi\?BBS=(.+)&KEY=(.+)/igm;

WScript.Echo(InputStr.replace(re, "$1"));
WScript.Echo(InputStr.replace(re, "$2"));
</script>
</job>
<!--------------------------------- ここまで ---------------------------------->
とりあえずテスト用スクリプトを作ってみた。
上記を『適当な名前.wsf』で保存して試してみて、OKならこの正規表現パターンを流用すればよいかと。
208名無し~3.EXE:03/11/22 09:30 ID:VQFdfBjl
>>206
var s_url = "http://ime.nu/jbbs.shitaraba.com/game/bbs/read.cgi?BBS=XXXX&KEY=YYYYYYYYYY";
var s_query = s_url.substr( s_url.search(/\?/) +1 );

var a = s_query.split("&");
var re = /(.+)=(.+)/;

for(var i=0, n=a.length ; i<n ; i++){
if( ! re.test(a[i]) ) continue;
WScript.Echo(RegExp.$1 +"\n" + RegExp.$2);

}
209199:03/11/22 13:27 ID:NWN1IDtl
210名無し~3.EXE:03/11/22 14:15 ID:WimPXUTS
>209
モデムの操作は、機種固有のコマンドが関わるので汎用スクリプトは無理だよ。

あなたが使っているモデムのメーカーと機種名・切断・再接続のコマンドと引数を晒してみれば
誰かが作ってくれるかもしれない
211199:03/11/22 14:16 ID:DFwAjyaA
ちなみにこれね。>>202
212199:03/11/22 14:17 ID:DFwAjyaA
ID変わってるけど、>209,211 同じ人。
という具合に良く使ってる。
213名無し~3.EXE:03/11/23 00:47 ID:PYgivdQ9
PPPOEとrasphoneで何とかならんか。半自動だけど。
214名無し~3.EXE:03/11/25 01:49 ID:ieYtyyWw
wshでALT+TABのタスク切替えを表示させたままにしたいと思っています。
そこでSendKeysを使って作ったのですが、一瞬で消えてしまいます。
ALTを押しっぱなしにする必要があると思うのですが、
キー押下時間の指定方法を教えていただけませんか?

Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.SendKeys "%{TAB}"
215名無し~3.EXE:03/11/26 10:49 ID:Y2fg5FZg
win98でwshV5.6をインストールしてみたんですが
どうやったらこれをアンインストールできますか?
216名無し~3.EXE:03/11/26 11:00 ID:THgOMhcn
217215:03/11/26 11:24 ID:6p/o2oLJ
>>216
ありがとうございます
きれいにアンインストールはできないみたいですね
218名無し~3.EXE:03/11/27 12:22 ID:h+gT/hjK
XP 上で WSH を使って、画面の設定等を変更してみたいのですが、
どこら辺から手をつけるといいのでしょうか?
219名無し~3.EXE:03/11/28 23:51 ID:cbanEcf0
http://www.forest.impress.co.jp/article/2003/11/28/gasaire.html
これってwshでもできそうでない?
220名無し~3.EXE:03/11/29 00:19 ID:h9xBwxGJ
>>219
ある程度間隔をあけながらなら出来そうだね。
短い間隔だとスクリプトでCPU占有しつづけそうな気がする。
221名無し~3.EXE:03/11/29 03:54 ID:JAJQbviS
質問です。

Set f = Fs.GetFolder(foldername)
Set fn = f.Files
For Each f1 in fn
  list_out.WriteLine f1.name
Next

こんな風にしてフォルダにあるファイルリストを出力してるんですが、
このファイルリストをソートした状態で出す方法ってありますか?
Forが終わってから自分でソートしないとダメですか?
222名無し~3.EXE:03/11/29 09:01 ID:rPa0TZe3
>>221
NTFSならファイル名順じゃね?
223名無し~3.EXE:03/11/29 09:13 ID:Tde9ir6h
Option Explicit
Dim buf(9999) ' 本番ではredimできるように改造
Dim Fs, f, fn, f1, j, n
Set Fs = WScript.CreateObject("Scripting.FileSystemObject")
Set f = Fs.GetFolder("C:\") : Set fn = f.Files
n = 0: For Each f1 in fn : buf(n) = f1.name : n = n + 1 : Next
qsort buf, 0, n - 1
For j = 0 to n - 1 : WScript.Echo buf(j) : Next
' クイックソート
Sub qsort(a(), Low, Hi)
Dim m, t, i, j
If (Hi <= Low) Then Exit Sub
m = a((Low + Hi) \ 2) : i = Low : j = Hi

While (i <= j)
If (a(i) >= m And a(j) <= m) Then
t = a(i) : a(i) = a(j) : a(j) = t : i = i + 1 : j = j - 1
Else
If (a(i) < m) Then i = i + 1
If (a(j) > m) Then j = j - 1
End If
Wend
qsort a, Low, j : qsort a, i, Hi
End Sub
224221:03/11/29 11:46 ID:JAJQbviS
>>222
FATとNTFSの違いがあったんですね。
自分では両方使っていて、実行するとファイル名順に出たりでなかったりして
原因がわからなかったんですがFATだと並ばないということなら納得がいきました。

>>223
やっぱりソートするしかないんですかね…
おとなしく自前ソートすることにします。


ありがとうございました
225名無し~3.EXE:03/11/29 17:13 ID:QPzxGnN2
HTAを作成の際にHTML部分を自動で作成してくれるソフトを探しております。HP作成支援ソフトをいろいろ試しましたがどうもしっくりきません。
使いやすいソフトを紹介してもらえませんでしょうか
226名無し~3.EXE:03/11/29 19:57 ID:btijNn70
ttp://www.angelfire.com/tv2/doko/edf.txt
11氏のサイトをザーッと読んで
再帰的に作業フォルダ内の指定ファイルを全て削除して、
空フォルダを削除するスクリプトを書いてみました。(既出ですが;)
ここに既にある余分なフォルダの階層を省略するようにしたいのですが、
うまく移動・削除する方法がありましたらご教授お願いします。(BuildPathを弄っては居るのですが…)

※D:\tempを指定し、一階層のフォルダにファイルを引き上げる。
D:\temp\log_a\user1\user1_hoge.xls -> D:\temp\log_a\user1_hoge.xls
D:\temp\log_a\user2\user2_hoge.xls -> D:\temp\log_a\user2_hoge.xls
D:\temp\log_b\user3\dat\hoge1.dat ->  D:\temp\log_b\hoge1.dat
D:\temp\log_b\user4\dat\hoge2.dat ->  D:\temp\log_b\hoge2.dat

>>225
ttp://www.pololon.com/koby/software.php?id=J-Scriptor
これはどうでしょ。
227名無し~3.EXE:03/11/29 23:18 ID:8I+vekmN
IEからVBScriptを使って
Set hoge = CreateObject("Excel.Application")
としてExcelを起動してるのですが
起動されたExcelのシートをクリックしても、
フォーカスはExcel側にあるのですが、
起動元のIEが前面に表示された状態になってしまいます。
(タイトルバーをクリックすると切り替わります)
これを回避する方法はありますでしょうか?
228名無し~3.EXE:03/11/30 00:56 ID:FeHc09+p
hoge.Visible = True
とかはしてみた?
229名無し~3.EXE:03/11/30 09:28 ID:feJWYsXV
>>228
しました。ってかそれやらないと表示すらされなかったっす。

ただそれをやらないで
Set hoge = CreateObject("Excel.Application")
Set hoge = Nothing
これだけで症状が再現するのですが
もしかしてうちだけ??
OSは2000とXP、Excelは2000です。
230229:03/11/30 10:22 ID:feJWYsXV
すみません、229の補足です
「これだけで再現する」とは
IE以外の別のアプリケーションのウィンドウが先に表示されてる状態で
229の2行をIEで実行すると、別のアプリをクリックしてもフォーカスはあたるのに
そのアプリが前面に表示されない状態になります。(タイトルバークリックはOK)
つまりIEが最前面に表示されたままになるようです。
ちなみに、その2行のあとにmsgboxで適当なメッセージを表示すると
回避できるのですが、できればそれは使いたくないです。。
IEは6.0です。
231名無し~3.EXE:03/11/30 11:17 ID:F8fBdH8C
>225
解答ではなく申し訳ないですが、どういうのが使いやすいと思いますか?
スクリプト及びID部分の表記がそのソフトのルールで最適化されてしまうものは論外としても
私見で使いにくさの着目点として、
スクリプトとHTML部の作成するタイミングとの兼ね合いで、後解決が多い→バグが入り込みやすい
というのが考えられるのでこう云うこととかなら、VIDが良いと思うのですが。

>226
再帰部より先に移動しておくのがセオリーだと思いますが、重複の時のルールはどうなっていますか?
DirP┬DirC1─DirG
   └DirC2
でFという名前が
1)PとC1
2)C1とC2
3)C2とG
4)PとG
に存在している場合です。

>227
AppActivateではダメ?
232名無し~3.EXE:03/11/30 20:37 ID:FeHc09+p
>>231
226です。
重複時は上書きするように考えていましたが、
やはりファイル名末尾に(n)を付け加えて移動させようかと…
233名無し~3.EXE:03/11/30 23:55 ID:F8fBdH8C
>232
1)各々のファイルをフォルダ一階層分引き上げるなら親→子の再帰が必要だよね
で、2)空のフォルダを削除したいから子→親の再帰が既にあるわけだ。
なら、別のルーチンで1)をやらないと出来ない。
234名無し~3.EXE:03/12/01 00:46 ID:FZ6o4XMT
235名無し~3.EXE:03/12/01 15:17 ID:utE3M4fC
>>226
各ファイルを一階層上に移動、ではなくて
全ファイルを指定されたフォルダの一階層下に移動、ということで良いの?
こんな感じ?
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1022248177&res=48

間違って「『231』 のスクリプトの改造版」となってる。ゴメン。
236名無し~3.EXE:03/12/02 08:59 ID:x8U6qf5b
>>235
ありがとうございます、その通りです。
もっと勉強しないと…
237名無し~3.EXE:03/12/02 16:45 ID:hIeN8yts
IEのオブジェクトから、[表示] - [文字のサイズ] で
5段階切り替えしたのと同様の効果になる
スクリプト、キボン。
SendKeyは不可の方向で。。。
238名無し~3.EXE:03/12/03 02:02 ID:Mlf6KLD2
テキストファイルから読み込んだ日本語の文字列を
URLに送りたいんだけどそのまま読み込んで、
送信するとhttp://www.hoge.com/search=繧キ繝」繝シ繝ュ繝
みたいになってしまう。繧キ繝」繝シ繝ュ繝を%83V%83%83%81%5B%83%8D%83b%83g
みたいにエンコードするにはどうすればいい?vbsで。
239名無し~3.EXE:03/12/03 06:00 ID:68QdJX+r
>>238
encodeURI(URIString)
240239:03/12/03 07:40 ID:68QdJX+r
>>238
vbsだったか。hoge.wsfとかで↓。

<job id="TestScript">
<script language="JScript">
function func ( str )
{
return encodeURI( str );
}
</script>
<script language="VBScript">
Dim str
str = "あいうえお"
str = func(str)
WScript.Echo( str )
</script>
</job>
241名無し~3.EXE:03/12/03 08:49 ID:Mlf6KLD2
>>239-240
レスサンクス
wsfってどっちも使えるんだ
手を出したことないので知らなかった。
vbsじゃ無理なのですか?
242名無し~3.EXE:03/12/03 13:20 ID:kOgwKqx8
>>238
こんな関数は如何?

Function URLEncode (str)
  Dim s, rtnstr
  rtnstr = ""
  For i = 1 To Len(str) Step 1
    s=Mid(str, i, 1)
    If Len(Hex(Asc(s))) = 2 Then
      s = "%" & Left(Hex(Asc(s)), 2)
    Else
      s = "%" & Left(Hex(Asc(s)), 2) & "%" & Right(Hex(Asc(s)), 2)
    End If
    rtnstr = rtnstr + s
  Next
  URLEncode = rtnstr
End Function

>240の場合はUnicodeでのURLエンコード、こちらの関数はShift-JISでのURLエンコードです。
状況に応じて使い分けると良いかも。

24311:03/12/03 14:40 ID:mV1Soheb
>>238
私が普段使ってるUrlEncode関数、UrlDecode関数をあげておきました。
かなり変な文字を与えても、それなりにエンコードしてくれるようです。

http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1022248177&res=49
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1022248177&res=50
244238:03/12/03 18:17 ID:Mlf6KLD2
>>242-243
レスサンクスざます
晒して頂いたスクリプトをコピーし
便利スクリプトフォルダに保存しました。
basp21で妥協しようと思ってたので
とても助かりますた。ありがd。
245名無し~3.EXE:03/12/03 21:46 ID:+PPo6m4i
スクリプトの実行前にあらかじめ起動されているプロセスの
終了を検出したときのみ、指定したコマンドを実行するには
どうやればいいのでしょうか。
246名無し~3.EXE:03/12/03 22:03 ID:XtQPYP2R
無理してWSH使わなくても他の言語で作ればいいやん



と思った。
247名無し~3.EXE:03/12/03 22:29 ID:+PPo6m4i
>>246
やはりスクリプトではできないですか。
プログラムはまったくの素人なもので。
248名無し~3.EXE:03/12/03 23:47 ID:3QUJEG+M
シェルスクリプトの方がいいんでない?
249名無し~3.EXE:03/12/04 12:17 ID:KhtQppzY
>>245
WMIを使えば、起動しているプロセスを知ることが出来ますから、
指定したプロセスがあるかないかをif文で判断すれば出来るかと思います。
250名無し~3.EXE:03/12/04 20:17 ID:0e5lZ1MQ
>>249
その方法だとプロセスが起動していないときにも反応してしまいますよね。
終了時にのみ検出するというのはできないでしょうか。
251名無し~3.EXE:03/12/04 20:30 ID:q1opIXF3
>>250
スクリプトを常駐させて、その中でプロセスが死んだときに、コマンド実行ってことだよね?
それならスクリプト起動時にプロセスチェックしてフラグたてとけば良いだけの話だけど。
252名無し~3.EXE:03/12/04 20:50 ID:0e5lZ1MQ
予約録画後の休止移行に使いたいので
常にプロセス(録画ソフト)が動いてるとは限らないんですよ。
253名無し~3.EXE:03/12/04 21:11 ID:q1opIXF3
>>252
いやだからさ、プロセスを検知したらフラグ立てて、
フラグが立ってるときにプロセスが消えたらコマンド実行&フラグ降ろす、でいいんじゃないの?
254名無し~3.EXE:03/12/04 21:13 ID:ZKuyqMOt
>>252
情報を小出しにしないで
最初から何のために何がしたいのかちゃんと書いたほうがいいと思う
255名無し~3.EXE:03/12/04 21:49 ID:wHMzSM3w
1) スクリプトはパソコン起動時に実行&常駐
  この時点では検出したいプロセスは起動していない

2) 検出したいプロセスが起動

3) 2)のプロセスが終了
  これを1)で実行&常駐しているスクリプトで検出する

と、こういうことか?>253の言う通り
一定時間毎に起動しているプロセスをチェック、
検出したいプロセスを見つけたらフラグをたてる。
フラグをたてた後、そのプロセスが消えていればコマンド実行。
でいいんじゃない?
256名無し~3.EXE:03/12/06 01:07 ID:LcFhFxHE
ZenToHanはあるけどHanToZenってないね。
ぐぐったがvbsではなかった。誰かもってませんか?
257名無し~3.EXE:03/12/06 10:22 ID:ImaVfKFa
>256
キリ番getおめ
http://www.alles.or.jp/~sfujita/jpn/tools.htm
のhkzhkvbs参照のこと。
258名無し~3.EXE:03/12/06 18:42 ID:LcFhFxHE
>>257
thx
259名無し~3.EXE:03/12/07 02:02 ID:Hk+1MgZq
質問です。
起動時にMapNetworkDriveでネットワークドライブの割り当てをしているのですが、
接続先のパスが見つからない場合に実行エラーが表示されてしまいます。

回避する方法はありませんか?
260名無し~3.EXE:03/12/07 02:24 ID:MxjL0rhk
漏れも文字列操作する便利関数ほしいんだけど、
str="1行が50字とか10字とかで1行の字数が定まっていない文字列"
を1行が20字超えてたら改行して、20字以下ならそのままの字数にしたい。
leftやmid使って何とかしようとしたけど、できなかった。
hoge (str,20)でできるようなやつ創ってみてよ
261名無し~3.EXE:03/12/07 02:28 ID:71+/YDP/
var p = 0;
do {
 Out = Out + Str.substr(p, 20) + "\n";
 p += 20;
} while (p <= Str.length);

でどうよ
262名無し~3.EXE:03/12/07 02:31 ID:71+/YDP/
すまんJSで書いてもうた
263名無し~3.EXE:03/12/07 03:27 ID:G6B626hZ
>>259
On Error とかtry catch とか。
264名無し~3.EXE:03/12/07 11:28 ID:MxjL0rhk
VBSに変換できない。・・・_| ̄|○・・・_| ̄|○
265名無し~3.EXE:03/12/07 12:11 ID:AK4jo3u+
>>264
Function FillColumn(str, count)
   dim p, result
   p = 1
   Do
      result = result + Mid(Text, p, count) & vbNewLine
      p = p + count
   Loop While (p <= Len(Text))
   FillColumn = result
End Function

みたいな。……vbsは書きづらいなぁ。
厳密には最後、値を返す前に一番後ろの改行を消さなきゃいけないけど。
266名無し~3.EXE:03/12/07 12:14 ID:AK4jo3u+
>>265
ああもうメタメタ。

Function FillColumn(str, count)
   dim p, result
   p = 1
   Do
      result = result & Mid(str, p, count) & vbNewLine
      p = p + count
   Loop While (p <= Len(str))
   FillColumn = result
End Function
267名無し~3.EXE:03/12/07 14:39 ID:MxjL0rhk
dクス
やっぱmid使うんだ。俺も使ったのにちっともできんかった・・・
これだと改行してできた行とその次の行があわせて20字になるYO。
難しいなぁ。
268名無し~3.EXE:03/12/07 14:47 ID:R4Dl9SOH
ジオシティーズでホームページつくってます。
ローカルPCのあるフォルダに入ってるファイルすべてを
アップロードするようなスクリプトは書けますでしょうか?

http://www.geocities.co.jp/help/ftp/ftpexe.html
↑ここにftpを使った手動でのうp方法があります。なんとなく
これをスクリプト化すればいいのかなと
思うのですが、具体的なやり方が分からない状態です。
269名無し~3.EXE:03/12/07 16:27 ID:kH12v1LY
>267
こう云うことかい? 改行はvbNewLine固定としてます。

Function FillColumn(str, count)
   dim p, result, i, asTemp
   asTemp = Split(str, vbNewLine)
   For i = 0 To UBound(asTemp)
      p = 1
      Do
         result = result & Mid(asTemp(i), p, count) & vbNewLine
         p = p + count
      Loop While (p <= Len(asTemp(i)))
   Next
   FillColumn = result
End Function
270名無し~3.EXE:03/12/07 17:22 ID:MxjL0rhk
キタ━━━━━(゚∀゚)━━━━━!!!!
そうそう、これです。
早速保存しますた。ありがとう
271名無し~3.EXE:03/12/07 18:54 ID:AK4jo3u+
272名無し~3.EXE:03/12/10 10:39 ID:vM0T1jl0
文字列の中に半角英数と記号以外の文字が含まれていたら
Trueを返すような関数きぼん
273名無し~3.EXE:03/12/10 12:26 ID:fgTy1rnP
>>272
//ASCIIコード0x21(!)から0x7E(~)以外が含まれてたらtrue
//初めにパターンを作っておく。初めから展開しておいて直接関数内に置いたほうがスマートだけど
var p = "[^";
for (var i = 0x21; i < 0x7f; i++) p += "\\x" + i.toString(16);
p += "]";
//関数本体
function CheckExceptASCII(checking) {
   return  (checking.match(p) != null);
}

//VBSバージョン。やってることは同じ。
Dim pattern, i
pattern = "[^"
For i = 33 To 126
   pattern = pattern & "\x" & Hex(i)
Next
pattern = pattern & "]"

//vbsだとオブジェクト作らないと正規表現使えないのか……。
Function CheckExceptASCII(checking)
   Dim regex
   Set regex = New RegExp
   regex.Pattern = pattern
   CheckExceptASCII = regex.Test(checking)
End Function
274名無し~3.EXE:03/12/10 14:34 ID:Qyuu4yD0
まあ、JScriptでもオブジェクトですがそれはさておき。
275名無し~3.EXE:03/12/10 22:10 ID:oCxW7xiP
何故 わざわざ否定の否定で肯定を判定したり、
何故 連続した範囲の文字なのに 全部の文字をいちいち並べるのか
説明キボン。

「半角英数と記号」=「0x21(!)から0x7E(~)」でいいなら、
/[^\x21-\x7f]/.test(string)
でいいだろ。(stringに調べたい文字列をいれる)
272の文章そのままを書くだけじゃん。

あ、スペースは「半角英数と記号」に入るのか? だったら \x21 は \x20 だな。
276とにかく:03/12/13 05:20 ID:3hwI2vph
273は深く傷ついたよ。
277名無し~3.EXE:03/12/13 13:33 ID:+MhJ6dGM
何がとにかくなのか分かりませんよ。
言いたいことははっきり言わないと。
278名無し~3.EXE:03/12/13 18:32 ID:V9nirUNI
    ,. -- 、
  ,:',ィ;ノ、!;::':,
  i::l'-  -i::i  でも、はっきり ボンクラ なんてゆーたら
  l::ト、.ヮ,.ノ::!   >>273も傷ついてしまうやん?
279名無し~3.EXE:03/12/14 00:24 ID:BywyIZrR
こんにちは。

会社で「Windows起動時にごみ箱を自動的に空にするような仕組みを作れ」
と言われまして、困っていたところ、WSHなるものを知りまして、参考サイト
で見たところ、以下のようなコードを見つけました。

Set Win=Wscript.CreateObject("Shell.Application")
Set fol=Win.NameSpace("::{645FF040-5081-101B-9F08-00AA002F954E}")
Set f=fol.Items.Item
f.InvokeVerb "ごみ箱を空にする(&B)"


特殊フォルダであるごみ箱の右クリックメニューをキックしてるのですが、
これを実行すると、「消しますか??? Yes or No?」と聞かれてしまい
作業が自動化できません。

どのようにすれば、岡島部長の念願をかなえてあげることができるでしょうか。
280名無し~3.EXE:03/12/14 01:19 ID:Zp5Wksm2
>279
この関数をつかうといいんじゃない?
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1022248177&res=36&fi=no
別プロセスを起動しといて該当するタイトルを見つけるとSendKeysする。
文中には別スレッドとか書いてあるけど、それをファイアホースで使うのと働きを似せているってことで。

あと、岡島部長のパソコンの速さを考えて待ち時間を決めてあげてね。特にスタートアップ時はタスクが重なるから。
281名無し~3.EXE:03/12/14 11:58 ID:BywyIZrR
>279さん

早速のレスありがとうございます!!!
今日は出勤日なので、さっそく会社で試してみます。

今日帰ったらこのスレに結果報告させていただきます。
282279:03/12/14 11:59 ID:BywyIZrR


×  >279さん

○  >280さん

すみません。。。。。。。
283名無し~3.EXE:03/12/14 12:32 ID:AqIFfZCI
>>279
ゴミ箱の設定で「削除の確認メッセージを表示」のチェックをはずせばいいのでは?
284いなむらきよし:03/12/14 15:31 ID:Gr+gcZZZ
キケー!
285名無し~3.EXE:03/12/14 16:09 ID:ZgkBR/Fd
>>283
それはずしても右メニュから呼ぶと確認取らされるよ
286名無し~3.EXE:03/12/14 22:03 ID:kYj0AQKk
>>279
遅く、且つスレ違いだけど、

CSpace
http://cspace.s2.xrea.com/

のdeletedustをコマンドラインオプション付きでスタートアップに入れておけば
望みどおりの事はできるんじゃないかな。
287279:03/12/14 22:46 ID:BywyIZrR
>>280さん

今日さっそく会社で試してみました。見事にごみ箱を空にすることができました。
タイムアウト値はこれから試行錯誤して決めていきたいと思います。

今回のことでWSHの勉強をはじめる良いきっかけになりました。これからが
とても楽しみです。ありがとうございました。

>>283さん

レスありがとうございます。
285さんの仰るとおり、確認されてインタラクティブになってしまいます。

>>286さん

レスありがとございます。すいません。僕の説明が不十分でしたが、ツール類
を使うなとの条件がついていました。僕みたいな素人が作るスクリプトを使うより
deletedustを使う方がいいような気がするんですけどね(w  このツールは
存在を知らなかったので大変勉強になりました。本当にありがとうございます。
288名無し~3.EXE:03/12/15 15:05 ID:7A4E3zxz
実行しているスクリプト自身のファイルパスを取得するには、どうしたらいいんですか?
環境はwin2000, WSH5.6, JScriptです。
289名無し~3.EXE:03/12/15 15:10 ID:d9aPZJJr
>>288
WScript.ScriptFullName
290名無し~3.EXE:03/12/15 15:14 ID:7A4E3zxz
>>289
即レスありがとうございます!
できました。ありがとうございました!!
291名無し~3.EXE:03/12/16 21:48 ID:TdJSUna/
ExcelのスクリプトをWSHから起動させることって出来ないでしょうか?
292名無し~3.EXE:03/12/16 22:56 ID:CGl8cDrM
293名無し~3.EXE:03/12/17 00:40 ID:Ekl2+zKD
>>292
スレ消えていて見えません( ;´Д`)
294名無し~3.EXE:03/12/17 01:20 ID:HYgHgoM6
295名無し~3.EXE:03/12/17 03:24 ID:Ekl2+zKD
>>292 >>294
ありがとうございました(__)
296名無し~3.EXE:03/12/18 02:58 ID:y9nSM6n2
269たんのFillColumnが激しく便利なんだが、
全角と半角が混ざった文章だと、改行がそろわん。
半角は2文字で1文字としてカウントさせることは
できんのでしょうか?
297名無し~3.EXE:03/12/18 09:20 ID:nSFmSSLQ
どっちかというと全角は2文字としてカウントすべき。

半角2文字で1文字としてカウント? キモーイ
298名無し~3.EXE:03/12/18 09:36 ID:J8hVa0QE
2バイト
299名無し~3.EXE:03/12/18 22:00 ID:/9AbAiwm
win2k、XPではvbsもUnicodeを使ってると思うから全部2バイトちゃうかな。
98はしらん。
300名無し~3.EXE:03/12/18 23:00 ID:y9nSM6n2
結局そんな都合のいいことはできないってことでつか?
301名無し~3.EXE:03/12/18 23:48 ID:/9AbAiwm
>>300
出来るだろ。
ただ面倒くさくて誰もコードを書いてくれていないだけ。

>269がvbsな時点で読むのを止めたんで何だけど
改行毎にsplitして、
指定文字数に達するまで変数に突っ込んで改行追加、
って感じの処理だろ、多分。

文字列の長さをカウントする前に正規表現なり何なりで
文字種をチェックして、カウント量を変えれば良いんじゃない?
スマートじゃないけど。
302名無し~3.EXE:03/12/18 23:59 ID:y9nSM6n2
やってみまつ。
303名無し~3.EXE:03/12/19 02:02 ID:Lmao0L9B
vbNewLineとvbCrLfって完全に同じなんだっけ? 違う場合もある?
304名無し~3.EXE:03/12/19 11:48 ID:W02neB2/
WSHでエクスプローラのファイル検索を実行することはできますか?
win2k JScript/WSH5.6で作業しています。
305304:03/12/19 15:41 ID:W02neB2/
エクスプローラ開いてF3することでできました。
var Shell = WScript.CreateObject("WScript.Shell");
Shell.Run("explorer");
WScript.Sleep(3000);
Shell.Sendkeys("{F3}");

失礼しました。
306名無し~3.EXE:03/12/19 15:47 ID:kQdVfnCG
>>305
var shell = WScript.CreateObject("Shell.Application");
shell.FindComputer();

……手遅れ?
307名無し~3.EXE:03/12/19 15:48 ID:v/SeE9Gp
そんなんでいいならWin+Fで十分じゃないのか?
308名無し~3.EXE:03/12/19 15:49 ID:v/SeE9Gp
307は>>305宛て
309名無し~3.EXE:03/12/20 16:43 ID:jzTgP79+
310名無し~3.EXE:03/12/21 02:37 ID:qjcUmfTK
質問させてください。

ScanDisk を WSHから起動するにはどうしたらよいでしょうか?
311310:03/12/21 02:54 ID:qjcUmfTK
↑すみません。

chkdskを発行すればいいんですよね。お馬鹿なことを聞いて申し訳ありません。
312名無し~3.EXE:03/12/22 01:30 ID:+I9tORjp
>>309
めちゃめちゃ基本的な質問ですが、
「Microsoft Windows では使用できません」っていうのは、
何で使用できるのでしょうか?
プラットフォームでの指定ってあるけど、Windows以外のプラットフォームってどんなの?
313名無し~3.EXE:03/12/22 01:42 ID:lk7eC7+8
>312
ただ標準としてそういうエスケープシーケンスを使えるってだけ。
エスケープシーケンスを出力しなくても解析したい場合もあるだろ。
「Microsoft Windowsでは使用できません」ってのはもしろ、
Windowsでは使用しても意味ありませんってぐらいの意味。
314名無し~3.EXE:03/12/22 22:25 ID:mtDgELRn
ウィンドウを常に最前面に表示ってWSHでできますか?
315名無し~3.EXE:03/12/24 16:20 ID:YnxjQ2Jl
Shell.Execで実行したEXEファイルのリザルトコードが欲しい場合は
どうしたらよいのでしょうか?
316名無し~3.EXE:03/12/24 17:39 ID:GjeoXMNr
ExitCodeかな
317315:03/12/25 10:32 ID:J3kWnMpY
>ExitCodeかな
取れましたありがとう
318名無し~3.EXE:03/12/25 22:58 ID:qi2v5GZf
.wsc(Windows Script Component)
で別のタイプライブラリのインターフェースを継承して
COMを作成するにはどうすればいいですか?
implementsの使い方がよくわからん。
319名無し~3.EXE:03/12/26 21:22 ID:CDpFdU/g
BASP21使わないでVBSでStrConvをするにはどう書けばいいんですか?
320名無し~3.EXE:03/12/27 11:03 ID:iN6WHs5c
VBWRAP http://tel.tics.net/hayashi/soft/vbwrap.asp

これで1000円…… _| ̄|○
321名無し~3.EXE:03/12/27 14:10 ID:RyHCqBY3
>319
See→>257
文字列エンコードするにはファイル化の際にADODB.Streamで。
322319:03/12/27 14:22 ID:yWGmXC1j
>>320-321
情報有賀とう
>321
わけわかめだがそれを使ってみることにする。

323あぼーん:あぼーん
あぼーん
324名無し~3.EXE:04/01/01 11:14 ID:tXeNmX5l
10秒間のWaitをいれたいのですが、何か方法はありますか?
325名無し~3.EXE:04/01/01 11:29 ID:ST+07Rj7
Sleep使えばいいんじゃないの?
326名無し~3.EXE:04/01/01 16:50 ID:Xq0cdIBn
WScript.Sleep(10000); // 10秒スリープ
327324:04/01/01 20:05 ID:dncn+wHr
>>326
thx
328名無し~3.EXE:04/01/02 00:33 ID:SXcIFprT
basp21使わないでmp3のID3v2タグを読みとる
にはどうしたらいいですか?
329名無し~3.EXE:04/01/02 20:19 ID:NaBufqTi
DynaCall + mp3infp(SDK) でDLL呼び出せばできると思うけど、詳しくはわかんないから
成功したら報告きぼん。
330名無し~3.EXE:04/01/02 21:43 ID:SXcIFprT
thx。やってみる
331名無し~3.EXE:04/01/02 22:13 ID:SXcIFprT
さっぱりわからん(;´д`)ダメぽ
332名無し~3.EXE:04/01/02 23:13 ID:uzt/qs8R
さっきここで何か聞こうと思っていたんだけどなんだったか忘れてしまった_| ̄|○
333名無し~3.EXE:04/01/03 00:08 ID:dREILg5u
>>332
何を忘れたか聞こうとしたのでは? (w
334名無し~3.EXE:04/01/04 05:40 ID:zLk7YEXo
タイプライブラリってどうすれば見れますか?
335名無し~3.EXE:04/01/04 11:32 ID:Fx19U8ex
>>334
oleview.exe
336名無し~3.EXE:04/01/04 12:57 ID:zLk7YEXo
>>335
みれますた。サンクスコ
337名無し~3.EXE:04/01/04 14:13 ID:FtefBxtn
>>328
mp3infp使えば普通にGetDetailsOfで見れなかったっけ?
338名無し~3.EXE:04/01/06 23:05 ID://8fXjL0
***すれ立てるまでもない質問はここで 第48刷***
http://pc2.2ch.net/test/read.cgi/tech/1071506396/

↑のスレで質問したんですが、誘導されたのでこちらのスレにやってまいりました。
質問は「vbscriptでレジストリキーを消したいのだが、キーの中に小項目があると、消すことができない」
というものだったのですが、答えは「9X系ではまとめて消せるが、2000,XPではできない」
ということでした。

となると、2000,XPでキーを一度に消去する場合には、他にやり方があるんでしょうか?
再帰的にキー構造を調べて、一つ一つ消していくとか・・・
あまりVBには詳しくないのですが、Jscriptとか、他のスクリプト言語ならできるんでしょうか?
339名無し~3.EXE:04/01/08 19:36 ID:337kcD1j
WSHでローカルポリシーを変更する方法ってありますか?
MSDNなどなど調べたんですがどうにも見つからないもので・・・
ご存知の方がいればお願いします。(環境はWin2Kです)
340名無し~3.EXE:04/01/08 23:18 ID:sB2rIAQS
>>339
SendKeysで操作を自動化するより他に手がなさそうです。
レジストリの価を書き換える事で一応は実現できるのですが
それやるとサポート対象外になるとMSプレミアより回答ありましたから。

あの、ひょっとして同じ職場の方でつか?
341339:04/01/09 14:07 ID:iML9hd7I
>>340
サンクスです。うーんめんどそうですな(;´д`)
職場名を晒す勇気は無いですが、某化学企業の工場勤務です。
サポート対象外など無視してレジストリ書き換えまくりなので違う職場だと思われ
342名無し~3.EXE:04/01/09 17:43 ID:OEl6q9YS
エクスプローラーでファイルやフォルダを選択してそれらのファイルオブジェクトを
WSHで取得することってできますか?

フォルダのカスタマイズからなら取得出来るのは知ったんですけど出来れば単体のスクリプトファイルから操作したいんですが。
いろいろ調べたんですけどエクスプローラーの操作関連はあまりのってなくて、、
343342:04/01/09 17:49 ID:OEl6q9YS
あっ、すみません、付け加えですw

上の書き方だとWScript.Argumentsで送れる方法もありますが、
やりたい事というのはWSHで任意のフォルダ内のファイルを選択状態にしたいんです。
そういうことって出来ますでしょうか?
344名無し~3.EXE:04/01/10 01:00 ID:24MiGHSB
テキスト検索の結果など、行数の多いテキストを
ユーザーに返したいのですが、結果を result として、
WScript.Echo( result ) してダイアログに表示させると、
画面より大きい結果をスクロールさせることができないですし、
選択してコピーもできません。

いちばん良いのは、スクロールバーがついてて
編集できないエディットボックスに result を表示できればよいのですが、
それに近いことでも、なにかいい方法があれば教えてください。
345名無し~3.EXE:04/01/10 01:18 ID:8sKyXq1S
>>344
IEのウィンドウに表示するとか
346名無し~3.EXE:04/01/10 09:35 ID:zt4e6ZHL
>>343
できる
347名無し~3.EXE:04/01/10 13:03 ID:xVi0VBEM
WSHから使用できるDLLを開発したいんですが、あれってActiveXですか?それともただのCOMですか?
348名無し~3.EXE:04/01/10 13:06 ID:Hfvvr/8G
パソコンが安く買えるよ。

http://michellebranch.jp.mybpmall.com
349名無し~3.EXE:04/01/10 17:58 ID:R080zmgB
>338
2000以降ならWMIで再帰使ってやるのがいいんじゃないのカナ?
Const target = "giffile\shell\Edit"
HKEY_CLASSES_ROOT = &H80000000
HKEY_CURRENT_USER = &H80000001
HKEY_LOCAL_MACHINE = &H80000002
HKEY_USERS = &H80000003
HKEY_CURRENT_CONFIG = &H80000005
HKEY_DYN_DATA = &H80000006
strComputer = "."

Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")
DelRegTree oReg, HKEY_CLASSES_ROOT, target

Sub DelRegTree(StdRegProv, hDefKey, sSubKeyName)
Dim subkey, arrSubKeys

StdRegProv.EnumKey hDefKey, sSubKeyName, arrSubKeys
If Not IsNull(arrSubKeys) Then
For Each subkey In arrSubKeys
DelRegTree StdRegProv, hDefKey, Replace(sSubKeyName & "\" & subkey, "\\", "\")
Next
End If
StdRegProv.DeleteKey hDefKey, sSubKeyName
End Sub
350名無し~3.EXE:04/01/10 18:47 ID:En3/ud5f
WSHで外部プログラムを使わずに SHIFT-JIS → UTF-8 変換することはできますか?
VBSで使用したいのですが方法がわかりません。
351名無し~3.EXE:04/01/10 19:18 ID:Dt8cpYp+
>>350
さてどの辺りまでが外部プログラムなのだろう?
取り敢えずADO(2.5以降らしい)を使ったサンプルとか。
ttp://www.roy.hi-ho.ne.jp/mutaguchi/bbs/list74.shtml
352名無し~3.EXE:04/01/10 19:24 ID:z/4XaDjm

現在開いている IE のウィンドウから、ページのタイトルと URL を得て、
クリップボードにコピーしようと試みてます。

で、IE のウィンドウが一つのときは、とりあえずできたんですが、
複数の IE ウィンドウがあるときに、一番上にあるものを選び出す方法が
分からず困ってます。

// 現在開いている IE のウィンドウ(?)を得る。
var Shell = WScript.CreateObject("Shell.Application");
var WindowsShell = Shell.Windows();
for (var i = 0; i < WindowsShell.Count; i++) {
if (WindowsShell.item(i).FullName.match(/iexplore.exe$/i)) {
var ie = WindowsShell.item(i);
break;
}
}

こうすると、一番最初に開いたウィンドウが得られてしまい、目的がかないません。

どうすればいいのか分かる方、助言をください。
353343:04/01/11 01:41 ID:Slh+hzA9
>>346
よければ教えて貰えませんか?
354名無し~3.EXE:04/01/11 01:49 ID:U+Y3XC2H
粘着ウザイ
355名無し~3.EXE:04/01/11 02:11 ID:4pepaZVN
>>347
ActiveX = COM です。WSHから使うには IDispatchを実装します。
356名無し~3.EXE:04/01/11 07:45 ID:p7wwCAgJ
Javascript Windowsってすごいですね。
ttp://www.bitesizeinc.net/jWindows/

WSHで、ここまで出来るものなんですね。
357名無し~3.EXE:04/01/11 10:24 ID:S13q4guY
>>355
thanksです。VBA + APIで作ったモジュールを移植したいのでVB6で適当に作ってみることにします。
358名無し~3.EXE:04/01/11 11:56 ID:DGOTnMWp
>>353
wshファイルは当該フォルダにおけないから(ダブルクリックしたら選択が変わる)
パスを渡すUI作るの面倒くさそう
359名無し~3.EXE:04/01/11 14:37 ID:2GDqtyeO
例えばwindows2000サーバ上で夜間バッチを走らせるとして

1.DBからデータをテキストファイルに抽出
2.ファイル転送ソフトで他企業に転送
3.転送ログチェック

みたいなことを皆さんはどうされてるんですか
wshをベースにして作ってますか?
360名無し~3.EXE:04/01/11 17:19 ID:FhBPAUL2
>>359
C#.Net, JScript.Netを使ったり,WSHで作ったり,
やりやすいので作ってます。
361名無し~3.EXE:04/01/11 23:59 ID:Bg8Oyp5w
>>356のところに行っても何もおきないんだが・・・
362名無し~3.EXE:04/01/12 01:55 ID:/jUWesP+
SIDはどうすれば取得できるでしょうか・・・
363359:04/01/13 13:53 ID:jVkrhHWb
>360
ありがとうございました。
364名無し~3.EXE:04/01/15 15:56 ID:6AcG8WGY
質問です。
IEブラウザで改行がない右端折り返しされてる文字列を
改行を挿入して取得するにはどうすればいいのでしょうか?

例:
ああああああああああああああああ|←ブラウザの端で折り返し
ああああ

↓このようにしたいんです。

ああああああああああああああああ(改行)|←ブラウザの端で折り返し
ああああ(改行)
365名無し~3.EXE:04/01/21 06:12 ID:oeBS6s6x
243とかで、でてきた
UrlEncode関数、UrlDecode関数のJScript版、きぼーん。
簡易版でも、いいです。
366名無し~3.EXE:04/01/21 07:31 ID:1pmV8AwW
>>365
JScriptだと、実はGlobalオブジェクトにencodeURI/decodeURIメソッドがある。
367名無し~3.EXE:04/01/22 15:08 ID:qSdsWMac
inputboxから入力されたレジストリ値を入れ替えたいんだけど
変数を経由した値への変更ってできないんですか?

RegWrite使用とすると「引数の数が一致していないか不正なプロパティ」で落ちてしまう(´・ω・`)

例えば、↓のAutoShareServerの”0”の値を、
画面から応答入力された”1”や”2”に変更するってのをやりたいんだけど
objWshShell.RegWrite "HKLM\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters\AutoShareServer",0,"REG_DWORD"

詳しいひと教えてぷりーず(´・ω・`)
368名無し~3.EXE:04/01/22 19:45 ID:iIV+XSm9
>>367
CLngとかした?
369名無し~3.EXE:04/01/23 18:31 ID:NweawgIP
JScript による Windows Script Host で、複数のスクリプトの排他制御を
行うには、どのように実装するのが一番簡明でしょうか?

Perl や C なら flock や bind、java なら synchronized() 等を使う所
ですが、JScript ではどうするべきでしょう? 無理に外部プログラムを
使ったりするのではなく、もっと簡単な方法がありそうなのですが。
370名無し~3.EXE:04/01/23 21:22 ID:jnQWcq2j
そんなもんスクリプトでやることかい
371名無し~3.EXE:04/01/24 11:01 ID:KLM0u7IA
>>368
サンクス

やったことなかったです。
C〜って命令は今まで一度も使ったことなかったので
それを使うことにさえ考えつかなかったというか...

早速やってみますです。
372名無し~3.EXE:04/01/24 16:06 ID:ztDTRir/
VBScript, JScript, Perl, Ruby
以外にWSHで使える言語があったら教えてください
373名無し~3.EXE:04/01/24 16:24 ID:0vAeX5q9
>>372
Pythonとか。
もはや「何故それでWSH?」って気しか起きないが。
374名無し~3.EXE:04/01/24 17:44 ID:ZFYOcAnl
MSによると、「利用可能なスクリプトエンジン」の中にREXXっていう
名前があるんだが、何これ?
375374:04/01/24 17:49 ID:ZFYOcAnl
ググってみたら、元々はIBMの汎用機で動くバッチとかシェルスクリプト
みたいな言語だとさ。
376名無し~3.EXE:04/01/24 18:59 ID:ztDTRir/
Python、REXXですかなるほど
Script Engineで具具って見たところTCLやLISPもつかるようです。
377名無し~3.EXE:04/01/24 19:13 ID:ztDTRir/
378名無し~3.EXE:04/01/24 20:29 ID:ZFYOcAnl
rexx windowsでググったら何かあったよ。
REXX Software for Windows 95/98/ME/NT/2000
ttp://www.borg.com/~jglatt/rexx/win32/rxusrw32.htm

WSHで使いたいっていう需要なんてあるのかなー?
379名無し~3.EXE:04/01/24 23:26 ID:l1UYiQf+
PerlScriptは、sprintfとか、utimeとか使えて、便利だと思いますた。
JScript、なんでsprintf使えないんだろー!?

VBのDate構造体ってやつが、FSOから返されるんだけど、これがPerlScriptでは
どう扱ったら言いか判らず、変換部分だけJScriptにしたりして…(w
(utimeは、UNIX-timeを要求する)

# Lispかぁ…。どこにそういうWSH処理系があるんだろう?
380nil:04/01/25 09:27 ID:U5CJ/2hs
Lisp ActiveXとかでググったら、Visual Lispとか言うのが引っかかりますた。
Visual Lisp ActiveXでググると、なんか、CADソフトの機能拡張だか、プラグイン
だかみたいなものらすぃ。

ttp://www1.harenet.ne.jp/~hanafusa/visual/
381名無し~3.EXE:04/01/25 19:56 ID:uupLYtfv
Windows Scripting Hostって、UNIXのシェルスクリプトに比べると
たいしたこと出来ないで
382名無し~3.EXE:04/01/25 20:10 ID:L9qMlL7X
Active Bourne Again Shell きぼんぬ
383名無し~3.EXE:04/01/25 20:15 ID:L9qMlL7X
PHPはどうなんだろう?
384名無し~3.EXE:04/01/26 01:16 ID:WIUNIktU
野村バーチャル株式投資倶楽部
http://www2.nomura.co.jp/vstock/VirtualServlet?
に自動ログインできるWSHを書きたいと思っています。
ページを開くところまではできますが、ニックネーム、パスワード、ログインボタン
を押す方法がわかりません。
どなたかご教授いただけないでしょうか?
385名無し~3.EXE:04/01/26 01:22 ID:wLiU03yT
Sleipnirってタブブラウザのオートログインクリエイターが生成するコードを見るとよい
386384:04/01/26 01:39 ID:WIUNIktU
ありがとうございます。
やってみます!
387384:04/01/26 02:55 ID:WIUNIktU
たびたび、すみません。
Sleipnirでは自動ログインできました。
しかし、ソースを見ても、
Sleipnir.APIを使っている部分を普通のjavascriptにできません。
お教えいただけないでしょうか?
388名無し~3.EXE:04/01/26 13:44 ID:MjTQor71
>>387
コントロールのプロパティとメソッド使えば簡単ですよ。

たとえば、VBScriptですが、Googleにテキストを設定して検索かけるには

Ie.Document.f.q.Value = ”検索する文字列”
Call Ie.Document.f.btng.Click

ってやればOK。
389名無し~3.EXE:04/01/26 14:04 ID:nksZBiMY
>>388
GETメソッドでわざわざそんなのする必要があるのか……?
390名無し~3.EXE:04/01/26 23:06 ID:wLiU03yT
>387
SleipnirAPIを使っているのは「SleipnirでアクティブなタブのDocumentオブジェクトを取得する」
部分だと思ったけど。
あーでもそのへん自作オブジェクトでラッピングしてるんだっけか。
391名無し~3.EXE:04/01/27 01:06 ID:uHBZdLXc
>>389
IEオブジェクトのDocumentCompleteイベントで実行。
392384:04/01/27 01:45 ID:nS9w5VWf
自分で書いた分は、時間待ちしてなかったのでobjectが取得できなかった
みたいです。
function WaitLoad() {
var stat, dstart;
stat = 0;
while(true)
if(stat == 0) {
if(!IE.Busy)
if(IE.Document.readyState == "complete") {
dstart = (new Date()).getTime();
stat = 1;
}
}
else {
if(!IE.Busy &&
IE.Document.readyState == "complete") {
if((new Date()).getTime() >= dstart)
break;
}
else
stat = 0;
}
}
こんな関数拾って実行したら解決しました。
みなさん、ご親切にありがとうございました。
本当に勉強になります。
393saku:04/01/30 18:22 ID:QNZCNACG
教えてください。
ヤフーチャットのいつも行く部屋に、HTMLでWindowsScriptingを使い、
簡単に入室するにはどう書けばいいか教えてください。
手動では、最初にHNを選んで、次にjabaか、htmlか選択して、目的の部屋のカテゴリーを選んで、
Yahoo!ルームか、ユーザールームか選んで、部屋名があるページを探して入室。
来れを、HNと部屋名とHTMLか、JAVAかを指定するだけで、入室できないでしょうか?
394名無し~3.EXE:04/01/30 18:37 ID:Tw29e2MT
試行錯誤する前に来るなよ。
395saku:04/01/31 00:28 ID:8l/JEfc0
すいません
まったくの初心者なんですが、WindowsScriptingでこれは、作れますか?
初心者には、難しい物でしょうか?
396名無し~3.EXE:04/01/31 00:48 ID:aUAxJze+
クズだな
397名無し~3.EXE:04/01/31 01:14 ID:2HIc0w+5
>>395
詳しいことはヤフーチャットを見たことないからわからんが、初心者がやるとなると難しいと思う。
同じようなことを考えた人間から助言させてもらうと、スクリプトだけでなくHTMLも勉強する必要がある
398名無し~3.EXE:04/01/31 04:08 ID:iozLAQ/u
>>393
できるよ。
でも、教えたくない。
399名無し~3.EXE:04/01/31 19:26 ID:4VVlodk6
>>393
HTMLごときで「勉強」とか言うなよ…
いくら初心者でもみりゃわかるだろうが。
400名無し~3.EXE:04/02/01 11:07 ID:4z9zbGpV
>>393 >>395
java版でログインするとさ、データロード中に画面下の方に
「アプレットの起動に失敗しウインドウが立ち上がらない場合は、ここをクリックしてリロードしてください。」
って書いてあるだろ?

で、「ここをクリック」の「ここ」の部分にリンクが張ってあるから、
そこをクリックしてそのままデスクトップまでドラッグ。
これでその部屋へのショートカットのできあがり。

部屋を選ぶ所でやってもいいけど、これだとjavaアプレットのロードに失敗するっぽい。

というわけで、ぜんぜんWSHとは関係のない方法で解決。
401saku:04/02/01 20:25 ID:mtY0Qktz
>>400
そういう手もあったんですね、自分の環境でそのやり方だと、ボイスが使えないんですが、普通は使えるんでしょうか?
>>397
HTMLの基本は分ります。
>>398
WindowsScriptingできる事はできるんですね。
HNを選んだりjavaか、htmlかを選ぶなんてこともでできるんなら、便利ですね〜。
402名無し~3.EXE:04/02/02 18:38 ID:cV3P0F18
回線切る→シャットダウン
これ作ってください。おねがいします。
403名無し~3.EXE:04/02/02 18:47 ID:PlfVAIN4
>>402
どうせシャットダウンするのに回線を切る意味が分からない。
404名無し~3.EXE:04/02/02 19:26 ID:g5p6RLsV
>>403
USBのモデム子機を導入したところ、先に
回線を切らないとシステムの電源が落ちなくなったので。
405名無し~3.EXE:04/02/02 20:36 ID:YJaV986A
普段はどーやって回線切ってるの?
406さな:04/02/02 20:57 ID:+vEjljGX
WSHで、
<html>
<head>
<script language=VBScript>
<!--
set WSHShell = WScript.CreateObject("WScript.Shell")

と記述するとプログラム全体が動かなくなってしまいます。
しかし、HTMLに組み込まず、ただのVBScriptにするとWScriptを書いていても
動き、HTMLに組み込むときはWScriptをなくすだけでプログラム全体が
動きます。
ただ、どうしてもsleepが使いたいのでどうしたらよいか教えてください。
よろしくお願いします。
407名無し~3.EXE:04/02/02 21:15 ID:YJaV986A
>>406
sleep.vbsを作って
それをrunさせればいいんでないの?
408名無し~3.EXE:04/02/02 21:16 ID:eduYQaw5
age
409名無し~3.EXE:04/02/02 23:59 ID:4Xp8p17t
>>405
タスクトレーの普通のダイヤルアップ接続のアイコンから切ってます。
410名無し~3.EXE:04/02/03 00:55 ID:Wv1aCGuQ
>>409
なるほど。
それと同じことをさせればイージャンと指摘しようと
思ったが、わからんね。スマソ
ベクターでもいってソフト探してきな。
411名無し~3.EXE:04/02/03 19:18 ID:YhhjYhV/
Iria(ダウンローダー)のIriaAPIにDialup、Hangupといったメソッドが
あるのでそういうソフトを導入してみるのも手かも。
412名無し~3.EXE:04/02/03 19:23 ID:HfVvWHFy
青風の作者の単機能ツールに回線切断がある
413名無し~3.EXE:04/02/03 21:29 ID:U6oiLH0/
rasdial コマンドはXPからだっけ?
414名無し~3.EXE:04/02/03 22:21 ID:znDjgcvD
今見たら2000にもあった
415名無し~3.EXE:04/02/04 00:14 ID:oO9Nrf2u
まえにどっかでソースの見られないHTAがあった気がするんだけど、方法がわかりません。
どなたかご存知ないでしょうか?
416名無し~3.EXE:04/02/04 11:44 ID:aWsd/X/2
すれ違い
417名無し~3.EXE:04/02/04 12:33 ID:q0FeCKEH
>>415
Script Encoder で暗号化できるんじゃない?
418名無し~3.EXE:04/02/05 23:26 ID:8i5LyG+H
>>136

やっぱりWMIの日本語情報ってないっすかね
英語わからんし、きついっす
419名無し~3.EXE:04/02/06 00:02 ID:On4WpJL8
420名無し~3.EXE:04/02/14 17:59 ID:rpTCRkF9
vbsでMSXMLを使いxmlのファイルをクライアントに作りたいのですが
vbsから呼び出すと正しく動作するのに
ブラウザから呼び出すとうまくいきません。
xmlを保存するときにsaveメソッドで止まっているので
権限か何かかと思うのですが、どうやったらうまくいくでしょうか?
環境
OS:WindowsXP pro
ブラウザ:IE
421名無し~3.EXE:04/02/15 02:01 ID:FOO6YdWP
EmEditorのようにJScriptやVBScriptを自前アプリケーション上で走らせて
パラメータとかを渡したいのですが,どのようにやればよいのでしょうか?
あるいはどのAPIを使えばよいのでしょうか?
ご教示願います.

環境
Win2K
VC++6.0
422名無し~3.EXE:04/02/15 09:00 ID:+mfHVX45
>>421
IActiveScriptSite で調べてみ
スレッドがからまないなら簡単だよ
423421:04/02/15 12:36 ID:FOO6YdWP
>>442
ありがとうございました.
424名無し~3.EXE:04/02/15 21:22 ID:NauJSgdn
アクティブX対応スクリプト言語エンジンのProgIDと
.wsfでlanguage=""のところで何を書くか
はどうやったら分かりますか?
425名無し~3.EXE:04/02/16 01:09 ID:nnfj2eSM
ScriptControlのLanguage
に渡せる文字列を列挙する方法はありますか?
426名無し~3.EXE:04/02/16 01:17 ID:nnfj2eSM
Ageてみます
427KingMathematician ◆5lHaaEvFNc :04/02/16 10:48 ID:+Nls/Qip
ちょっと質問。
VBSの動くソフトはIE,WSHの他にメジャーなものはありますか?
VBSが動かず、JavaScriptが動くソフトはNN以外にメジャーなものはありますか?
428名無し~3.EXE:04/02/16 13:28 ID:wI4XgN6o
>>427 VBSの動くソフトはIE,WSHの他にメジャーなものはありますか?
ほかには hta くらいかな?
429KingMathematician ◆5lHaaEvFNc :04/02/16 16:46 ID:4U4oPZj8
Re:>>428 どうもありがとうございます。htaってソフトですか?
430名無し~3.EXE:04/02/16 17:28 ID:xoPsuk1f
久しぶりのウィッシュスレパピコ。
皆さんがんばってください。
431名無し~3.EXE:04/02/16 17:31 ID:HRD2V/Tb
>>429
hta は ie5.0 から一緒にある mshta.exe のこと
432名無し~3.EXE:04/02/16 17:35 ID:HRD2V/Tb
>>424
ProgID は Active Script Engine の CATID を含んでる clsid を調べれば
わかると思う
433名無し~3.EXE:04/02/17 09:33 ID:xdOBiezt
VBSまたはJSで「c:\hoge\hage\nantoka.exe」を渡したら「c:\hoge\hage\」
が帰ってくるように、フォルダのパスを取得するにはどうすればいいでしょうか。
434名無し~3.EXE:04/02/17 10:51 ID:YeRceIk6
Left(path, InStrRev( path, "\")
435名無し~3.EXE:04/02/17 10:52 ID:YeRceIk6
)
436名無し~3.EXE:04/02/17 11:07 ID:L1/6wC/5
>>435
ワラタ(´-`)
437名無し~3.EXE:04/02/17 12:55 ID:kUOOlSS7
>>433
strPath = c:\hoge\hage\nantoka.exe
Set objFS = CreateObject("Scripting.FileSystemObject")
strFolder = objFS.GetParentFolderName(strPath) & "\"
438437:04/02/17 12:55 ID:kUOOlSS7
strPath = "c:\hoge\hage\nantoka.exe"
ですた。
439名無し~3.EXE:04/02/18 00:48 ID:HFtJxkpY
チョット話しずれるけど、みんな何のエディタで普段スクリプト書いてるの?
440名無し~3.EXE:04/02/18 01:19 ID:CnCGg5gP
sakura
441名無し~3.EXE:04/02/18 01:43 ID:fjRGLqwf
VxEditor with 補完クン
442KingMathematician ◆5lHaaEvFNc :04/02/18 05:35 ID:vMC64SR+
Re:>>439 NOTEPAD
443名無し~3.EXE:04/02/18 07:50 ID:KDZLPUgf
      ヽ(・ω・)/   ズコー
      \(.\ ノ
444名無し~3.EXE:04/02/18 12:12 ID:PFaGnrjP
>>439
秀丸でVBSのキーワードを色定義して書いてる
445名無し~3.EXE:04/02/18 16:39 ID:ltM8/cbP
漏れも秀丸
446名無し~3.EXE:04/02/18 16:51 ID:qzvQiHQC
つかあんまり意味無い質問じゃね?
ほぼ全員「普段から使ってるエディタ」になるんだろうから。


かくいう私はxyzzyのjscript-mode。
447名無し~3.EXE:04/02/18 17:25 ID:SzjVcaSd
              。       
                う     
          r           
       で    o     ょ   
    す         t       
         E         し  
   。          i       
        m          ま  
   ス      E  d        
                  め   
     レ          や     
       違  い  は        
448名無し~3.EXE:04/02/18 21:11 ID:VyFK/FyF
449名無し~3.EXE:04/02/19 02:13 ID:/3r1Lcfx
よさそうなソフトハケーン
WSHAssistant
ttp://hp.vector.co.jp/authors/VA036013/
関数・定数を補完
自分で生成したインスタンスのメソッド・プロパティも補完
クラスのメソッド・プロパティには説明文も出る
引数も表示
「WScript.Argument.Name」みたいなのも補完
補完候補の単語は自分で設定することが可能
すれ違いスマソ次の話題ドゾー
450名無し~3.EXE:04/02/19 02:31 ID:ynL9ig8U
はっきり言って、ぬる度で間に合ってます。
451名無し~3.EXE:04/02/19 05:46 ID:Vvnxa5Dy
新しいソフトを公開するのは勝手かもしれないけど
既存のソフトを越えないものは何の意味もないよ。
需要も無いのに供給を渡すのはキチガイとやってることは変わらない。
452名無し~3.EXE:04/02/19 06:01 ID:fEh5tV2J
ソフト単位で超える超えないしか基準がない奴に
偉そうなこと言われる作者とかやってらんねぇだろうなw
453名無し~3.EXE:04/02/19 06:07 ID:GWbC1+aZ
キチガイはこの世からきえてほしいよ。


454名無し~3.EXE:04/02/19 09:13 ID:JTZpcGuL
VBSでフォルダの有無を確認して、無ければ作成する処理を作っているのですが
現状だと一つの階層毎に「オブジェクト.CreateFolder」をしています。
これを一行で途中のフォルダも作ってくれるようにできないでしょうか?

・駄目例(C:\以下に「1st」フォルダが無い状態から「c:\1st\2nd\3rd\」を作る場合)
If (FileOBJ.FolderExists("c:\1st\2nd\3rd\")) = false Then
FileOBJ.CreateFolder("c:\1st\")
FileOBJ.CreateFolder("c:\2st\")
FileOBJ.CreateFolder("c:\3st\")
End If
455名無し~3.EXE:04/02/19 13:08 ID:YvdhZnbf
>>451
で、その頂点にいるソフトを作ってるんですね?
456名無し~3.EXE:04/02/19 17:55 ID:HIZpNAaD
個人単位でも企業単位でもソフトなんて何時開発止まるか分からんからなー。
今はちょっとイマイチなソフトでも未来の代替品になる可能性もあるわけで。
選択肢が多い方が楽しいし、ひとつのソフトで万人の要望に適うような事なんてあり得んし。
よほどショボいブツでなければ、何の意味も無いようなソフトにはならないでしょ。
457名無し~3.EXE:04/02/19 20:59 ID:tlZfPMmu
>>454
1行にしたいと思う前に、目的を果たすスクリプトを作れるようになれ。

本題だが、1コマンドでは無理。
良く使うものなのでFUNCTIONかSUBで再帰的に処理させるものを作った方が良いと思う。

どうしても1行で書きたいのなら以下の様にコロンで繋ぐことでできないこともないが、
見にくいだけなので止めた方が良い。

IF 1 THEN MSGBOX "1" END IF:IF 1 THEN MSGBOX "2" END IF:IF 1 THEN MSGBOX "3" END IF
458名無し~3.EXE:04/02/19 21:59 ID:c2AXtHTq
ぐぐったらこんなんでてきた。
http://www.roy.hi-ho.ne.jp/mutaguchi/bbs/list29.shtml のいちばん上。
使えるならおれも使って楽したいんで動作確認よろ。
459名無し~3.EXE:04/02/19 22:46 ID:kg6dFXFa
>>449
使ってみたけどかなり気持ち悪い動作をするね。
大文字小文字の扱いとかクリップボードを使ってたりするのも減点かな。

>>451
既存のソフトでそんなすごいソフトってあったっけ?
460名無し~3.EXE:04/02/19 23:25 ID:kg6dFXFa
つーか>>449ってどうやって見つけたの?
ググっても出てこないし、更新された直後っぽいし。

ただの宣伝だったのか・・・_Πo
461名無し~3.EXE:04/02/19 23:47 ID:uIch0qMr
>>460
漏れは>>449じゃないけど
OnlineSoft VersionUp.infoで見たよ
462449:04/02/19 23:50 ID:/3r1Lcfx
宣伝じゃないよ
http://www2s.biglobe.ne.jp/~takao777/versionupinfo/
漏れここブックマークしてるから見たらのってたし、このスレでエディタ
話題になってたからさらっとコピペしただけ。
>>459
そうなんだ・・
正直使わずに書いた。DLはしたけど
463459:04/02/20 00:19 ID:M7qafsZ0
>>461
>>462
そでしたか、スマソ。

WSH関連ならツール紹介でもよろしいかと。
これからも良さげなモノを見つけたら紹介してください。
464名無し~3.EXE:04/02/20 03:14 ID:GlxOOnD4
>>454
JScriptだけど、同じような質問があった。
ttp://www.roy.hi-ho.ne.jp/mutaguchi/bbs/list96.shtml
465名無し~3.EXE:04/02/20 06:44 ID:OvsQMPQk
dmonkeyならForceDirectoriesしてるから1発で作られる

466454:04/02/20 16:42 ID:gwQAW54i
>457、464
ありがとうございました。
「CreateFolder」の再帰版メソッドを期待してたのですが
やっぱり無いんですね。

前のソース急いで書いたんで思いっきり間違ってますねw
いちおう、実際は以下です。
Set FileOBJ = CreateObject("Scripting.FileSystemObject")
If (FileOBJ.FolderExists("e:\1st\2nd\3rd\")) = false Then
FileOBJ.CreateFolder("e:\1st\")
FileOBJ.CreateFolder("e:\1st\2st\")
FileOBJ.CreateFolder("e:\1st\2st\3st\")
End If
467名無し~3.EXE:04/02/21 00:58 ID:vJzHNL98
>>458は無視かよ。再帰はしてないけど。

まあ、Sub MyCreaetFolder() なんていうプロシージャ名を敬遠するのもわかるが。
468名無し~3.EXE:04/02/21 02:18 ID:AkcacTgE
JScriptで未知のCOMオブジェクトのメソッド、プロパティを列挙したいのですが
どうしたらよいですか?
469名無し~3.EXE:04/02/21 02:46 ID:vvh0PRJt
>>468
CreateObjectしてからオブジェクト自体をprint?
470464:04/02/21 04:31 ID:BPVjpF0f
>>466
関数に目覚めた方がいいんじゃない?
関数を放り込んでおけば、後は1行でかけるし。

JScriptのcreateFolder関数はサクサク動いてます。

そろそろ、CLASSに目覚めようかな?
471454:04/02/21 08:45 ID:IGzrcCBG
>458
上司に隠れて見てるので見落としてた・・・スマソ
で、動作OKでした。
俺もこれでほぼ解決です。

>470
実際に使うときはcallで呼ぶようにしてますよw
不要な部分は書き込まないほうがいいと思ってるんだけど
472名無し~3.EXE:04/02/21 17:04 ID:ucQkMUPK
Scripting.Dictionaryオブジェクトのキーってオブジェクト入れられるんだ。
リテラルしか入れられないものとばっか思っていて既定のプロパティ省略したらハマったよ。
473名無し~3.EXE:04/02/25 23:36 ID:5b+XA8FR
WSHでPCをスタンバイ状態にできないでしょうか?

タスクで実行→スタンバイで終了 という感じで毎日決まった
操作をさせたいと思っています。
474名無し~3.EXE:04/02/25 23:53 ID:bTkcEHve
>>473
ぐぐれ
475名無し~3.EXE:04/02/26 13:55 ID:D7i7hkKh
ダイヤルアップルータを使っているのですが、接続要求をPOSTで、
切断要求をGETメソッドで送る仕組みになっています。
GETはショートカットを作って切断していますが、
一々ブラウザが立ち上がってしまいます。
このやり方ではPOSTはフォーム画面からの操作になり面倒です。
これらをブラウザを立ち上げないで実現したいのですが、
いい方法はありませんか?
476名無し~3.EXE:04/02/26 14:01 ID:hzXs2lwE
>>475
DMonkeyなら楽に出来る
477名無し~3.EXE:04/02/27 00:27 ID:10E93ZVO
>475
WScriptからIE呼び出していじるときって、IEのvisibleをfalseにすれば
IEのウィンドウを表示することなく操作できなかったっけ?
478名無し~3.EXE:04/02/27 09:08 ID:3VWvEF7i
>>475
XMLHTTP
479名無し~3.EXE:04/03/01 23:59 ID:6Q8ucKtL
特定のディレクトリに存在する全ての画像ファイル(bmp)の、
任意の色を、指定した色へ一括置換することはウィッシュで可能ですか?
480名無し~3.EXE:04/03/02 01:55 ID:HZulEPaY
>>479
TOYOTAに聞け。
481名無し~3.EXE:04/03/03 01:14 ID:skgKAP4d
>>475
もう見てないかな。JScriptだとこんな感じ。

var IE = new ActiveXObject("InternetExplorer.Application");
var uri = "http://192.168.0.1/";

// GETの時
IE.Navigate( uri + "?hoge=fuga&foo=bar" );

// POSTの時
IE.Navigate( uri );

while( IE.busy );
while( IE.Document.readyState != "complete" );

// フォームが複数ある時は幾つ目なのか数えて変更する。nameがあればそれでもokかも
var formItems = IE.Document.forms[0];

// postしなきゃいけないフィールドがあったら値をセットしておける。
formItems.elements[ "hoge" ].value = "fuga";
formItems.elements[ "foo" ].value = "bar";

formItems.elements[ "button1" ].click(); // 送信ボタンのname
482名無し~3.EXE:04/03/03 21:30 ID:uSM/poUa
On Error Resume Nextを使っていて
下のようにエラーが重なった場合、一つ目のエラーのDescriptionを
保持しているのですが、ErrオブジェクトはErr.clearしない限りは
エラーが複数発生しても一つ目のエラー情報を保持するのでしょうか?


「Windows Script v5.6 ドキュメント」より。ちょっと変更

On Error Resume Next
Err.Raise 6
MsgBox (Err.Description)
Err.Raise 7
MsgBox (Err.Description)
483名無し~3.EXE:04/03/03 22:54 ID:0Zs+sDJ2
Explorer のアイコン表示をwshから設定することはできるでしょうか?
大きいアイコンとか、詳細とかです
484名無し~3.EXE:04/03/03 23:01 ID:skgKAP4d
>>482
違うと思う。
Err.Raise number だけで生成したエラーがDescriptionを書き換えないだけっぽい。
Err.Raise number, source, description まで指定すれば書き換えられてる。

On Error Resume Next
Err.Raise 6
MsgBox (Err.Description)
Err.Raise 65535, "test", "error test"
MsgBox (Err.Description)

また、Raiseを使わずに発生したエラーでも書き換えられる。
On Error Resume Next
Err.Raise 6
MsgBox (Err.Description)
Err.Description
MsgBox (Err.Description)
485482:04/03/04 12:49 ID:QUPFlspw
>484
なるほど、Descriptionはそのままでも
numberは変わってますね。
これで、納得して先に勧めそうです。有難うございました
486名無し~3.EXE:04/03/04 16:58 ID:HVI4Uo3E
WshShellオブジェクトのRunメソッドを用いて
半角スペースを含むフォルダの配下にあるファイルをコマンドライン引数付きで実行する際、
コマンドライン引数がファイルにきちんと渡されないことがあるみたい。

具体的には次の場合が:
NALT (時刻修正ソフト、軽量・レジストリ非使用)
ttp://akky.cjb.net/download/nalt.html
は-aオプションをつけて実行すると非表示で起動して終了する。
nalt.exeをC:/tempフォルダに置いて以下のコード:
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "C:/temp/nalt.exe -a"
を実行すると、確かに非表示で起動して終了するけど、
C:/temp/test testフォルダに置いて以下のコード:
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run """C:/temp/test test/nalt.exe"" -a"
を実行すると非表示で起動しない。
ちなみに、前者の場合では
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run """C:/temp/nalt.exe"" -a"
でもきちんと-aオプションが渡されるはずなのに渡されない。

スタートアップスクリプトにこのソフトを組み込みたいんだけど、
このせいでうまくいかない…
コマンドライン引数の渡し方が良くないのかなぁ。
ソフト側の不具合なのかな?
487486:04/03/04 17:28 ID:S4NPQ77U
>>486
自己レス
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.CurrentDirectory = "C:/temp/test test/"
WshShell.Run "nalt.exe -a"
でとりあえずうまく行ったけど、Runメソッドを使う場合は
必ず作業ディレクトリを変えるべきなのか…
488名無し~3.EXE:04/03/04 23:47 ID:jbovg0C6
>>487
RunじゃなくてExec使え。
↓これでお望みの動作だと思う。

Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Exec( """C:/temp/test test/nalt.exe"" -a" )
489st:04/03/05 01:06 ID:xFU9jTte
質問させてください。
WSHを使ってアプリケーションの印刷を実行したいのです。
具体的には、印刷ページ「ファイルに保存」にチェックを
つけて、出力先ファイル名も、ダイヤログを開かせて
入力するのではなく、あらかじめ決めうちのファイルに
出力させたい。

普通に印刷させるだけなら下記のようになると
思うのですが(MS-Wordの例)、それ以上の応用となると
さっぱりです(資料が……)。

// 印刷するファイル名
doc = "c:\\test.doc";

// アプリオブジェクト作って読み込み
word = WScript.CreateObject("Word.Application");
word.Documents.Open(doc);
word.visible = false;

// オプション設定して印刷
word.Options.UpdateFieldsAtPrint = true;
word.Options.PrintBackground = false;
word.ActiveDocument.PrintOut();

//終了処理
word.ActiveDocument.Close();
word.quit();
490名無し~3.EXE:04/03/06 10:58 ID:GBV4lnOj
スクリプトにD&Dした各フォルダの全部の中身をまとめてEasy圧縮に渡して
その各々のフォルダの中に、できた圧縮ファイルを置けるようなスクリプトって作れますか?
無圧縮zip.mp3をリネームするときにバラのファイル名を流用することが多いもので……。
最初バッチファイルでやろうとしたんですが、Easy圧縮がワイルドカードを受けつけてくれずできなかったです。。
491名無し~3.EXE:04/03/06 18:12 ID:BBFbPGA+
>>489
ここ参考のこと。
ttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/dv_wrcore/html/wrtskhowtosenddocumentstoprinter.asp

ちなみに第3引数Rangeで指定する列挙体はそれぞれ以下の通り。
jsやvbsでは対応する数字で指定すればいいかな。

wdPrintAllDocument = 0
wdPrintSelection = 1
wdPrintCurrentPage = 2
wdPrintFromTo = 3
wdPrintRangeOfPages = 4


↓プリントアウトの部分だけ。

// オプション設定して印刷
word.Options.UpdateFieldsAtPrint = true;
word.Options.PrintBackground = false;
word.ActiveDocument.PrintOut( true, false, 0, "c:\\printtest.pm" );
492名無し~3.EXE:04/03/06 18:40 ID:BBFbPGA+
>>490
あんまりスマートじゃないけどこんなでどうよ。
Easy圧縮の設定で「圧縮元ファイルと同じ場所(I)」と「圧縮完了を通知しない」を選択のこと。

var WShell = WScript.CreateObject( "WScript.Shell" );
var fso = new ActiveXObject("Scripting.FileSystemObject");
var Argu = WScript.Arguments;
var fList = new Array();
var i, target, fld, fc, fn, count = 0;

for ( i = 0; i < Argu.length; i++ ) {
target = Argu.Item(i);
if ( fso.FolderExists( target ) ) {
fld = fso.GetFolder( target );
fc = new Enumerator( fld.files );
for ( ; !fc.atEnd(); fc.moveNext() ) {
fList.push( fc.item().Path );
}
} else {
fList.push( target );
}
}

while ( fn = fList.pop() ) {
WShell.Exec( "C:\\ezc12\\EASYLZH.EXE " + fn );
}
493名無し~3.EXE:04/03/06 18:42 ID:BBFbPGA+
>>492
count = 0 はいらんかった。
494名無し~3.EXE:04/03/06 18:59 ID:nBDP2t/Y
こないだのセキュリティうpデートで
user@password:url 形式のURLがそのままじゃ使えなくなりましたよね
.Navigate2とかで認証付きのページを何とか利用したく思い、
レジストリ変更でとりあえず現在ログインしているアカウントでは利用可能でしたが、
Win2kでの「タスク」によるスケジュール実行の場合、正しく起動アカウント設定しても
なぜか動作してくれませんでした。

別の方法があれば教えてください
495名無し~3.EXE:04/03/06 23:59 ID:GBV4lnOj
>>492
ありがとうございます!
早速拡張子jsで保存しMP3の入っているフォルダをD&Dしてみました。
ところが、MP3ファイルのそれぞれを(一斉に)個別圧縮してしまい、うまく動かないようです……。
album1\
 1-1.mp3, 1-2.mp3
album2\
 2-1.mp3, 2-2.mp3, 2-3.mp3
↑このフォルダalbum1&2をスクリプトにD&Dすると、圧縮経過を示す
ダイアログが一気に5つ開き、各々のファイルの個別圧縮が始まって
album1\
 1-1.mp3, 1-2.mp3, 1-1.zip, 1-2.zip
album2\
 2-1.mp3, 2-2.mp3, 2-3.mp3, 2-1.zip, 2-2.zip, 2-3.zip
↑こんな感じに圧縮ファイルが出来上がってしまいます。
圧縮経過ダイアログを一つずつ順繰りに出していって、各々のフォルダ中身全部を
そのフォルダの中に圧縮したものを出すようにしていただけると助かりますです。。
album1\
 1-1.mp3, 1-2.mp3, NEW1.ZIP (←1-1.mp3 + 1-2.mp3が圧縮されたもの)
album2\
 2-1.mp3, 2-2.mp3, 2-3.mp3, NEW1.ZIP (←2-1.mp3 + 2-2.mp3 + 2-3.mp3が圧縮されたもの)
こんな具合に。
お手数かけてすみません。お願いします……。
もしこちらの勘違いでしたらすみません。
496名無し~3.EXE:04/03/07 00:27 ID:XFSZdfk5
ここは何屋さんですか?
497名無し~3.EXE:04/03/07 00:42 ID:20mtoeBO
>>495
>492 のスクリプトの動作はそれで正常。だってそうなるようにしたんだもん。
フォルダは丸ごと圧縮だったのな。

圧縮ファイルの保存先は「c:\temp」、ファイル名は「NEW1.lzh」で決めうち。
連番機能で「NEW2.lzh」とかなった時のことはしらん。
D&Dされるのもフォルダに決めうち。ファイルがあった場合はしらん。

var WShell = WScript.CreateObject( "WScript.Shell" );
var fso = new ActiveXObject("Scripting.FileSystemObject");
var Argu = WScript.Arguments;
var i, folder;

for ( i = 0; i < Argu.length; i++ ) {
folder = Argu.Item(i);
var oExec = WShell.Exec( "C:\\ezc12\\EASYLZH.EXE " + folder );
while (oExec.Status == 0) {
WScript.Sleep(100);
}
fso.MoveFile( "c:\\temp\\NEW1.lzh", folder+"\\" );
}
498495:04/03/07 03:47 ID:A2fo+AfB
>>497
バッチリ動きました、ありがとうございます!
497さんのスクリプトをパクらせていただいて、解凍レンジの個別(順次)解凍のスクリプトもできました。
これでかなり快適になるです。ありがとうございました。

// [解凍レンジで個別解凍] EasyExtract.js
var WShell = WScript.CreateObject( "WScript.Shell" );
var fso = new ActiveXObject("Scripting.FileSystemObject");
var Argu = WScript.Arguments;
var i, fn;

for ( i = 0; i < Argu.length; i++ ) {
folder = Argu.Item(i);
// 解凍レンジへのフルパス+コマンドラインオプション
var oExec = WShell.Exec( "D:\\PROGRAM\\EASYRANGE\\ERANGE.EXE " + "+m -o -v -s +w -a -t +c +j " + folder );
while (oExec.Status == 0) {
WScript.Sleep(100);
}
}
499486:04/03/07 09:38 ID:QROk9kvq
>>488
本当だ。ありがとうございますた。
500st:04/03/09 00:44 ID:5rJiLJqT
>>491
なるほどサンクス。
WordのVBAでマクロ記録したら
それっぽい引数名に空文字列を
渡していたんで、もうちょっとがんばれば
良かったわけだな。

ともあれ感謝。

501名無し~3.EXE:04/03/15 17:42 ID:O2W+E1EN
>>16 (11)

参考にしてやってみたんだが、
確かにCABファイルはできるが
XPで、エクスプローラで解凍しようと
すると

この操作を完了するのに十分な記憶域がありません。

とでるのは、漏れだけですか。

Set cab=CreateObject("MakeCab.MakeCab.1")
cab.CreateCab "Test.cab",False,False,False
cab.AddFile "test1.txt","test1.txt"
cab.AddFile "test2.txt","test2.txt"
cab.CloseCab
Set cab=Nothing
502エタ:04/03/16 21:44 ID:wKnbkTxS
おい、超偉い人教えてくださいませ!
_______________________________
■NTドメイン上のコンピュータアカウントのSIDを得る方法■
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
まじで、お願いします。偉い人。期待してます。
503名無し~3.EXE:04/03/16 21:58 ID:AYGU/2SB
>>502
前に同じ事尋ねたけど反応なかったよ
504エタ:04/03/16 23:17 ID:wKnbkTxS
だからって埋もれさせる理由は無いさ
505名無し~3.EXE:04/03/17 00:55 ID:LeyNMhTJ
>>502
こういうこと?

var acs = GetObject("winmgmts:{impersonationLevel=impersonate}")
.ExecQuery("SELECT * FROM Win32_AccountSID");

for ( var e = new Enumerator(acs); !e.atEnd(); e.moveNext() ) {
var ac = e.item();
WScript.Echo( ac.Element + "\t" + ac.Setting );
}
506エタ:04/03/17 08:42 ID:m3t8glGg
それはローカルPCまたはその時直接アクセスできるリモートが対象ではないかい?
欲するは、ドメインDBからコンピュータアカウントのSIDを引き出すこと。
507名無し~3.EXE:04/03/20 01:20 ID:GkkE6i7l
wshからのExcelのソートの仕方がわかりません
誰かおせーてください
508名無し~3.EXE:04/03/20 11:12 ID:RX1LdlGi
Set obj = CreateObject( "Excel.Application" )
で、Applicationオブジェクト作ってソートしたいRangeを設定してSortメソッドでできるんじゃないかな
509名無し~3.EXE:04/03/21 03:38 ID:AKEZeoyl
nbtscan.exe
510名無し~3.EXE:04/03/22 22:53 ID:KF7Gwk9O
文字置換スクリプトにおいて、SJISコードで下二桁が9Dの時、
そいつを元の文字+@(任意の文字)にしたいのですがうまくいきません。

replStr = "A"
setStr = "BG"

現状でAという文字がBGと置換はされるのですが、
文字コードの指定方法がいまいちわかりません。
どなたかアドバイスをくれませんか?
511名無し~3.EXE:04/03/23 03:22 ID:LS/IG5LA
>>510
文字置換スクリプト
ってなに?
512名無し~3.EXE:04/03/23 05:41 ID:nmp7FxJM
秀丸マクロ
513名無し~3.EXE:04/03/24 21:51 ID:OiCQBoKe
Set ie = CreateObject("InternetExplorer.Application")
ie.Navigate("url")
ie.Visible = True

ってやると、すでにIEが起動している場合、同一プロセスに
相乗りして起動しまいます(別ウィンドウであがりますが・・・)。

これを別プロセスで起動させる方法ってあるのでしょうか?
514名無し~3.EXE:04/03/29 21:11 ID:v8sAD3G9
復帰
515名無し~3.EXE:04/03/31 03:25 ID:9sNece1r
IEのお気に入りの中の、URLの特定部分を一括置き換えするスクリプトってありませんか?
pc2.2ch.netからpc5.2ch.netへの鯖変更で、URL書き換えがたまらなくマンドクセー
516名無し~3.EXE:04/03/31 10:10 ID:UnGL88Qs
置換すればいいじゃん
517名無し~3.EXE:04/04/02 02:42 ID:l2IlQlXC
ファイル選択が出来るコモンダイアログボックスっぽいの無いでしょうか?
フォルダを選択するダイアログボックスは簡単に出来たんスけど。
518名無し~3.EXE:04/04/04 06:40 ID:O4OyPESs
すみません
↓こちら>>3にあった個人サイトさまのところにあったJavaScriptなのですが
 これをWordでなくOutlookExpressに変えることってできますでしょうか?
 こういう風にイベントを拾うことができるのってWordやExcel,IEなどの特殊な
 アプリケーションだけなんですかね?(´Д`;)

//Wordを立ち上げる
var objWD = WScript.CreateObject("Word.Application", "WD_");
objWD.Visible = true; //Wordを可視にする

//イベントを待つためのループ
while(true) {
WScript.Sleep(1000); //WSH2.0以上で使える
//不慮の事故でイベントが発生しなかったときのため
if(!objWD.Visible)
WScript.Quit();
}

//終了イベントが発生したときに実行される
function WD_Quit() {
WScript.Echo("Word を終了します");
WScript.Quit();
}
519名無し~3.EXE:04/04/04 14:01 ID:zqvZzeQo
>>518
できない。
520518:04/04/04 16:08 ID:O4OyPESs
どーもありがとー^^
助かりましたー
521518:04/04/04 23:12 ID:O4OyPESs
一応↓みたいにやれば閉じたときに何かするってできるみたいですねー^^
WSHShell.Run "msimn.exe",,true

ただタスクトレイって言うんでしたっけ、右下に常駐させてあるアプリを
アウトルック閉じるのと同時に閉じようと思ったんですけどそれはできませんでしたが(´Д`;)
WSHってソフト起動はできても終了は難しいんですね(´Д`;)
522名無し~3.EXE:04/04/05 00:05 ID:UY/yow8q
指定のテキストファイルの最後に
D&Dされたファイル名を追加するスクリプトキボンチュ!
523名無し~3.EXE:04/04/05 01:12 ID:LLPARLtR
echo %1>>abc.txt
524名無し~3.EXE:04/04/05 11:48 ID:bQTMet0d
ど素人でスイマセン。
WSHとはまったく関係ないのですが、Windowsのコマンドプロンプトでfor文を使って、
繰り返し処理を検討しているのですが、現時点で、for文が何回実行されているか
を表示する環境変数や方法ってないですか?
たとえば、

C:\.arg_test.bat 30000

<内容>
for /L %%I IN (1,1,%1) do echo "Counter ?"

とした場合、?に、for文の実行回数を表示したいのですが・・・・・・・
525名無し~3.EXE:04/04/05 14:44 ID:E/hieQNn
for /L %%I IN (1,1,%1) do echo "Counter %%I"
でいいんじゃねーの?
526名無し~3.EXE:04/04/05 20:04 ID:UY/yow8q
>>523
スマン。よくわ
527名無し~3.EXE:04/04/05 22:32 ID:aRz2BInQ
>>526
523の書いた一行を、テキストファイル test.bat にコピペして保存。
この test.batをデスクトップとかに置いて、そのアイコン上に任意の
ファイルを D&D すれば目的達成。
528名無し~3.EXE:04/04/05 23:45 ID:UY/yow8q
>>527
さっきやったら「ECHO は <ON> です。」とか謎のtxtが出てきたけど
ショートカットからやったら出来た。ありがとう
529名無し~3.EXE:04/04/06 14:38 ID:pR0ckaDO
>>525

ありがとごぜーますた。複雑にかんがえておりますた・・・・・・・
530名無し~3.EXE:04/04/06 14:39 ID:qc9cIEIF
複数のファイルでもD&Dされたファイル名のリストが出来る
大丈夫な高度なバージョンキボン
531名無し~3.EXE:04/04/06 15:00 ID:Gk3Vkbm+
>>530
バッチには詳しくないからそこらで拾った奴。
因みにWindowsの制限で、ある程度以上の数をまとめてD&Dするとエラーがでる。

@echo off
:start
if %1.==. goto quit
echo %1>>c:\documents\a.txt
shift
goto start
:quit
532名無し~3.EXE:04/04/06 22:26 ID:J0u9Q4UJ
533名無し~3.EXE:04/04/06 23:03 ID:w9Ppv/Tz
>>521
RunよりExecの方が良くないかな。
ttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/script56/html/wslrfexecmethod.asp

プロセスの終了方法は>175
534518:04/04/07 00:27 ID:YFo0E4OW
おおおおおおおおおお!!
有意義な情報ありがとうございます!!

ちなみにプロセスって閉じても問題ないんでしょうかね?(´Д`;)
いえ、それしか右下に入ってるの止める方法ないとは思うんですが、
タスクマネージャーでプロセス止めようとするとけっこうな脅し文句(警告)が出るのでちょっと気になりまして・・(´Д`;)
535名無し~3.EXE:04/04/07 14:13 ID:r3TGZg1x
>>534
問題ある
536518:04/04/07 15:16 ID:YFo0E4OW
うほっ!
おとなしく手動で閉じときますw
537名無し~3.EXE:04/04/07 21:01 ID:D1Ek8BVS
プロセスの起動、終了イベント取得方法としてはこんなのもある。

// プロセスの起動を検出
var pros = GetObject("winmgmts:{impersonationLevel=impersonate}").ExecNotificationQuery( "SELECT * FROM __InstanceCreationEvent WITHIN 1 WHERE TargetInstance ISA 'Win32_Process'" );
while ( 1 ) {
var pro = pros.NextEvent();
if ( pro.TargetInstance.Name == "notepad.exe" ) {
// やりたいこと
break;
}
}

__InstanceCreationEvent を __InstanceDeletionEvent に変えると終了を検出。
538名無し~3.EXE:04/04/07 22:41 ID:HmaTY8KC
すんません
アルファベットを数字に対応させるスクリプトを作りたいです。
functionに数字を与えると、アルファベットが返ってくるものです。
対応は以下のような感じです。(26進数とでも言いましょうか)

1=a , 2=b , ... , 26=z , 27=aa , 28=ab , ... , 52=az , 53=ba , ...

どなたか偉い人、助けてください。お願いします
539名無し~3.EXE:04/04/07 23:12 ID:I1bu5S7C
>>538
とりあえずJScriptで。
もうちょいエレガントにできるような気もするけど……。

function GetRadix26(number) {
   if (number < 1) return "";
   var integer = number, str = "";
   do {
      str = String.fromCharCode((--integer % 26) + 97) + str;
   } while ((integer = Math.floor(integer / 26)) > 0);
   return str;
}
540名無し~3.EXE:04/04/07 23:23 ID:L7oaWI5s
目的には合わないけど、純粋に26進数をやるなら
var num = 10;
WScript.echo(num.toString(26));
541538:04/04/08 00:48 ID:zPdfZKvB
>539様
すごいですね。確認しました。
実は私、VBSしか扱えないのですが、このスクリプトはVBSにすることは難しいでしょうか。
542名無し~3.EXE:04/04/08 01:25 ID:ZT9aFhyj
VBSは嫌いなり。

Function GetRadix26(number)
  Dim ret : ret = ""
  Dim integ : integ = number
  While integ > 0
    integ = integ - 1
    ret = String(1, (integ Mod 26) + 97) & ret
    integ = integ \ 26
  Wend
  GetRadix26 = ret
End Function
543538:04/04/08 08:05 ID:zPdfZKvB
すげえ。。。。。しかもこんな夜中に。。。
あんた神様だ。
544名無し~3.EXE:04/04/08 10:32 ID:VtzQSxeq
>>542
話は全然変わるけど、なんで >>539 とか >>542
きれいにインデントされて表示されてるの?
>>537 みたくいつも行頭のスペースは削除されてしまって
インデントつかないんだが。

542 からコピペ
While integ > 0
integ = integ - 1
ret = String(1, (integ Mod 26) + 97) & ret
integ = integ \ 26
Wend

新規に入力
for(i=0; i<10; i++) {
if(i != 5) {
WScript.Echo(i);
}
}
545名無し~3.EXE:04/04/08 11:36 ID:Vf0kwziJ
& で出来る
546名無し~3.EXE:04/04/08 11:37 ID:Vf0kwziJ
ごめ、&nbsp;
547名無し~3.EXE:04/04/08 12:47 ID:VtzQSxeq
>>546
へぇー、なるほど。
  そうやってスペースが入力できるんですね。
    30年来の謎が解けたよ。
      サンキューでした。
548名無し~3.EXE:04/04/08 13:04 ID:TYuC7y8o
下のUWSCのスクリプトなんですけど

ID = GETID("Adobe Illustrator")
DEF_DLL PostMessageA(HWND,Long,Long,DWORD):Bool:user32.DLL
WM_COMMAND = $111
PostMessageA(IDtoHND(ID), WM_COMMAND, 12800, 0)

同じことがやりたくてdynacallを登録し>>149を真似ようとしたのですが
PostMessageAのiとかrをどう記述すればいいのかわかりません。

var WM_COMMAND = 0x0111;
var UserWrap = WScript.CreateObject("DynamicWrapper");
UserWrap.Register ( "USER32.DLL", "FindWindow", "i=ss", "f=s", "r=h" );
UserWrap.Register ( "USER32.DLL", "PostMessageA", "i=huuu", "f=s", "r=l" );
var hWnd = UserWrap.FindWindow( "Adobe Illustrator", 0 );
var result = UserWrap.PostMessageA( hWnd, WM_COMMAND, 12800, 0 );

上のスクリプトはresultが1を返してるけど何の反応もありません。
549名無し~3.EXE:04/04/08 19:15 ID:WK9UFKkL
>>548
FindWindowの引数が違う。
550名無し~3.EXE:04/04/08 23:39 ID:E2Tvfxnm
>>548
FindWindowの第一引数はウィンドウキャプションではなく、ウィンドウクラス。
Illustrator10のウィンドウクラスは"Illustrator9"。

var hWnd = UserWrap.FindWindow( "Illustrator9", 0 );

ウィンドウクラスを調べるには持ってればSpy++を使うんだけど
ないなら ttp://www.vector.co.jp/soft/dl/win95/prog/se291933.html で十分。
551名無し~3.EXE:04/04/08 23:45 ID:DGOgV8UZ
WSHでどうにかしてDLLを呼び出すことできないですか?
552名無し~3.EXE:04/04/09 00:12 ID:zjNLtzhA
>>551
ググれ。
553548:04/04/09 10:38 ID:knDZVkYP
成功しました。本当に感謝しております。

ちょっとググって見た限りだと自動化には
SendMessageのほうが向いてそうなので、
PostMessageAをSendMessageに代えても
問題なく動いてくれました。

参考ついでに、も一つ質問なんですが
12800などのコマンドの番号を調べるには
どんな方法があるのでしょうか?

現状では、UWSCのスクリプトを使って
選択したメニューの番号を調べてます。
554名無し~3.EXE:04/04/14 18:17 ID:PHFgj4Kh
VBスクリプトで、シェル内で、Cのヘッダファイルincludeみたいに
他のシェルのソースも呼び込む事って出来ないんでしょうか?

いくつかバッチ風のファイル作ったのですが、共通で使うConstの変数とか
結構あるので、それ1ファイルにまとめて最初に呼び込んで、
全部宣言しちゃいたいんですが。
555名無し~3.EXE:04/04/14 19:42 ID:9mwW3+/E
>>554
wsfファイルを使って各vbsをインクルード。
この方法を使うと他の色々なエンジンを組み合わすことが出来て便利。
vbsとPrelとか。

詳しくはMSDNを。
556名無し~3.EXE:04/04/16 09:14 ID:w9KoHQ4e
>>554,555

wsf ファイルでもいいけど、こういう方法もある。
さらに、Include 内で読み出す文字列をいじってから
ExecuteGlobalするようにすれば面白いことができる。

Include("test.vbs")

' test.vbs の関数
func()

Sub Include(ByVal file)
Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile(file)
ExecuteGlobal( f.ReadAll() )
End Sub

557名無し~3.EXE:04/04/18 00:37 ID:0Nm6I2Oe
openjaneについてるIEの「対象をファイルに保存」をDmonkeyやwshからでも同じようなこと出来ますか?
shdocvw.dllのDoFileDownloadを使ってるらしいのですが。

Delphiのルーチンはこんな感じです。
ttp://jane2.cun.jp/test/read.cgi/morningcoffee/1042515970/236-237
558名無し~3.EXE:04/04/19 00:58 ID:LAXtuuX0
>>557
「対象をファイルに保存」ってアドレスを右クリックしたときのでしょ。
どこに表示されたアドレスに対してそのメニューを出したいの?

単にIEオブジェクトを使って「ファイルのダウンロード」画面を出したいのなら
Navigateでいけそう。エラーが出るからtry...catchするとかして。
559557:04/04/19 02:10 ID:nNQBcXcZ
>>558
おぉレスサンクスです。!
どういう状況で出したいのかといいますと、、、
自分が使ってるエディタはEmEditorなんですが、それには他のアプリにコマンドライン付きで
起動させる機能がついているのでエディタで表示しているURLをWSHとかに渡して
ブラウザのようにダウンロードしたいんです。

出来そうっすか?
560名無し~3.EXE:04/04/19 12:39 ID:cKMLtum3
ダウンロードするだけならDMonkeyで(new HTTP).getFile('url','localfile');でいける
561名無し~3.EXE:04/04/19 20:54 ID:bZTbuDtK
>>560
確かにgetFileで落とせることも出来るのですが、
途中でキャンセルしたい場合とか接続が繋がってるかどうかGUIで分かるから便利なんですが。
まぁDmonkeyでも出来そうだがスキルない・・・
562名無し~3.EXE:04/04/20 22:17 ID:L5+/m7Z5
>>561
EmEditorで、カーソル位置のアドレスをIEでダウンロードorファイルに保存。
かなーり適当。IEよりダウンローダーに渡した方が良いと思うけどね。

var IE = new ActiveXObject("InternetExplorer.Application");
document.selection.CopyLink();
IE.Navigate("about:blank");
var clp = IE.Document.frames.clipboardData;

IE.Navigate( clp.getData('Text'), 0 );

while ( IE.Busy );
while ( IE.Document.readyState != "complete" );
if ( IE.document.URL != "about:blank" ) IE.ExecWB( 4, 0 );
563557,561:04/04/22 02:07 ID:ZbN1pQYP
>>562
遅レスすいません。
おぉすごい!これいいっすね。
マクロに登録して使い倒します( ;´Д`)
564名無し~3.EXE:04/04/25 13:46 ID:4PZE/4vI
Dim oFS, sTarget
Set oFS = WScript.CreateObject("Scripting.FileSystemObject")
For Each sTarget In WScript.Arguments.Unnamed
If oFS.FileExists(sTarget)Then
oFS.MoveFile sTarget, oFS.GetParentFolderName(sTarget) & "/../"
End If
Next

1つ上の階層へファイルを送るってやつですが、
ファイルのみではなくフォルダであろうが同様の操作をさせるにはどうすればいいですか?
565名無し~3.EXE:04/04/25 14:28 ID:IZhLKFOY
>>564
Windows Scripting Host Laboratoryの
ダウンロードにある
フォルダ内のアイテムを上位フォルダに移動する
スクリプトを使えばいいのでは?
566名無し~3.EXE:04/04/25 23:36 ID:L/G2A73Q
FolderExists のときは MoveFolder すればいいんじゃね?
567名無し~3.EXE:04/04/27 09:47 ID:61+TBcbw
多重起動を抑制するには、どうすればいいのでしょうか?
「ロックファイルにPIDを出力して…」みたいな、定石があれば御紹介ください。
568名無し~3.EXE:04/04/29 08:42 ID:m8J/+GsI
>567
起動を監査する対象がEXEならWMIでいけると。

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcesses = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = 'Database.exe'")
If colProcesses.Count = 0 Then
Wscript.Echo "Database.exe is not running."
Else
Wscript.Echo "Database.exe is running."
End If
569名無し~3.EXE:04/04/29 10:34 ID:ZuH74Xba
実は今、PC初期設定コンプリートの為のスクリプトを書くことを
検討中なのです。

会社に新規に導入したPC100台に対して、一括して
1.IEのプロキシ設定のかき込み
2.あるテキストに1行ごとに登録したIPを各PCに設定
3.おなじくWinsの設定やDNSのかき込み
4.OEのアドレス帳のインポート
5.OEのメールアドレス、パスワードの自動設定>あるテキストから持ってくる

とりあえず、これを機械的にばばっとやれるスクリプトを書きたいのですが、これ
は物理的にできるのでしょうか?
570名無し~3.EXE:04/04/29 12:22 ID:ATiBnBtm
物理的って??
571名無し~3.EXE:04/04/29 21:07 ID:m8J/+GsI
たしかに物理的って意味がわからん。パソコンの設定に物理が関係あるのか?
カッコ良さそうだから使って見たのかい?ぼうや。

だいたいOSは何なんだ?
IP設定してないってことは、通信できない状態だろ。
同じ状態のツールをあらかじめ配っておくつもりか?
IPが沢山書いてあるテキストから重複なしにどうやって割り振るんだ?
ホスト名:IP:MACアドレス の対比表ならできるか・・・
NT系の場合、IEの風呂敷はユーザ単位だぞ。同一ユーザでログオンしたら駄目だぞ。

ADでグル−プポリシー、DHCPサーバを使えばスクリプトなんか要らずに4.5.以外は解決するよな。
会社でOE使ってんのか?まじで?
普通ExchangeServerだろーーーーーーーーー? Outlook2000ならSendkeyメソッドで自動化したことがあるな。

あーつかれた。
572名無し~3.EXE:04/04/30 03:10 ID:WFvQYMh6
ageた上に妙に興奮しているヤツがいるな w
573名無し~3.EXE:04/04/30 15:49 ID:UN+bzQ53
>>569
XPか2000ならスクリプトなんか書かずにできる。
574名無し~3.EXE:04/04/30 19:09 ID:W5RdsvGh
>573
NETSHのことだとしたら、あれも一種のスクリプトだと思うが。
575名無し~3.EXE:04/04/30 19:55 ID:ItAiNq99
すいません、今VBScriptの本を読みながら、
いろいろ作ってみているところなんですが、
お薦めの書籍とかってありますか?
出来るだけ幅広く、詳しく出ているのが欲しいんですが、
図書館や本屋で探しても、いまいちどれがいいのか・・・
576名無し~3.EXE:04/04/30 22:16 ID:W5RdsvGh
専門書に幅広さを求めるなよ(笑)
オライリー系の本なら外れは少ないと思う。
ttp://www.oreilly.co.jp/index/quick/
577名無し~3.EXE:04/05/01 00:58 ID:JqDd2F1V
>>575
VBScriptの本を読みながらとあるが、どんな本を(例えば書名とか)読んでいるのかな?
それによってアドナイスも変わってくると思う。
まぁ、WSHの本自体が少ないんだけど。

オライリーのWSHクイックリファレンスは悪い本じゃないと思うが、文字通りリファレンスだから
君の希望に合致するかどうかは疑問。(オブジェクトのリファレンスで関数ははしょってある)
578名無し~3.EXE:04/05/01 07:23 ID:m+FvtCtI
>>576
dクス
オライリーはいいところなんですか。
とりあえず、書店で見てきまつ。

>>577
「VBScriptハッカーズプログラミング」
「VBScriptクイックリファレンス」
書名は怪しいけど、とりあえずマトモな本です。
学校の図書館にはこれ以外はHTMLに埋め込むための本しかなくて・・・
リファレンスブックでいいんですが、関数とかハショらないで
出来るだけ仕様とか詳しく書いてある本がホスィです。
上に書いた本だと、WSHとか、IE・Excelの動かし方とかはちゃんと出てないのです(´・ω・`)
579名無し~3.EXE:04/05/01 07:38 ID:Q53XKgW+
リファレンスそのものはMSDNにあるしなぁ。
580名無し~3.EXE:04/05/01 07:38 ID:5JvoJ6r3
ヘルプみれや
581名無し~3.EXE:04/05/03 14:02 ID:svr2IVqb
>>578
>>579-580でも言われてるけど、
VBSやJScriptの関数、WSHのオブジェクトなどに関してはMSDNが一番。
ttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/script56/html/vtoriMicrosoftWindowsScriptTechnologies.asp?frame=true

IEオブジェクトに関してはMSDNに日本語ドキュメントは無いっぽい。
VB用だけどVBSと大して変わらないでしょ。
ttp://msdn.microsoft.com/workshop/browser/webbrowser/reflist_vb.asp?frame=true

エクセルやワードに関しては、
Officeをインストールしたディレクトリ下のどこかに
ヘルプファイルが沢山あるフォルダがあると思うので
その中からファイル名に「VBA」が含まれてるヤツを見ていくといい。
エクセルなら VBAXL〜.CHM、ワードならVBAWRD〜.CHMとか。"〜"は数字(多分バージョン)。
VBA用だけど問題ないはず。
582名無し~3.EXE:04/05/06 09:12 ID:X4PfDImF
VBScriptでの Dir 関数の使い方を教えてください。
ttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vblr7/html/vafctdir.asp
のサンプルから

Dim MyFile, MyPath, MyName
' Returns "WIN.INI" if it exists.
MyFile = Dir("C:\WINDOWS\WIN.INI")

の3行をコピペして拡張子 vbs のファイルにテキストエディタで保存したところ、

エラー: 型が一致しません。: 'Dir'
コード: 800A000D
ソース: Microsoft VBScript 実行時エラー

というエラーが出てしまいました。Dim に As String と加えてもエラーになり

エラー: ステートメントの末尾が不正です。
コード: 800A0401
ソース: Microsoft VBScript コンパイルエラー

と出ます。いったいどうしたらいいのでしょうか?
583名無し~3.EXE:04/05/06 09:14 ID:X4PfDImF
なお、OS は Windows XP SP1 で、WSH 自体のバージョンは調べ方が分からない状態です。
584名無し~3.EXE:04/05/06 09:20 ID:PFoUlqJY
585名無し~3.EXE:04/05/06 10:07 ID:X4PfDImF
586名無し~3.EXE:04/05/06 13:30 ID:PFoUlqJY
(´・ω・`)
587名無し~3.EXE:04/05/07 00:36 ID:vYytL1K5
sage
588名無し~3.EXE:04/05/07 16:19 ID:O+Dx19KU
WSHでプログレスバーを表示する方法はありますか?
たとえば、3000個のフォルダに対して操作するときに
「x個中y個完了」とかいう表示を随時見せるような感じに
できればいいんですけど…。
589名無し~3.EXE:04/05/07 18:55 ID:mF336620
Windows標準の奴は難しいんじゃない?
IEのウィンドウに表示するとかならできるかな
590名無し~3.EXE:04/05/07 19:23 ID:uKaqLE9J
コマンドラインに表示してやればいいじゃん、と思ってしまう。
591名無し~3.EXE:04/05/07 19:24 ID:RpZtUoso
>>588
>>589のいうとおりだし。
つまりそういうことは、HTAでやれば。
592名無し~3.EXE:04/05/07 20:49 ID:dLjAemXD
そういえば、HTAのスレって見ないな。
あったっけ?
593名無し~3.EXE:04/05/07 20:59 ID:K9ZxSVbq
594名無し~3.EXE:04/05/10 16:31 ID:HmTvgj3I
Byte型のデータをInteger型に変換する方法はあるでしょうか?
ぐぐったのですがVBや.NETでのやり方しか見つけることが出来ず難渋しています。
595名無し~3.EXE:04/05/10 16:39 ID:jeFroQHt
596594:04/05/10 17:25 ID:HmTvgj3I
>595
すみませんでした。
CIntでエラーが出るので、出来ないと思いこんでいたのですが原因は別のようです。

あらためて質問なのですが、次のスクリプトでCIntがエラーになるのですが原因は何でしょうか?

Const adTypeBinary = 1
Const adSaveCreateOverWrite = 2
set objFileSystem = CreateObject("Scripting.FileSystemObject")
strRoot = objFileSystem.GetParentFolderName(WScript.ScriptFullName)
strFileName = strRoot & "\tmp.dat"
Set objStream = CreateObject("ADODB.Stream")
objStream.Open
objStream.Type = adTypeBinary
objStream.LoadFromFile strFileName
l = objStream.Size
ReDim a(l)
objStream.Position = 0
For i = 0 To 5'l
byteBuf = objStream.Read(1)
a(i) = CInt(byteBuf)
Next
objStream.Close
set objStream = nothing
set objFileSystem = nothing
597名無し~3.EXE:04/05/10 18:15 ID:jeFroQHt
>>596
>      byteBuf = objStream.Read(1)
で返ってくるのは特殊な配列なので、AscB(byteBuf)で変換。
598名無し~3.EXE:04/05/10 19:11 ID:HmTvgj3I
>597
ありがとうございます。解決しました。
599名無し~3.EXE:04/05/12 02:01 ID:CJrPizfp
質問させてください。
Wshで
ttp://hp.vector.co.jp/authors/VA036013/htmlassistant/screenshot.html
みたいなボックス(?)を使うことはできますか?
あと、このボックスの名前はなんていうんでしょうか?
名前が分からないので検索さえできません。
よろしくお願いします。
600名無し~3.EXE:04/05/12 02:14 ID:/pChCsez
多分リストボックス
そして無理
601名無し~3.EXE:04/05/12 02:24 ID:WQMUTPeO
HTAならいけるけどな。
602名無し~3.EXE:04/05/12 17:42 ID:HjS9eetm
VBScriptの正規表現で、以下のようなテキストから<TR>〜</TR>毎に
マッチさせたいのだがうまくいかない。
例のように<TR>〜</TR>の間に2行挟まっているような定型的なものだと
"<TR.*(\n.*){3}" とすればいいのだが、不定型なものだとうまくいかない。
正規表現で表すことは無理なのかな?
だれか分かる人がいれば教えて欲しい。

【例】
---------------------------------------------
<TABLE>
  <TR>
    <TD>タイトル</TD>
    <TD>WSH クィックリファレンス</TD>
  </TR>
  <TR>
    <TD>著者</TD>
    <TD>羽山博</TD>
  </TR>
</TABLE>
---------------------------------------------
603名無し~3.EXE:04/05/12 19:01 ID:GjeYWnZT
>602
"<TR>.*</TR>"じゃ駄目なの?
俺が質問の意図をくみ取れてないのかな。
604名無し~3.EXE:04/05/12 19:05 ID:GjeYWnZT
あ、ごめん勘違いしてた。
605名無し~3.EXE:04/05/12 19:07 ID:KBK4sKwo
msgboxとかにあるシステムモーダルってどんなときに使うの?
説明には「システム モーダルに設定します。メッセージ ボックスに応答するまで、すべてのアプリケーションが中断されます。」
とかなってたんで試しに
-----------------------
MsgBox "test",4116
MsgBox "test1",4096
MsgBox "aaaa",vbSystemModal
-----------------------
とか書いて走らせてみても、メッセージ ボックスに応答せず放置してても
何も中断されているようなモノがないような気がするんだけど???
606名無し~3.EXE:04/05/12 19:33 ID:GjeYWnZT
>602
"<TR>(.|\n)*</TR>"でいけるはず。
607名無し~3.EXE:04/05/12 20:02 ID:HjS9eetm
>>606
それだと *</TR> があるので、最後の</TR>までマッチしてしまう。
そこのところで悩んでいる。
なかなか難しいね。
608名無し~3.EXE:04/05/12 20:19 ID:GjeYWnZT
>607
</TR>までマッチさせてから、Left使って取り除いくのじゃ駄目?
609名無し~3.EXE:04/05/12 20:46 ID:WQMUTPeO
グループ化しちゃ駄目なの?

Dim reg, matches, i, text
'textにファイルから文字列読込
Set reg = new RegExp
reg.Pattern = "<tr>((?:.*\n)+?.*)</tr>"
reg.IgnoreCase = True
reg.Global = True
Set matches = reg.Execute(text)
For Each i In matches
   WScript.Echo(i.SubMatches(0))
Next
610名無し~3.EXE:04/05/12 20:50 ID:nA9R8B5Z
>>605
そういえば、Win3.1のときは全員とまってくれてたな〜
611名無し~3.EXE:04/05/13 00:58 ID:wCgJKQju
>>607
<TR>(.|\n)*?(?=<\/TR>)
612611:04/05/13 01:00 ID:wCgJKQju
?:があった方が良いかも。
<TR>(?:.|\n)*?(?=<\/TR>)
613名無し~3.EXE:04/05/13 01:43 ID:u0plldlJ
602 です。
レスしてくれた方、どうもありがとう。
怪しい書き方だけど、とりあえず解決した。
かなりいい加減な書き方をしているものでも、対応できるようになった。

"(.*<tr.*/tr>)|(.*<tr.*/tr>.*)|(.*<tr((?:.*\n)+?.*)/tr>)"

614名無し~3.EXE:04/05/13 03:03 ID:wCgJKQju
>>613
なんだよ。最短マッチじゃんかよ。
ウダウダ言ってるからもっとややこしいのかと思った。

"<(?:TR|tr)>(?:\n|.)*?<\/(?:TR|tr)>"
で終わりじゃん。

?:と大文字無くしてスッキリ書いたら
"<tr>(\n|.)*?<\/tr>" これだけだ。
615名無し~3.EXE:04/05/13 09:15 ID:+fb/FC9/
dynacallで、引数なしのAPI(GetForegroundWindowなど)を使う場合、
引数はどう設定すればよいでしょうか?
616615:04/05/13 09:42 ID:+fb/FC9/
自己解決できました、すいません(._.;)
617名無し~3.EXE:04/05/13 18:03 ID:5U7sysQr
>>614
"<(tr)(\n|.)*?/\1>" の方がいいと思うが。
それと嫌味な表現をしない方がいいと思うけどな。


618名無し~3.EXE:04/05/15 04:01 ID:t6oROyjp
WSHやらなんやらで、音楽ファイル(wavやmp3)の曲の長さを得るにはどうすればいいでつか?
何を調べればよろし?
619名無し~3.EXE:04/05/15 05:18 ID:t6oROyjp
なんだMPEG Audioって簡単には正確に曲の長さ出せないのか;;
計算で大体の値求めるしかないんでつか?
教えてエロい人。
620名無し~3.EXE:04/05/15 06:23 ID:8m9lza4r
メディアプレーヤ使うか?
var player = new ActiveXObject("WMPlayer.OCX.7");
とかして、
player.URL="x.mp3";
とか言う感じで。
で、あとはどうすれば?
621名無し~3.EXE:04/05/15 11:10 ID:t6oROyjp
ttp://www.geocities.jp/bywnn498/mp3/
Contentsの「再生時間の計算」を読んで619を得ました。

Σ(1152÷サンプリング周波数(Hz))
で出せるはずだけれども、時間かかって実用性無いそうで。
ついでに言えば、その周波数をドコからどうやって取得すればいいんだか...不明。
音楽ファイルの構造についてはサッパリなんで非常に困っとります。

MP3をテキストとして開いたら、再生時間が書き込まれていた!なんてこともないよねぇ。
ファイルのプロパティを一発取得!みたいに簡単な方法ありません?
622名無し~3.EXE:04/05/15 12:34 ID:pcpOTzoU
>>621
XPならエクスプローラーの詳細表示で表示できるから
GetDetailsOf とか使ってそれを取得すればいいんじゃない?
XP以外なら mp3infp 入れれば表示できるし。
623名無し~3.EXE:04/05/15 17:59 ID:0JT/Xed9
今日始めてこのスレ見たので今更ですが、>>454さんのやりたかった
ことを関数にしてみました。


Const strPath = "c:\1st\2nd\3rd"

Set FS = CreateObject("Scripting.FileSystemObject")

Call ForceDirectories(strPath) 'フォルダ作成関数呼び出し

Set FS = Nothing

'== フォルダ作成関数(親フォルダが無ければ再起呼び出し) ====
Function ForceDirectories(CreatePath)
  Dim ParentFolder
  ParentFolder = FS.GetParentFolderName(CreatePath)
  If Not FS.FolderExists(ParentFolder) Then Call ForceDirectories(ParentFolder)
  If Not FS.FolderExists(CreatePath) Then Fs.CreateFolder(CreatePath)
End Function


もう需要ないですかそうですか・・・_| ̄|○
624名無し~3.EXE:04/05/15 18:22 ID:0JT/Xed9
ところで、下のコードで生成したフォームを表示するには
どうしたらいいんでしょうか。

Dim UserForm
Set UserForm=CreateObject("Forms.Form.1")
UserForm.Caption = "hogehoge"
UserForm.Visible = True '←ここでエラー
Wscript.Sleep 3000
SetUserForml =Nothing
625名無し~3.EXE:04/05/15 21:04 ID:jyoKni2b
>>620
var wmp = new ActiveXObject("WMPlayer.OCX.7");
var media = wmp.newMedia( "c:\\hoge.mp3" );
WScript.Echo( media.getItemInfo( "Duration" ) );

これで秒をgetできる。
626名無し~3.EXE:04/05/16 01:01 ID:sgE2PxmI
>>624
そりゃコントロールは無理だろ
627名無し~3.EXE:04/05/16 01:17 ID:X785STks
>>624
.Visibleプロパティがないからエラーになってる
628名無し~3.EXE:04/05/16 12:01 ID:R+sqK+x3
>>626-627
やっぱりダメっぽいようですね。HTAでがんばってみます。

再描画ってどうやるんだろう・・・。
629名無し~3.EXE:04/05/17 22:37 ID:KlgCFm1n
>>628
GUIが必要なら、変にWSHに拘らず
JScript .NETとかC#でやった方が良いと思う。

JScript .NETならスクリプトっぽさはそのままで
.NET クラスライブラリが使えるから簡単に色々なことが出来る。
630名無し~3.EXE:04/05/18 00:09 ID:sKgLJGgE
>>629
レスサンクス

>>588みたいなことをやろうとしたんですが、会社で使うんで、
勝手にソフト入れられないんですよ。

仕方が無いんで、Excelのユーザーフォームで作っちゃいました・・・。
631名無し~3.EXE:04/05/25 00:44 ID:W+hpR351
微妙にスレ違いかも知れない質問ですが、IEの右クリックメニュー用のスクリプト
(形式上は *.htm)では WScript オブジェクトは使えないのでしょうか?
たとえば

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<script type="text/javascript">
    WScript.Echo("OK");
</script>
</head>
</html>

と書いて実行すると「'WScript' は宣言されていません」となります。

単に WScript.Sleep を使いたいだけなので別の解決策があれば
それでいいのですが・・・。
632名無し~3.EXE:04/05/25 21:11 ID:9IZ8mgVi
>>631
Settimeoutはどうでしょう。
633名無し~3.EXE:04/05/26 23:03 ID:PYqWo2Ks
ドメインのログオンスクリプトを作成しています。
空いているドライブを検索してマウントまではできたのですが、
既にネットワークがマウントされているかを判別するのに悩んでいます。
例えば"\\Server\Share"がどこかのドライブにマウントされているかを
判別するスクリプトを教えて下さい。
よろしくお願いします。
634名無し~3.EXE:04/05/26 23:11 ID:c9/0qWJY
>>633
EnumNetworkDrives
635名無し~3.EXE:04/05/27 02:58 ID:OYEe7nTT
>>632
うーん、確かに Settimeout は指定時間遅らせて関数を実行
できますが、やりたいのはスクリプト自体の停止なのです。

具体的には、document 中のあるプロパティを見張って
そのプロパティがある値になったら処理を行いたいと。
そこで WSH なら

while(the_value != 3){
    WScript.Sleep(1000);
    the_value = document......
}

というようにできるのですが、右クリックメニュー用スクリプト
だと今のところ実現できてません。

どなたかお知恵を!
636名無し~3.EXE:04/05/27 04:30 ID:jksQfLJE
>>635
外部 COM を使ってみてはどうでしょうか。
ttp://www.autoitscript.com/cgi-bin/countdown.pl?AutoIt/AutoItX.zip
------------------------------------------------------------------
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<script type="text/javascript">
WshShell = new ActiveXObject("WScript.Shell");
Ait = new ActiveXObject("AutoItX.Control"); // AutoIt
Ait.Sleep(5000);
WshShell.Run("notepad.exe");
</script>
</head>
</html>
637名無し~3.EXE:04/05/30 22:32 ID:xWmPQNyz
私の使っているタブブラウザ(Moon Browser)に、お気に入りを訪問回数でソートする機能がないので、
IEの履歴から訪問回数を取得しようと思い、以下のような履歴フォルダを走査するコードを書いたのですが、
一応動いてはいるようなのですが、20日分の履歴を処理するのに5分ぐらいかかってしまいます。
もうちょっと速くする方法はないでしょうか?
WindowsXP Pro、IE6.0です。

var HistoryFolder = 0x22;
var objShell = WScript.CreateObject("Shell.Application");
var objHistoryFolder = objShell.Namespace(HistoryFolder);
var cnt = new Array();

function count(folder) {
var i, item, url;
for (i = 0; i < folder.Items().Count; i++) {
item = folder.Items().Item(i);
if (item.IsFolder) {
count(item.GetFolder);
} else {
url = folder.GetDetailsOf(item, 0);
if (typeof(cnt[url]) == "undefined") {
cnt[url] = 1;
} else {
cnt[url]++;
}
}
}
}

count(objHistoryFolder);
638名無し~3.EXE:04/05/31 23:48 ID:5iJjVD1D
>>637
履歴は実際にはショートカットファイル群ではなく
c:/Documents and Settings/UserName/Local Settings/History/History.IE5/index.dat
みたいたなindex.datに格納されてるから、
これを直に読み込んで正規表現で抜き出せば速いかも。

perlでやってみたら速かった。
問題はファイル名の取得と抜き出し方法かな。
639名無し~3.EXE:04/06/04 12:38 ID:mIDRkQlB
初心者なのでよくわからないのですが、
aspのwebページをIEで開いて自動でパスワードとか
ボタンをクリックしたりできますか?
640名無し~3.EXE:04/06/04 18:50 ID:5fWUoTtC
初心者だったら PM12:38 に書き込んで質問して、答えてもらえるとでも?
641名無し~3.EXE:04/06/04 22:17 ID:aErqCyE2
>>639
上の方にIEオブジェクトを使って
フォームの項目に値を入れたりボタンをクリックする例がある。
642名無し~3.EXE:04/06/07 23:39 ID:xSMrBd0j
WSHでPCIバスにささっているボードの一覧を取得するにはどうしたらいいですか?

Win32_BusクラスからPCIバスの一覧を取得してWin32_PnPEntityクラスから
PCIのデバイスを取得しているんだけど、どのスロットに何のボードがささって
いるのかを上手く表せません
643名無し~3.EXE:04/06/08 01:59 ID:HMjv3nxA
>>636
遅ればせながら、レスありがとうございます。
残念ながら他のソフトをインストールすることは
できない環境なのです。
ということで諦めモードでフェードアウト。
644名無し~3.EXE:04/06/09 02:33 ID:PXKTCz31
引数をYahoo検索するスクリプトきぼん

yとなづけてパスをとおして
ファイル名を指定して実行したいのです
645名無し~3.EXE:04/06/09 15:58 ID:2gWDJhZD
>>644
y.bat
rundll32.exe url,FileProtocolHandler http://search.yahoo.co.jp/bin/search?p=%1
646名無し~3.EXE:04/06/09 17:22 ID:mUQxpbDk
VBScriptでInputBoxにパスワードを入力させたいんですが、普通に使うと入力した値が見えてしまい(当たり前ですが・・・)困っています。WSHと組み合わせてうまくできないでしょうか?
教えて下さいエロい人・・・。2000とXPで動くようにお願いします。
647名無し~3.EXE:04/06/09 17:51 ID:DJ3dBTQW
できますね
648名無し~3.EXE:04/06/09 17:55 ID:mUQxpbDk
どんなかんじにやればいいですか?
649名無し~3.EXE:04/06/09 18:00 ID:0uyHH9mW
スクリプトでそんなことやって大丈夫か?
入力パスワードの内容ログに出力とか変更されそう。
650名無し~3.EXE:04/06/09 18:16 ID:mUQxpbDk
スクリプト書き換えられなきゃ平気ですか?
651名無し~3.EXE:04/06/09 18:45 ID:mUQxpbDk
具体的にはノートパソコンをローカルネットワークに参加させる処理を自動化させたいんです。途中何回かユーザ名とパスワードを入力しなきゃいけないんで最初にInputBoxに入力して後は自動でやらせようとしてるんですが・・・。
652名無し~3.EXE:04/06/09 21:25 ID:A5QYHs4X
>>651
IE使ってHTMLはさんだら?
653名無し~3.EXE:04/06/09 21:50 ID:mUQxpbDk
↑どうもうまくいきません・・・。HTML使うと書き方かわるとかないですよね?
654名無し~3.EXE:04/06/10 00:35 ID:+yY3g5tK
>653
vbsとhtmlでは微妙に違うのでめんどくさい。
htaにしてpasswordだけ取得すると楽かも?
気休めとしてhtaを外部スクリプトにしてScript Encoderで暗号化とか?

ttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1022248177&res=51&fi=no
↑これをpass.htaの名前で保存
↓これをpass.vbsの名前で同じフォルダに保存

Dim objArgs, i
set objArgs = Wscript.Arguments
if objArgs.Count=0 then
else
for each i in objArgs
msgbox i
next
end if
set objArgs = nothing
655名無し~3.EXE:04/06/10 01:40 ID:9fUFeFIK
ありがとうございます!今携帯からなんで明日やってみます!
656655:04/06/10 17:23 ID:9fUFeFIK
ありがとうございました。うまくいきました!
657名無し~3.EXE:04/06/11 23:53 ID:hipzp3Lx
フォント名の列挙と日本語と欧文の判別って出来ますか?
658名無し~3.EXE:04/06/12 00:13 ID:RfD/NbaQ
VBS、HTAに疲れました
GUIをバリバリ使える言語も勉強したいのですが、どんな言語がスムーズに乗り換えられますか
659名無し~3.EXE:04/06/12 00:16 ID:/KkjJHoG
GUIといえばDelphiでしょう。
http://www.borland.co.jp/delphi/personal/
660名無し~3.EXE:04/06/12 01:51 ID:sIRX+mYo
VB.NETって手もある。
661名無し~3.EXE:04/06/12 15:42 ID:J+mYYY21
Windows Scriptingだけでメールソフトを作りたい。
662名無し~3.EXE:04/06/12 15:48 ID:sIRX+mYo
>>661
スクリプトで書く意義が見当たらない。
663名無し~3.EXE:04/06/12 16:20 ID:H/hvXVT3
Windows ScriptingだけでWindowsを作りたい。
664名無し~3.EXE:04/06/12 16:23 ID:i/FyY4HA
>>663
ちょいと待ちな。暇だから(ry
665名無し~3.EXE:04/06/12 17:31 ID:VcdhcG1M
664氏光臨の予感!




そしてゲイツに訴えられてタイーホの予感
666名無し~3.EXE:04/06/12 20:46 ID:/N+TSOtH
WScript.Echo "Windows"
667KingMathematician ◆5lHaaEvFNc :04/06/12 20:51 ID:mEdTQaHW
Re:>>666
それは"Windows"と書いているだけでは?

まぁ、インタプリタ言語だけでOSを作るという発想はあまり自然でない気がするが。
668名無し~3.EXE:04/06/12 21:23 ID:ZLUukdiE
あぼーん
669名無し~3.EXE:04/06/13 03:44 ID:g6HYmXUj
>667
ちょっとまえにJAVAScriptで作ったウィンドウシステムのデモをどこかで見た気が。
まぁ、OSじゃないよな。
670名無し~3.EXE:04/06/15 22:00 ID:pC+zyqLp
お知恵拝借させてください。
たとえばメインプロシージャの中で2つのサブプロシージャ(AとB)があるとする。
それぞれのサブプロシージャをメインプロシージャから実行したいが、
Aの処理が終わってからBの処理をする必要がある。Aの実行には1分程度かかる可能性がある。
Aの中からBを呼ぶ以外の方法で、美しい方法はありますでしょうか。

文ではなくてコードっぽくすると
Sub Main()
Call A()
Call B()
End Sub
これを、A,B順番にやりたいということ。
現状では、Aの実行中にBが実行されてしまいます。
初心者ですみません。
671名無し~3.EXE:04/06/16 00:12 ID:I7NnHVWJ
>670
基本的には必ずA()の終了後にB()が実行される。
だから、たぶんA()が処理の途中で終了してるんでは。
672名無し~3.EXE:04/06/16 01:20 ID:hkrxfp+H
>>670
想像だけど、A()の中で何かのオブジェクト作ってメソッド実行してるなら、
別のスレッドが生成されてメソッドの完了前に戻ってきてしまい、B()が動いてしまう鴨。

A()の最後で処理の完了を待つようにループを作るのが定石かな。
A()の中身を書いてみて。
673名無し~3.EXE:04/06/16 08:06 ID:o/ReHgQy
>>672 別のスレッドが生成されてメソッドの完了前に戻ってきてしまい、B()が動いてしまう鴨。
これはありません
674名無し~3.EXE:04/06/16 08:15 ID:MEkw4gYO
670です。
Aの中身としては、以下のようなことをしています。ソース版に上げました。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1022248177&res=52&fi=no


675670:04/06/16 08:20 ID:MEkw4gYO
訂正すんません


Set oTsStdOut = oFS.oPaenTextFile(strTargetFilePath)

Set oTsStdOut = oFS.OpenTextFile(strTargetFilePath)
676670:04/06/16 08:40 ID:MEkw4gYO
677名無し~3.EXE:04/06/16 08:41 ID:LwCQTJvX
>>674
>>672
だろね。
グローバルな変数completedを作って、A()が終わる時にTRUEにする。
A()とB()の間でcompletedがFALSEの間ループを回す。
//WScript.Sleepって使えたっけ……。setTimeoutで代用が効くか。
678名無し~3.EXE:04/06/16 13:02 ID:hkrxfp+H
>>670
pingはコマンドだから、cmd.exeは不要では?
×:oShell.Run "CMD.EXE /C PING -n 1 " & Destination & " >" & FilePath , 0, TRUE
◎:oShell.Run "PING -n 1 " & Destination & " >" & FilePath , 0, TRUE
679(゜Jし゜):04/06/16 16:34 ID:zOKS3COs
WshShell.Runメソッドは新しいプロセスを実行するから、じゃないかな。
WshShell.Execメソッドなら子プロセスで実行できるから問題ないような気がする。
但しExecメソッドで実行できるのはコマンドラインのみという制限はあるけど。
680名無し~3.EXE:04/06/16 16:43 ID:LwCQTJvX
>>679
Runは作ったプロセスを同期的に実行できる。
で、それが第三引数のTRUE。
この場合は新しくスレッドを作るsetIntervalが原因。
681名無し~3.EXE:04/06/16 23:39 ID:/srAGG2w
>>676
質問の答えではないけど、pingの結果をファイルに書き出さなくても

Dim WshShell, oExec, result
Set WshShell = CreateObject("WScript.Shell")
Set oExec = WshShell.Exec("ping 192.168.0.1")

result = oExec.StdOut.ReadAll()
WScript.Echo( result )

こんな感じで標準出力を取得できる。
682670:04/06/17 00:24 ID:EJTY6clQ
一応完成をみたということで。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1022248177&res=54&fi=no

>677 おまえさんの言うやり方でやったよ。サンクス。
>681 サンクス。そのうち改善するわ。
683名無し~3.EXE:04/06/17 00:44 ID:9JrefVpH
☆ C:\foo\20040617.txt を移動して、E:\foo\20040617.txt にする。
☆ ****.txt は常に同じ名前ではない。
☆ 日付を示してはいるけれど、必ずしも本日ではない。
☆ C:\fooフォルダには、常にたったひとつの txtファイルしかない(E:\foo にコピーが済んだら削除)

何かやり方ありますか?
684683:04/06/17 00:51 ID:9JrefVpH
何か質問の仕方が変でしたね

常にC:\foo フォルダにたった一つだけある、名前の決まっていないtxtファイルを、そのまんまの
名前でE:\foo にコピーしたい、と。
685名無し~3.EXE:04/06/17 00:54 ID:SvrCengr
>>683
move c:\foo\*.txt d:\foo\
686683:04/06/17 00:58 ID:9JrefVpH
わ、驚即答
ありがとうございます
いまからためします
687670:04/06/17 01:02 ID:EJTY6clQ
>678
遅レスだけども、CMD.EXE は PING のために使ってるんじゃなくて、リダイレクトのためだよ。
>680
実際そのとおりなんだけど、setintervalの2個使いでなんとかしまそた。
>681
子ウインドウがパカパカ開いてうざいっすね。これがナントカなるなら使えそう。
688名無し~3.EXE:04/06/17 20:55 ID:EJTY6clQ
VBS書いていたら1000行を超えてしまいました。
スクリプトは多数のサブプロシージャで出来ているのですが
機能ごとにスクリプトを分けてファイルに小分けにしておいて
子ファイルをインクルードして実行するってできるんでしょうか。
できるとしたらどっかに資料はありませんか?
689名無し~3.EXE:04/06/17 21:01 ID:n5EYOK3M
>>688
出来る

資料なら >>3
690名無し~3.EXE:04/06/17 21:01 ID:4DON080k
>>688
wsfで書けばファイルをインクルードできる。
他に、>>556みたいな手法もある。
691名無し~3.EXE:04/06/17 21:14 ID:EHycBKuT
>>688
たぶん別の言語や開発環境使ったほうが幸せになれるよ
692名無し~3.EXE:04/06/17 22:48 ID:SvrCengr
>>688
現行スレ内の検索ぐらいしようや。
693名無し~3.EXE:04/06/19 10:24 ID:tyuJ8j5q
JScriptでバイナリデータを扱おうとしています。
データはファイルから読み、そのデータを
COMに渡したいのですが、BSTRで渡すのは
よろしくない様子。実際、COM側でSysStringByteLenで
見てみると、長さが2倍になっていました。Unicode扱い
にされているらしいですね、これ。
バイナリデータをCOM側で受け取って、加工するには
どのような工夫が必要なのでしょうか。

694名無し~3.EXE:04/06/19 11:07 ID:WymACrda
>Linuxはそれとは違う。
違ってもいるし違ってないともいえる。
Linuxで自分の選択した目的や可能性以外を否定することは間違い。
それこそWindowsやBSDにカエレ!!といいたい。
695名無し~3.EXE:04/06/19 11:14 ID:pcDRrgIz
wshでGDIかD3Dを利用できるような方法ありますか?
そもそもブランクのウインドウを表示するような手段ってありますか?
ゲームつくるのによさそうなので、どうでしょうか?

バリアント型の変数って扱いやすいですよね〜。
696名無し~3.EXE:04/06/19 11:36 ID:8t4SJREB
>>695
JScript.NETかHSPでも使うが吉。
697名無し~3.EXE:04/06/19 12:05 ID:t9eEuAgp
>>693
WSHのFileオブジェクトはファイルをテキストとしてしか
OPEN出来なかったと思うのですが、その為では?

BASP21 DLLを使うとバイナリデータを扱えたと思います。
またはJScript.NETを使うという手も。
698名無し~3.EXE:04/06/19 13:00 ID:C7lQNJpQ
バイナリストリームオブジェクトあるよ。
>596で使ってるADODB.Streamってやつ。
699名無し~3.EXE:04/06/19 13:07 ID:8t4SJREB
あるんだけどJScriptじゃデータに手出しできない。右から左ならいいんだけど。
VBScriptなら手出しもできたかな。
700名無し~3.EXE:04/06/19 13:26 ID:C7lQNJpQ
>699
そうなの?vbsなら"Stream.Write"で一発なんだが・・・。
701名無し~3.EXE:04/06/19 18:40 ID:uEmBR4wB
当然だがJSでも普通に使える。
702名無し~3.EXE:04/06/19 18:58 ID:8t4SJREB
>>701
>  当然だがJSでも普通に使える。
え、そうなの?
Writeになにを入れればいいのかさっぱり解らないんだけど。
バイト配列型なんてないし。
703名無し~3.EXE:04/06/19 21:44 ID:0ZgA5m7C
>>696
さんきゅー。
.NETフレームワークか。
新しく覚えなきゃ・・・。
704名無し~3.EXE:04/06/20 03:02 ID:iDLB2zPs
>702
バイト型じゃないの?
705693:04/06/20 19:28 ID:NDy4ZpHZ
JScriptでバイナリデータをCOMに渡したい、との
質問をしましたが、よく考えたらこれはScriptの
問題ではなくて、COMの方をどう作るかって
問題ですね。スレ違いな質問、失礼しました。
706名無し~3.EXE:04/06/20 20:29 ID:1LNWSiE+
ファイルシステムオブジェクトを使ってフォルダの中にあるファイルと
ディレクトリの一覧を取得することってできるんですか?
知っている方がいたら教えてくださいませ。
707名無し~3.EXE:04/06/20 20:35 ID:L49dgts9
708706:04/06/20 20:57 ID:1LNWSiE+
>>707
ぁぁ、読んでませんでした。。。
サンクス。
709名無し~3.EXE:04/06/21 21:29 ID:4lSmb6Oy
>>707
俺にもMSXML、XML Parserのリファレンスクレクレ
710名無し~3.EXE:04/06/27 02:56 ID:UL/Fknh9
711名無し~3.EXE:04/07/01 07:29 ID:yY/djU9C
Win2000,XP で、ネットワーク接続の接続名 (ローカル エリア接続など)を
取得するメソッゾきぼんむ
712名無し~3.EXE:04/07/02 00:23 ID:ACr6NUUQ
>>711
NetConnectionIDがXP出しか使えないのでXP専用。

var nadp = GetObject("winmgmts:{impersonationLevel=impersonate}").
ExecQuery( "SELECT * FROM Win32_NetworkAdapter" );

for ( var e = new Enumerator(nadp); !e.atEnd(); e.moveNext() ) {
var ad = e.item();
WScript.Echo( ad.NetConnectionID );
}
713名無し~3.EXE:04/07/02 23:25 ID:ACr6NUUQ
>>711
やっぱりXP専用だけど>712よりこっちの方が良いかも。
ttp://www.microsoft.com/technet/community/scriptcenter/network/scrnet29.mspx
714名無し~3.EXE:04/07/03 15:02 ID:Kgo/Au2M
Windowsupdateに
"Critical Update for ADODB.stream (KB870669)"
がきてた。
これを適用するとIEでADODB.Streamが使えなくなる。
いいかげんにしろMS
715名無し~3.EXE:04/07/05 20:05 ID:+68NVos/
716名無し~3.EXE:04/07/05 20:47 ID:tlGTelo1
脆弱性攻撃幇助容疑で逮捕
717名無し~3.EXE:04/07/07 07:05 ID:apFDlwWS
質問です。
VBScript JScriptでc/c++の#Includeみたいなのはどうやればできるのでしょうか?
718名無し~3.EXE:04/07/07 07:07 ID:pxu1EuPb

  ま た こ の 質 問 か
719名無し~3.EXE:04/07/07 07:26 ID:QVSzmKOy
>714
HTAだと影響うけなかったっす
720名無し~3.EXE:04/07/07 07:44 ID:apFDlwWS
>>718
申し訳ありません(´Д`;)
過去ログ呼んだらありました
721名無し~3.EXE:04/07/07 07:51 ID:QVSzmKOy
■■■ 危険 閲覧は自己責任で ■■■
HTMLで、不正なEXEをDLさせるWEBページ発見。
ADODBの脆弱性を対策していないとヤヴァイ。
tp://82.196.67.62/f.html
さらに、ms-its(chm)の脆弱性をつくコード
tp://lily.only18plus.com/den/a.html
■■■■■■■■■■■■■■■■■■■
※不正コード作成を助長するもんではないです。
意図せずにリダイレクトされないように
IEの制限つきサイトへ登録することをお勧めします。
722名無し~3.EXE:04/07/07 20:12 ID:QVSzmKOy
すみません
DOMのonkeyupですが、どうすれば上下左右の矢印キーの動作を検知することが出来ますか?
723名無し~3.EXE:04/07/07 20:56 ID:sfBSTKGs
>>722
event.keyCode
724名無し~3.EXE:04/07/07 23:45 ID:QVSzmKOy
すみません
そこまでは解っているんですが、具体的なコード例はありませんか?
725名無し~3.EXE:04/07/08 00:26 ID:U5TpydcK
726名無し~3.EXE:04/07/08 22:59 ID:AVhHBG4o
>>725
神。とりあえずあなた様に大感謝です。
http://member.nifty.ne.jp/aya/dom/dom06.htm
727名無し~3.EXE:04/07/14 16:05 ID:3+77OThz
すみません。教えてください。
IEコンテキストメニューで「引用符付き貼り付け」をしたいんですが

過去ログの
http://pc.2ch.net/win/kako/1009/10091/1009175619.html
の151-156を要約して使えるようにするにはどうしたら良いのでしょうか?

728名無し~3.EXE:04/07/14 17:11 ID:W77r+dVl
VBSが嫌いなのでJScriptに移植。保存する名前は過去ログに従ってaddgt.htmとでも。何でもいいけど。
インストールはインストーラスクリプト使うよりIE MenuExt使った方がいいと思うよ。

<script language="jscript">
var menu = external.menuArguments;
var range = menu.document.selection.createRange();
var element = menu.event.srcElement;
var data = clipboardData.getData("text"), ret = "";
if (!data) {data == "";}
var datas = data.split("\n");
if (element.tagName == "TEXTAREA" || (element.tagName == "INPUT" && element.type == "text")) {
   for (var i = 0; i < datas.length - 1; i++)
      ret += "> " + datas[i] + "\n";
   if (datas[datas.length - 1] != "")
      ret += "> " + datas[datas.length - 1];
}
range.text = ret;
</script>
729名無し~3.EXE:04/07/14 17:48 ID:3+77OThz
席を離れていて今確認しました。
ありがとうございます。早速試してみます。
730名無し~3.EXE:04/07/14 21:45 ID:3+77OThz
>>728
ありがとうございました。バッチリでした。
731名無し~3.EXE:04/07/23 11:17 ID:q13229cu
微妙にスレ違いかもしれないですがご容赦をば。
ブラウザの右クリックに登録するスクリプトなんですが、
以下のことを行おうとしてます。

画像上で右クリック

画像を特定のアプリで開く

ですが、ブラウザから取得できるのは、その画像のURLのみで、キャッシュの取得ができません。
クリップボード経由で開こうとも考えたのですが、その手のメソッドも無いようです。
仕方なく、画像の位置をスクリーン座標で取得して、D&Dのエミュレートでアプリにドロップする
力技を考えたのですが、もっとスマートな方法って無いでしょうか?
732名無し~3.EXE:04/07/23 12:40 ID:EOlktQEU
取得したURLからローカルの%temp%にダウンロードして
それをアプリで開くのがまっとうな方法じゃないの。
スマートではないけど。
733名無し~3.EXE:04/07/23 16:26 ID:7v/exN2o
734名無し~3.EXE:04/07/24 03:25 ID:No2TTay6
>>732
>>733
レスどもです。
>>733のコンポーネントを使ったらすんなり出来ました。
感謝!
735名無し~3.EXE:04/07/24 04:41 ID:zlT9n13Q
HTAで開かれたウインドウに、エクスプローラからファイルをドラッグアンドドロップできるようにして
そのファイル名を取得する方法はありますでしょうか。
起動時のD&Dに関してはweb上にTIPSがありましたが、起動後に関しては
見当たりませんでした。よろしくお願いいたします。
736名無し~3.EXE:04/07/25 16:51 ID:mkh0oIjL
ttp://www.atmarkit.co.jp/fwin2k/win2ktips/443wshenc/wshenc.html
PerlでWSH書いた場合で↑のリンク先のVBSやJSみたいに暗号化することって出来ないですか?
737名無し~3.EXE:04/07/25 18:51 ID:sIdk1SDU
>>736
Perl2exeでコンパイルするといい
738名無し~3.EXE:04/07/26 22:54 ID:++VwYYZC
指定したテキストデータの文字列を文字コード単位で置換えをしたいです。

F040,8D82
F041,92CB
F042,91E5

というようなデータをソースにして、テキストデータに含まれる
F040と言う文字コードを8D82と言う文字コード(高)に置き換えるというような
感じなんですが・・・
739名無し~3.EXE:04/07/26 23:35 ID:aOUtYoMD
>>738
VBSだったら普通にできそうだけど?
何が問題?

//JScriptだとShift_jisをまともに扱えない……
740名無し~3.EXE:04/07/27 00:28 ID:2SoFuNFN
>738
intFindWhat = Cint("&h" & "F040") '検索文字コード
intReplaceWith = Cint("&h" & "8D82") '置換文字コード
strGetFilePath = "c:\xxxx1.txt" '読み込みファイルパス
strPutFilePath = "c:\xxxx2.txt" '保存ファイルパス

set objFileSystem = CreateObject("Scripting.FileSystemObject")
set objGetFile = objFileSystem.OpenTextFile(strGetFilePath, 1, false)
set objPutFile = objFileSystem.OpenTextFile(strPutFilePath, 8, true)
strBuf = objGetFile.ReadALL
strFindWhat = Chr(intFindWhat)
strReplaceWith= Chr(intReplaceWith)
strBuf = Replace(strBuf, strFindWhat, strReplaceWith)
call objPutFile.Write(strBuf)
objGetFile.close
objPutFile.close
set objFileSystem = nothing

こんな感じ?ソースとなるデータの形式がわからんと読み込み部分は作れないけど。
(外部から読み込むよりスクリプトに記述する方が楽だし)
741名無し~3.EXE:04/07/27 00:45 ID:i/v0dfmL
>735
ドロップされるのがフォルダだとonLoad()が発生しないため、
ドロップ状況を調べるのにonReadyStateChange()イベントを使う。
ドロップされるのがファイルだけならonLoad()イベントだけでも良い。

(フレームのオブジェクト.)location.href
(フレームのオブジェクト.)document.location.href
(フレームのオブジェクト.)document.URL
等の値を参照すればファイル名も取得できるはず。
742名無し~3.EXE:04/07/27 23:47 ID:R7D1K+NF
>>740
ありがとうございました!
ファイルから変換文字コードを呼び出す場合は、
F040,8D82
F041,92CB
F042,91E5
というcsvファイルをもう一つOpenTextFileで呼び出して、

readLineをlineと言う変数に代入して、
strBuf = Replace(strBuf, strFindWhat, strReplaceWith)
の構文のstrFindWhatをCint("&h" & mid(line,1,4))にして
strReplaceWithをCint("&h" & mid(line,6,4))にして、
endに到達するまで続ければOKですかね??
743名無し~3.EXE:04/07/28 19:19 ID:HWOpue20
>>742
「ですかね??」って、おまいのPCに聞けよ。
744名無し~3.EXE:04/07/28 23:09 ID:vjgxRGHE
>742
いいんじゃね?やってみて動くまで考えるべし。
745名無し~3.EXE:04/07/31 21:41 ID:9ibP/+kO
>>737
遅ればせながらレスありがとうございます。
しかし、Perl2exeで生成されたexeファイル、WSHの部分だけ実行されないっぽいです。
746名無し~3.EXE:04/08/05 20:54 ID:4Sj3nBcL
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/script56/html/wslrfcontrollerobject.aspのサンプルなのですが

[test.vbs]
Dim Controller, RemoteScript
Set Controller = WScript.CreateObject("WSHController")
Set RemoteScript = Controller.CreateScript("remote1.vbs")
RemoteScript.Execute

Do While RemoteScript.Status <> 2
WScript.Sleep 100
Loop

これを実行しても、remote1.vbsが実行されません。Set RemoteScript のところで実行時エラーとなります。
ActiveXコンポーネントはオブジェクトを作成できません。(コード:800A01AD)
remote1.vbsは、test.vbsと同じフォルダに置いています。

どうすればエラーが出ずにremote1.vbsを実行できるのでしょう。。
747746:04/08/05 21:32 ID:4Sj3nBcL
748746:04/08/07 16:22 ID:53jiu524
>>747
これもウソぽぃ
英語サイトに書いてあったレジストリ修正やったらいけました
なぜ日本語訳した時に内容変えたんだろう…謎

んで、今度は3行目を
Set RemoteScript = Controller.CreateScript("remote1.vbs", "リモートマシン")
でやってみたんですが、同ドメインでないと使えないっぽい感じでした。

ワークグループ環境で使いたいのですが、ムリなのかなぁ、、
どなたか挑戦/成功された方いれば教えてほしいです。
749名無し~3.EXE:04/08/09 04:07 ID:hr5rwgA0
()[]このような括弧でくくられたファイル名の文字列を
括弧の部分だけ削除したいです。
こういうスクリプトはどうやって作ればいいですか?
750名無し~3.EXE:04/08/09 05:24 ID:EALI9mHL
>749
strFilePath = "c:\xxxx1.txt" 'リネームするファイルのフルパス

set objFileSystem = CreateObject("Scripting.FileSystemObject")
set objFile = objFileSystem.GetFile(strFilePath)
strBuf = objFile.Name
strBuf = Replace(strBuf, "(", "")
strBuf = Replace(strBuf, ")", "")
strBuf = Replace(strBuf, "[", "")
strBuf = Replace(strBuf, "]", "")
objFile.Name = strBuf
set objFile = nothing
set objFileSystem = nothing

こんな感じか?()の中全部を削除したいならRegExpを使うと思うけど。
751名無し~3.EXE:04/08/09 06:16 ID:hr5rwgA0
すいません、言葉足らずでした。
フォルダを指定してその中のすべてのファイル名から
カッコも含めてカッコ内の文字列を消去したいです。

(???)a.avi
(???)b[***].mpg
[??]c(**).mp3

a.avi
b.mpg
c.mp3

こんな感じです。
752名無し~3.EXE:04/08/09 06:55 ID:EALI9mHL
>751
なんか、何に使うのか疑問だなぁ・・・。
まぁ、予想はしてたんだけど。

>750のReplace使ってる行を↓に置き換え。

Set objRegExp = New RegExp
objRegExp.Global = true
objRegExp.Pattern = "(\(.*\))|(\[.*\])"
strBuf = objRegExp.Replace(strBuf, "")
Set objRegExp = nothing
753名無し~3.EXE:04/08/09 09:14 ID:hr5rwgA0
>>752
どうもありがとうございます!
なんとかいじくって自分の思い通りの動作になりました。
754名無し~3.EXE:04/08/09 09:26 ID:cJnL59Ru
あれだな、素直にリネームソフト使えってことだな。
755名無し~3.EXE:04/08/09 16:10 ID:i7AHaDh6
>>754
激しく同意

>>749は正規表現覚えてFlexible Renamerでも使ってろ
756名無し~3.EXE:04/08/09 22:54 ID:1UcAXWSP
Sleipnir
多段タブ キタキタキタキタ━━━(゚∀゚≡(゚∀゚≡゚∀゚)≡゚∀゚)━━━━!!!!!!!!!!
757名無し~3.EXE:04/08/10 14:36 ID:5ApRGg9a
何でこのスレに(w
758WSHデビュー:04/08/11 11:01 ID:SgisAmoZ
昨日からWSHはじめました。
日々の繰り返す操作(仕事)をどうにかならないものかと思いたちまして。
取り合えず場当たり的ですがSendkey使っいまくって実現できました(w
このスレ一日で読破しました。スゲー勉強になりました。
WSHLab.で基礎から勉強してきます(゚Д゚;)

759名無し~3.EXE:04/08/11 11:11 ID:qcDcGG08
せっかくがんばって覚えても.NETでリセットかかっちゃうんだけどなw
760名無し~3.EXE:04/08/11 12:16 ID:LjXF71ku
Jscript.NETって難しい?
761名無し~3.EXE:04/08/11 18:05 ID:pY9nmR4o
今がんばってれば
応用は利くでしょ。
もっとも、今から.NETに行っとく方が利口ではあるけど。
762WSHデビュー:04/08/12 13:03 ID:gv6dBU+e
早速頓挫orz
CreateObject関数でOutlookExpressは動かせないのですか?
IEやExcelはうまく動かせるのだが・・・
("Outlook.Application")では駄目みたいなんで。
Outlookじゃないと駄目とかってあるんですかね^^;
「任意Dirで数個のtextからdataひぱってメールで自動配信」
という流れのものを書こうとしています。
763名無し~3.EXE:04/08/12 13:19 ID:rM1GHaTB
OEはActiveXに対応してない。
764名無し~3.EXE:04/08/12 16:02 ID:dFf5qhzU
こういうの使ってみたら。標準でもいかにもありそうな機能ではあるけど
http://www.ctb.ne.jp/~takasaki/t2_winmailcmd.html
765名無し~3.EXE:04/08/12 16:13 ID:Us/fBpKw
766名無し~3.EXE:04/08/14 21:33 ID:KxhB05Da
>せっかくがんばって覚えても.NETでリセットかかっちゃうんだけどなw
えぇぇぇぇっ!! どういうことなんですか?
僕も最近WSHの勉強を始めたばかりなんですが、
WSHどうなっちゃうんですか?
767名無し~3.EXE:04/08/15 09:57 ID:8zzPsMl1
>>766
なんで.NETにしなかったの?
そっちのほうが興味ある
768WSHデビュー:04/08/15 15:11 ID:kYvJVBXN
>>764
>>765
結局いまだにどちらも実現できずにいます・・・
769名無し~3.EXE:04/08/15 15:21 ID:Ns4tjVOu
>>768
ここは独り言を言うところではないんだが?
770名無し~3.EXE:04/08/15 17:39 ID:eYukZ2EH
バカは完全放置で頼むぜ
771名無し~3.EXE:04/08/16 16:11 ID:GsTf4/CA
JScript .NET ってコンパイルせにゃいけんのかい

JScript .NET Scripting Edition の発表まで待つか〜
772名無し~3.EXE:04/08/16 17:24 ID:1h4lt/Gz
次世代コマンドシェルと融合したC#風スクリプトならたぶん出る
773名無し~3.EXE:04/08/16 19:50 ID:LFIcaSJk
いい加減雑談やめろ。N速に晒される前はマターリとしたスレだったのに、お前等帰れや
774お前等:04/08/16 20:01 ID:hGz0+yVS
>>773
どこに晒されてんの?おしえてちょっ!
775名無し~3.EXE:04/08/20 13:58 ID:xn318h+O
PCのドライブ一覧を取得するのに
Set objDriveSet = GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery("select * from Win32_LogicalDisk")
For Each objDrive In objDriveSet
objDrive.Name
Next
を使っていますが、NTだとこれでドライブ一覧を取得できません。Queryの結果が0件になっているようです。(2000/XPでは問題ないです)

NTでPCのドライブ一覧を取得するには、どんな方法があるでしょうか。(上記の改良が不可なら別の手段でも)
776名無し~3.EXE:04/08/20 14:30 ID:CEcfezTl
>>775
FileSystemObjectのDrivesプロパティは?
777775:04/08/20 16:31 ID:xn318h+O
>>776
ありがとうございます。

>>775自体は、全然別の場所に問題がありました…
ソースのケアレスミスを修正したらNTでも問題なく取得できました。すみませんっっ
778名無し~3.EXE:04/08/21 11:25 ID:9qZ8y4JO
AD参加のスクリプときぼんぬ。
もちろん、参加失敗時のエラー処理してないと使いもんにならないでし
779名無し~3.EXE:04/08/21 15:15 ID:IuHfvwn0
>>778
ttp://wmifun.atinfinity.net/wmisample/win32_computersysteme.html

気にくわなかったら適当に改造すれ。
780名無し~3.EXE:04/08/21 20:49 ID:mks0jesO
HTAのウィンドウにドラッグアンドドロップしようとしても禁止マークみたいのが出て、できないんですが、何か定義をしないといけないんでしょうか?
781名無し~3.EXE:04/08/22 03:00 ID:arGKfJ8s
>>780
フレーム作ってごにょごにょするべし。

ttp://plutonium.hp.infoseek.co.jp/futaba/imgsv0.html#trableshooting
782怒死露鵜徒:04/08/24 13:20 ID:4Rt6IQz3
MSDNでIEをフルスクリーンにするコードのSyntaxを見つけたのですが、
どうやってコーディングするのか分かりません。どうかお助けください。
見つけたSyntaxは
InternetExplorer.FullScreen(bFullScreen)[=bFullScreen]
です。Windowsを起動した時にIEが勝手に開いてしかもそれをフルスクリーン
にする方法も教えてくれたらとてもうれしいです。
783名無し~3.EXE:04/08/24 13:27 ID:SabZjm/o
>>782
F11
Alt+F4

準備完了。あとは開くだけ。
784怒死露鵜徒:04/08/24 13:34 ID:4Rt6IQz3
>>783
やってみたけど上にバーが残りますね。
スクリプトからフルスクリーンにしても結局同じですか?
785名無し~3.EXE:04/08/24 13:39 ID:THJ8Etjv
キオスクモードで起動するとか
786名無し~3.EXE:04/08/24 17:53 ID:qRk0rdED
>>782

var oIE = new ActiveXObject("InternetExplorer.Application");
oIE.FullScreen=true;
oIE.Navigate("http://pc5.2ch.net/test/read.cgi/win/1058829737/");
oIE.Visible = true;

これを FullScreen.js かなんかいうファイル名で作成。
URLは好きに変えろ。
Windows起動時に実行するなら スタート → プログラム → スタートアップ にでも
ショートカットを貼り付けておけ。
787名無し~3.EXE:04/08/24 18:05 ID:Ay1k3VaR
iexplore.exe に -k オプションと url を引数とするショートカット作ればオッケー
788怒死露鵜徒:04/08/25 08:52 ID:RkWbFlPn
>>786
ありがとうございます。大変助かりました。お礼に穴を貸してあげたいです。
789名無し~3.EXE:04/08/25 13:02 ID:ouimUyjL
>>787も書いてるけど、
iexplore -k [Enterキー]でおしまい。
スクリプト使うまでもないよん
790名無し~3.EXE:04/08/27 09:14 ID:nCzyr3jP
スミマセン素人です。
MSアクセスのファイルを開きたいのですが
フォルダの階層が深い所に有るファイルで

var WShell = WScript.CreateObject("WScript.Shell");
WShell.Run ("msaccess C:\Program Files\xxxx\xxxx\xxxx\xx\db.mdb");

これだとファイルを開けないですがどうしたらよいでしょう?


791名無し~3.EXE:04/08/27 09:21 ID:+89Jjeuy
>>790
引数は半角スペースで区切るわけだから、c:\programが第一引数と取られたわけだ。
半角スペースを引数の中に入れたい場合、ダブルクォーテーションでくくる。
で、JScriptで文字列中にダブルクォーテーションを入れる場合は\でエスケープする必要がある。

ということをまとめると……
って\もそのままか。
\はエスケープ文字という奴で、この直後にくるのは普通の文字じゃなくて制御用の文字と認識される。
文字列中に\という文字を含めたい場合は\\という風に\そのものをエスケープする。

以上をまとめると、

WShell.Run ("msaccess \"C:\\Program Files\\xxxx\\xxxx\\xxxx\\xx\\db.mdb\"");
792名無し~3.EXE:04/08/27 09:36 ID:nCzyr3jP
>>791

有り難うございました、うまくいきました。
793コピペ推奨:04/08/27 11:02 ID:K+xgnO3X
ひろゆき=創価であることを報じないマスコミ

1 :文責・名無しさん :02/10/24 18:37 ID:ajNeHEw8
なぜマスコミはひろゆき=創価であることを報じないのか!!

http://ex5.2ch.net/test/read.cgi/mass/1035452245/l50
794名無し~3.EXE:04/08/27 12:08 ID:nCzyr3jP
超初心者です。
下記をjscprtにしたいのですが誰か教えてください。

Dim fs, MyFileName, objWS
Set fs = CreateObject("Scripting.FileSystemObject")
Set objWS = CreateObject("WScript.Shell")
If fs.FileExists("C:\xxx\xxx\xxx\xxx\xx\db.ldb") = False Then
MyFileName = """C:\Program Files\Microsoft Office\OFFICE11\MSACCESS.EXE"" ""C:\xxx\xxx\xxx\xxx\xx\db.mdb"""
objWS.Run MyFileName
else
msgbox ("ACCESSを終了させてください。")
End If
795名無し~3.EXE:04/08/27 12:12 ID:+89Jjeuy
>>794
うん、で何がわからないのかな?
796名無し~3.EXE:04/08/27 12:20 ID:fSYxHqxP
IEの履歴(index.dat)にアクセスして,格納されているURLを取得する方法はありますでしょうか。
797名無し~3.EXE:04/08/27 12:52 ID:jrLfEoKc
はい
798名無し~3.EXE:04/08/27 20:06 ID:fSYxHqxP
>>797
どのようにすればよろしいのでしょうか。
あるいは,該当するメソッドなりを教えて頂けると幸いです。
799名無し~3.EXE:04/08/27 20:29 ID:+89Jjeuy
こういう言葉面だけ丁寧で自分では考えようとしないの嫌い。

>>638
800名無し~3.EXE:04/09/06 05:02 ID:fMWhSYRu
801名無し~3.EXE:04/09/07 14:29 ID:2X1zFto7
ゲームの鯖を立てているのですが、
鯖が落ちてしまったときに自動で再起動できないものかと考えています。
上の方にもあったのですが、数分ごとにプロセスを監視し
走っていないようであれば指定したプログラムを実行する。
といった感じがいいのかなーと思っているんですが、よくわかりません。
ttp://www.mars.dti.ne.jp/~vwjetta/install.html
これが希望に一番近いのですが、exeしか実行させることが出来ないので使えません。
(ショートカットでコマンドを追加して起動させなくてはならないので)
何かいい方法はないでしょうか?
802名無し~3.EXE:04/09/07 14:41 ID:lYA1aVbN
>>801
多分AutoHotkeyでできる
803801:04/09/07 15:41 ID:2X1zFto7
>801さん
レスThxです。今テストしていますが、恐らく問題解決しそうです。
これ、面白いっすねー
804801:04/09/07 17:18 ID:2X1zFto7
連書スマソ。
問題解決しました。ログも書き出せるので、管理に役立ちそうです。
どうもありがとう:)
805名無し~3.EXE:04/09/07 20:37 ID:usjITemV
あるフォルダを監視して、そこにファイルが作られるか、もともとあったファイルが更新された場合に、
それを検知して、更新または追加されたファイル名を通知するスクリプト

だれか持っていませんか?
806名無し~3.EXE:04/09/07 21:30 ID:yHmATBEh
メモ帳とタスクスケジューラがあれば余裕だろ。

http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/script56/html/FSOoriFileSystemObject.asp
この辺を一通り読めば楽勝。
807名無し~3.EXE:04/09/07 21:34 ID:tMdEjuoi
ちょうど昨日、そういうツールをVB.NETで作ったとこだった。
System.IO.FileSystemWatcherを使えばイベント拾うだけ。
めちゃめちゃ簡単だった。
Visual Studio 2005 Express、いまならβフリーでかなり遊べる。
808名無し~3.EXE:04/09/07 21:57 ID:tMdEjuoi
歯を磨いてうんこしたあと、とりあえずファイルの作成更新検知までを2分で書いてみた。

Const WatchFolder = "C:\hoge\fuga"

Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.GetFolder(WatchFolder)
f_size = f.Size
f_DateLastModified = f.DateLastModified

While (f_size = f.Size) And (f_DateLastModified = f.DateLastModified)
Wscript.Sleep(1000)
Wend

MsgBox "更新したぞゴルァ"

でもこれだと、ファイルサイズが変わらないファイル更新には対応できない罠。
どっちにしろ、ファイル名を取得せにゃならんなら、監視フォルダ中の全ファイルの
ファイル名とDateLastModifiedを保存してつきあわせるしかないだろな。
めんどくさいんでパス。自分でやってくれ。
809名無し~3.EXE:04/09/07 22:00 ID:fZwTMzFh
DynaCall で FindFirstChangeNotification() や WaitForSingleObject() 呼んでみるとか?
810名無し~3.EXE:04/09/07 22:00 ID:yHmATBEh
くっ
今や.NETの時代か。

Visual Studio 2005 Expressのβを落としてみた。
…… Windows98の時代でもありませんかそうですか。
811名無し~3.EXE:04/09/07 22:20 ID:XnRpR7tm
そういうのはWMIの出番。
ttp://www.microsoft.com/japan/technet/community/scriptcenter/filefolder/scrff46.mspx

まあ.NETでいけるならそっちの方が便利だけど。
812名無し~3.EXE:04/09/07 23:19 ID:usjITemV
>811
スクリプトベース希望なので、これを発展させると行けそうですね。
WMIあまり詳しくないのですが、ファイルをハードコーディングしないで
この方法でチェックするのはどうしたらいいでしょうか。
fsoでファイル一覧を取ることは出来ますが、このWMIスクリプトにどうつないだら
良いかわかりません。。。 偉い人なら3分以内でできるところでしょうか。
813名無し~3.EXE:04/09/08 04:47 ID:G+/v6czv
>812
ttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1022248177&res=59
こんなんでどうか。ただ、タイミングが悪いと更新検知に失敗するかも。
814名無し~3.EXE:04/09/08 19:25 ID:m+jCZc1F
>812
メンドクセー>811の奴と
ttp://www.microsoft.com/japan/technet/community/scriptcenter/filefolder/scrff46.mspx
これとを両方走らせれば?

.NETなら、↓前スレより。hoge.jsなどの名前で保存して、
コマンドプロンプトから jsc hoge.js で hoge.exe ができる。

import System.IO;
var watcher : FileSystemWatcher = new FileSystemWatcher();
var result : System.IO.WaitForChangedResult;
watcher.Path = "c:\\temp"; //監視するディレクトリ
// watcher.Filter = "*.txt"; // フィルタ。拡張子とか指定可能
watcher.NotifyFilter = ( NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.DirectoryName );
watcher.EnableRaisingEvents = true;
for (;;) {
result = watcher.WaitForChanged( WatcherChangeTypes.All );
System.Console.WriteLine( result.ChangeType + " : " + result.Name );
}
815814:04/09/08 19:29 ID:m+jCZc1F
間違えた。リンクも同じ奴だし…
>814のWMI部分はなかったことに。orz
816名無し~3.EXE:04/09/13 19:36:08 ID:k9QCoW1u
WSHからWindowsを休止状態にするにはどうすればいいんでしょうか?
ftp://ftp.microsoft.com/reskit/win2000/restart.vbs
↑これとか、
ttp://homepage2.nifty.com/winfaq/w2k/boot.html#1179
↑これみたいな感じで休止状態にする方法、どなたか教えてください。
817名無し~3.EXE:04/09/13 19:54:10 ID:ERTWpScR
>>816
ttp://winfaq.power.ne.jp/logs/9x/0254.html
の222621からのスレッドにイイ感じに力業なのが紹介されてる。
818名無し~3.EXE:04/09/13 20:55:49 ID:k9QCoW1u
>>817
たしかに力業ですね。
WinXPHomeの環境では、以下のスクリプトでうまくいきました。

Set WSHShell = WScript.CreateObject("WScript.Shell")
WScript.Sleep 1000
WSHShell.SendKeys "^{ESC}U"
WScript.Sleep 1000
WSHShell.SendKeys "H"
WScript.Sleep 1000

ありがとうございました。
819名無し~3.EXE:04/09/14 09:20:23 ID:EOsrkN7p
Adobe Reader の Adobe Reader を終わらせる×ではなく、
PDF を表示している×を WSH で押すにはどうすればいいでしょうか?
820名無し~3.EXE:04/09/14 13:09:02 ID:4fLe+zXq
>>819
[ウィンドウ]→[全て閉じる] じゃダメかい?

Set WSHShell = WScript.CreateObject("WScript.Shell")
WScript.Sleep 1000
WSHShell.SendKeys "%w"
WScript.Sleep 1000
WSHShell.SendKeys "^{%w}"
821819:04/09/14 14:57:10 ID:EOsrkN7p
>>820
なるほど。メニューを使えばよかったですね。ありがとうございました。
822名無し~3.EXE:04/09/20 09:28:31 ID:fwygRLCu
823名無し~3.EXE:04/09/20 11:38:32 ID:17hrOjt8
今さらのようにバージョンアップを重ねるなぁ
824名無し~3.EXE:04/09/20 16:28:24 ID:D10kyBYF
おまいらのお知恵をお貸しください。
ブラウザに表示されているフォームのボタンをスクリプトで押す場合
ボタンの名前が'ログインボタン'ならこれで

Set objIE = CreateObject("InternetExplorer.application")
objIE.Visible = True
objIE.Document.all.ログインボタン.Click

いけるんですが、もしボタンの名前に'.'が使われていた場合
例:ログインボタン.001

objIE.Document.all.ログインボタン.001.Click

上手く動きません。objIE.Document.forms(0).Submit や SendKeys
は事情により使用できない場合、他に'.'を含んだボタン名を
名前の一部として認識させる方法はあるでしょうか?
825名無し~3.EXE:04/09/20 16:48:10 ID:norr7fLB
>>824
Dim button
button = document.getElementByName("buoon.001");
button.Click

//Setって必要だっけ?
826名無し~3.EXE:04/09/20 16:49:07 ID:norr7fLB
objIE.Document.getElementByName("button.001").Click
で済むか……。
827名無し~3.EXE:04/09/20 18:15:07 ID:D10kyBYF
出来ましたー!
825さんありがとうございました。感謝

Setはサンプルに載ってたんでそのままコピペw
828名無し~3.EXE:04/09/21 20:50:31 ID:u/ckrAgu
vbsでIEのウェブページの更新てどうやればいいんでしょうか?
navigateでurl送ってもキャッシュが表示されて更新されないようです。
更新する関数ってあるんですか?
829名無し~3.EXE:04/09/21 22:45:55 ID:KnOqcO9i
>>828
Refresh / Refresh2
830名無し~3.EXE:04/09/22 11:12:40 ID:sBx0dFla
>>829
ありがとうございました
831名無し~3.EXE:04/09/22 19:30:47 ID:SUizVXMN
失礼します。いまウェブメールだけの環境で
URL:mailtoプロトコルの左クリックには↓のダミーを当てています。
ttp://www.showg.jp/hoge/DummyMailer/index.htm
このスクリプト(Vbscript。改変しての再配布はOKとのこと)を書き換えて
メールアドレスをクリップボードに飛ばすことは可能でしょうか?

まったくの初心者でメソッドも何もわかりません。グーグル検索していたら
Vbscriptはクリップボードの操作に対応していないとか(?)
作者さんのBBSは二ヶ月くらい人がいないようなのでちょっと訪れにくく。
そもそも可能かどうか、可能ならどのくらいいじる必要があるのか、
アドバイス頂けたらと思います。よろしくお願いします。
832名無し~3.EXE:04/09/22 19:39:01 ID:3PEtX8K/
>>831
Ctrl + C
833名無し~3.EXE:04/09/22 19:45:20 ID:SUizVXMN
ああああ

すげーーー
すっげーー


「じゃあ"mailto:" を省く方法はありますか」に質問を変更します。。
834名無し~3.EXE:04/09/22 20:56:55 ID:FDuqZ9qc
835名無し~3.EXE:04/09/22 21:07:04 ID:S6T2ltz0

んぃんどぅーざっ! すぉくりぇぷてぃーんっがっ ふぅすてぃんーっがっ!
836名無し~3.EXE:04/09/22 21:23:40 ID:SUizVXMN
>>834ありがとうございます!!
でもつなげ方がさっぱりわからないや・・・
そのサイト見て勉強します。
CTRL+Cじゃあ色々余計なのが入ってしまうし。
837名無し~3.EXE:04/09/22 21:39:44 ID:FDuqZ9qc
>>836
ダミーメールのスクリプトの
"'メッセージにURLを含める"の次の行に

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

を挿入。上手くいくか分からんが
838名無し~3.EXE:04/09/22 21:56:15 ID:SUizVXMN

Script:C:\Documents and Settings\Koast\My Documents\Programs\DummyMailer\DummyMailer.wsf
Line:64
Char:3
Error:Variable is undefined: 'Ie'
Code:800A01F4
Source: Microsoft VBScript runtime error

これはもしかしてwshのバージョンが古くいせいですか? 
839名無し~3.EXE:04/09/22 22:01:16 ID:FDuqZ9qc
>>838
ああ、悪い。スクリプトの頭に

Dim Ie

つけてみて。
840名無し~3.EXE:04/09/22 22:05:53 ID:SUizVXMN
あ、変数のなんとかですね。よっしゃ。

mailto:sage

きゃーーーできちゃったーーーーーー!!! やったやたた
あとはOKボタンに対応させることですね。自分でできるかな?
>>839さんまじありがとう!!! びっくりした!
841名無し~3.EXE:04/09/22 23:22:44 ID:SUizVXMN
アドレス保存YES/NO設定できました。俺でもできた!!!
これでmailto: を削れたらそれなりに使えるツールになるですよ・・・
842名無し~3.EXE:04/09/23 00:02:01 ID:R2XdI34p
VBS使いって街を歩いていたら石を投げられるような存在なんでしょうか?
VC++使いやVB使いには逆らっちゃいけないんでしょうか?
843名無し~3.EXE:04/09/23 00:04:44 ID:hMcR479U
全然ベツモンだろ

VCの方が一般的に敷居が高いだろうが
VBSでできる仕事をC++で書いてたらむしろそっちが馬鹿
844名無し~3.EXE:04/09/23 00:18:18 ID:Lh2l0axC
別に石を投げられることはないよ。
仕事も投げてもらえないが。
845名無し~3.EXE:04/09/23 00:23:21 ID:vScm7/uV
例えば、クライアント環境構築や鯖メンテみたいな
ちょっとした仕事はスクリプトの分野
846名無し~3.EXE:04/09/23 01:29:25 ID:R2XdI34p
会社だとVBS使える人間がまわりにいない・・・
誰かに仕事を頼むとVCとかで作ってくる
847名無し~3.EXE:04/09/23 02:21:08 ID:hMcR479U
>>846
それもどうかと思うが
848名無し~3.EXE:04/09/23 07:55:39 ID:uCnjknxX
使える言語を使えばいい。
むかしはN88BASICで作った表計算ソフトなんかも売られてた訳だし。
849名無し~3.EXE:04/09/23 11:02:41 ID:lubInKMC
せめてコンパイラとスクリプトくらい使えるようにしとけよって気はするけどな。
特にコンパイラ型の言語使える奴は。
850FeaturesOfTheGod ◆UdoWOLrsDM :04/09/23 21:54:45 ID:gwThE3LZ
Re:>849 Windowsには標準のコンパイラは付いてたっけ?
851名無し~3.EXE:04/09/23 22:27:59 ID:TNVe/cUI
「標準のコンパイラ」って何だ?
標準なんてあったっけ?
852名無し~3.EXE:04/09/23 22:47:43 ID:fGIO2dyg
っていうか「コンパイラ型の言語」って何だ?
Cのインタプリタだってあるし、JScriptのコンパイラだってある。

ちなみに、xpまでは標準ではついてこないけど
NT4や98以上なら、WindowsUpdate からででも
Microsoft .NET Framework をインストールしておけば
VisualBasic.NET・VisualC#.NET・JScript.NET のコンパイラがついてくる。
WSH用に作ったJSファイルがそのままコンパイルできて実行できてウマー。
853名無し~3.EXE:04/09/23 23:27:30 ID:lubInKMC
>っていうか「コンパイラ型の言語」って何だ?
>Cのインタプリタだってあるし、JScriptのコンパイラだってある。
幼稚園児並みの読解力だな。
意味が通じないなら型付けの強い言語とより動的な言語とでも読み替えてくれよ。
どっち道厳密な分類はできないけどな。
854名無し~3.EXE:04/09/23 23:29:09 ID:mHeZIzzx
強いて言うならば「コンパイル型の言語」だな。
855名無し~3.EXE:04/09/23 23:48:58 ID:XpAYeHB+
確かに適材適所で言語を使い分けていきたいところだな
856名無し~3.EXE:04/09/24 07:44:43 ID:xJwPxoUq
>>853
なぜ、そんなに偉そうに自己正当化できるのかな。
単なる無知なだけなのに。
857名無し~3.EXE:04/09/24 16:08:37 ID:CQQlJGxt
ここまで堂々と開き直れるのも珍しい。
思わずメル欄を確認しちまったよ
858名無し~3.EXE:04/09/24 18:48:19 ID:0xNjV/jk
そんなトリビアルな事で熱くなれるというのは、なかなか狭くて深い世界だねえ。
859名無し~3.EXE:04/09/25 00:05:35 ID:F8U02/G3
さあ、仕切り直しだ。
860名無し~3.EXE:04/09/25 07:03:12 ID:RYLdM9oS
仕切り直しに質問させてください。

ポスト送信をサイトに送るってWSHできますか?
861名無し~3.EXE:04/09/25 13:17:27 ID:lUR05caY
>860
strURL="サイトのURL"
strDATA="POSTするデータ"
strtmpFilePath="戻ってきたデータを保存するファイルのパス"
On Error Resume Next
set objXmlHttp = WScript.CreateObject("microsoft.xmlhttp")
objXmlHttp.Open "POST", strURL, False
objXmlHttp.Send(strDATA)
If Err.Number <> 0 Then
strErrMsg = strPostURL & ": " & Err.Description
MsgBox strErrMsg
WScript.Quit
End If
On Error Goto 0
Set objStream = CreateObject("ADODB.Stream")
objStream.Open
objStream.Type = 1
objStream.Write(objXmlHttp.ResponseBody)
objStream.SaveToFile strtmpFilePath, 1
objStream.Close
set objStream = nothing
set objXmlHttp = nothing
862860:04/09/25 16:38:21 ID:b+FbVlqx
>>861
おぉ!ありがとうございます。

実行したのですが「ファイルが書き込めませんでした。」ってエラー(行19,文字1,エラーコード:800a0bbc,ソース:ADODB.Stream)
が出たんですが以下の整数値を2にすると無事動きました。ほんとにありがとうございます!

objStream.SaveToFile strtmpFilePath, 2
863名無し~3.EXE:04/09/25 16:47:20 ID:lUR05caY
>862
すまん。元々のvbsから切り出すときにミスったみたい。

Const adSaveCreateNotExist = 1
Const adSaveCreateOverWrite = 2
if objFileSystem.FileExists(strtmpFilePath) then
intadSaveCreate = adSaveCreateOverWrite
else
intadSaveCreate = adSaveCreateNotExist
end if

↑を最初のあたりに追加して、該当の行を↓のように

objStream.SaveToFile strtmpFilePath, intadSaveCreate
864860:04/09/25 19:45:16 ID:ACYOB/F2
>>863
丁寧にありがとうございます、無事動きました。

細かいようですがFileSystemObjectを(ry
Set objFileSystem = CreateObject("Scripting.FileSystemObject")
865名無し~3.EXE:04/09/25 20:11:17 ID:lUR05caY
>864
そうだね。ごめん。
866名無し~3.EXE:04/09/27 00:50:49 ID:tH608INi
Cscript とFileSystemObject.GetFolder & Foldersコレクションを使って、DOSプロンプトの
Dir /b /s *.* みたいなWSHスクリプトを作っている所です。
このvbs ファイルだけは、Cscript で起動させたいのですが、WSH設定ファイルなどでは
対応できないのでしょうか。

CreateObject("Wscript.Shell").Run("CMD /C dir /b /s *.txt")、などで、確かに代用でき
なくはないのですが、できればWSH内で完結させたいです。

CreateObject("Wscript.Shell").Run("Cscript 実行ファイル.vbs")は試した事ないですが、
上手く動くのでしょうか。
867名無し~3.EXE:04/09/27 01:03:42 ID:WDVJ2j8P
何がしたいのかわかんないけど
自動でコマンドプロンプト開いて結果表示したいってこと?

アイデアだけ提供すると、
.vbs内でコマンドライン引数を見て、例えば /prompt ってのが指定されてなければ
CreateObject("Wscript.Shell").Run("CMD /C Cscript 実行ファイル.vbs /prompt")
って自分自身を呼び出して、
/prompt があったときは通常の処理をするようにするとか
868名無し~3.EXE:04/09/27 01:03:43 ID:ksl0j9rA
>>866
試せよ。
869866:04/09/27 01:33:02 ID:eac+bg+4
>>867
返事ありがとうございます。 Run("Cscript.exe ")の発展型という事なのですね。
何でそんなスクリプトを作っているかと言うと、現在ネットワークディレクトリの中のファイルを全部
CMD dir /b /s \\machine01\doc\*.* | sort >c:\database-machine01.txt
みたいな事して、データベース化してるのですが、 そのあと、不要なキーワードを含む行
を DeleteLine.vbs database-machine01.txt として処理しています。
部分的にCMD を使うと、途中で中間ファイルを作る必要があるので、できればWSH のみ
で処理を完結したほうが、ハードディスクへの書き込み回数も少なくすんで良いかと
思ったのです。
もう1つの理由は、単に、WSHプログラミングのスキルを上げたかったので、そろそろ
CMD.exe を頼りにするのも卒業しようかと思ったからです。

>>868
普段は全くプログラミングとは関係のない仕事をしてるので、しばらく確認できなくて。
うまくやってる人が運良く読んでくれればいいかなと。
870名無し~3.EXE:04/09/28 02:12:04 ID:J0wNr5Cw
>>869
> 何でそんなスクリプトを作っているかと言うと、現在ネットワークディレクトリの中のファイルを全部
> CMD dir /b /s \\machine01\doc\*.* | sort >c:\database-machine01.txt
> みたいな事して、データベース化してるのですが、 そのあと、不要なキーワードを含む行
> を DeleteLine.vbs database-machine01.txt として処理しています。

それだったらオレなら逆にバッチファイル(*.bat)のみで書いてしまうけどな。
最近のcmd.exeはなにげに高機能。(もちろんbashほどじゃないが。)

まWSHの勉強のために書くのはいいことだけど。
871名無し~3.EXE:04/09/28 17:20:33 ID:jaV7ssBE
>>867
それよりもWScriptオブジェクトのFullNameプロパティを利用したほうがよくないか?
実行ファイル名がcscript.exeかどうかで処理を変えるとか。
872名無し~3.EXE:04/10/01 21:35:52 ID:WnxSNxPq
ボリュームコントロールの
CDのをミュートだけをON./OFFしたいのですが
やりかたを教えてください
873名無し~3.EXE:04/10/01 21:42:06 ID:HkEn7W6f
要望:
次スレのタイトルには WSH の文字を入れてください…
874名無し~3.EXE:04/10/02 19:02:42 ID:m2Ya+TYm
いつまでもあると思うな次スレと金
875名無し~3.EXE:04/10/02 19:27:44 ID:ctTa24O9
>>873
そういう要望はスレが980まで逝ってから言ったほうがよいと思われ。
なんせ>>1の日付を見ろって。
876名無し~3.EXE:04/10/02 19:47:17 ID:BtPZR038
こんだけ便利なのにマイナーなWSHって浮かばれないよな
877名無し~3.EXE:04/10/02 21:33:36 ID:zcbqrjBi
>>876
まだ死んでません
878名無し~3.EXE:04/10/04 15:59:13 ID:LGpQP8s2
Longhornで死滅します。
879名無し~3.EXE:04/10/04 22:50:50 ID:Y48Z29kw
>>876
系統的にエクセルのマクロとかで大活躍してるじゃん。
880名無し~3.EXE:04/10/04 22:52:24 ID:7PYF+pCW
>876
IEコンポーネント系タブブラウザではわりと活用されてる希ガス
881名無し~3.EXE:04/10/04 23:24:00 ID:o7CWpnNG
>>876
WMV9エンコードにも使われてるよ。
882名無し~3.EXE:04/10/05 00:15:23 ID:D0vdFyi2
>>872
さすがに無理じゃないかな。
883名無し~3.EXE:04/10/05 10:30:02 ID:R9mfnBsh
>>882
SendKeyで出来そ(ry
884名無し~3.EXE:04/10/05 15:29:02 ID:ml87br28
>>878
MSのことだから後方互換性だけはしっかり確保するんじゃねーの?
885名無し~3.EXE:04/10/05 20:38:38 ID:bf5UD62g
次期OSではせきゅりてぃ確保のため
実行時にかならず確認ダイアログが表示されます。
なお、OKボタンは表示後5秒経過しないと押すことができません。
886名無し~3.EXE:04/10/05 22:02:06 ID:CJuY4KJ3
>>884
いつMSが後方互換性をしっかり確保したのかと小一時間以下略
887名無し~3.EXE:04/10/06 14:55:23 ID:zdSVn8iX
ちょと質問。
メールにファイル添付する際「ReadFromFile」メソッド使えばいいんですよね?
うまいこと動かないんでできたらご教授願いたいのですが。
888名無し~3.EXE:04/10/06 21:02:03 ID:u8b+Eklu
wshでスクリーンショットを取ってbmpで保存させることは出来ますか?
889名無し~3.EXE:04/10/06 21:02:52 ID:WDvKa30H
basp21.SendMail()
わりとらくちん。
890名無し~3.EXE:04/10/06 21:09:54 ID:WDvKa30H
>>888
Doodle2.CaptureWindow()
Doodle2.SaveToFile()

つか、新キンタマ作り?
891名無し~3.EXE:04/10/07 10:37:46 ID:0nmesP+2
>>889
thx。やっぱりbasp21使わんとあかんか。

使わずに送る方法ってのはないのかな?
msdnイテクル
892名無し~3.EXE:04/10/07 10:45:25 ID:BZoX7yFs
フリーソフトのcmailをbat経由で使う手があるけど、面倒くさいからbasp21を使うようになったな
893名無し~3.EXE:04/10/07 23:30:10 ID:tYNrDfvt
俺はComBlatJ
894せい:04/10/10 03:15:23 ID:RlItQ142
どなたか DYNWRAP.DLL のバグ取った方いらっしゃいませんか
いちおう文字列変数のアドレス取得するDLL作ってクリップボード
読み書きには成功したけど DYNACALL付属サンプルでさえ
GetPrivateProfileSection とかまともに動かない。
895せい:04/10/11 00:47:24 ID:GzRkfCMe
自己レス。むかーし某板で熱心に DYANAWRAP.DLL 使用された方のレスで
VBSの文字列変数について書かれてましたが、かならずしも UNICODE|ANSI 変換
はちゃんと動いてないようです。私の環境下(Win98)では、アドレスを返す
関数に"i=w""r=l"指定で返った値は確かに文字列変数に関するアドレスですが
文字列自身のアドレスはその値の8バイト先に「格納」されています(文字列定数では
文字列アドレスそのものを返す(?))。だからそのアドレスを所得すればVBSでも文字列は
おろかバイナリでもいじり倒せます。ちなみに文字列格納場所の4バイト前が
文字列数、8バイト前が属性情報のようです。無理矢理変数の属性を変える
ことも可能かもしれません。
896名無し~3.EXE:04/10/15 22:34:20 ID:+MsEg/sL
最後の自己レス。一応 DYNWRAP.DLL だけで文字列変数のアドレス取得できました。
Win32APIとChrW()、ビット演算とおよそ VBSにはもっとも不向きな
演算です。COM作る環境持ってない私のような人間には DYNWRAP.DLLは
やっぱり便利です。フリーのCOM作成ツールってないのかな?
897名無し~3.EXE:04/10/18 00:03:18 ID:hLy5Be5T
for %%a in (*.*) do md5.exe %%a

これをWSHで書き直したいんですが。
898名無し~3.EXE:04/10/18 00:33:51 ID:j1CH7/dy
そんな単純なのならほんとbatの方が良いんだけどね。
とりあえずjscript。
ちなみにwscript.exeで動かすとプロンプトがファイル数ぶん開いて非常にうざいのでcscript.exeで実行すべし。

var shell = new ActiveXObject("WScript.Shell"), fso = new ActiveXObject("Scripting.FileSystemObject");
for (var e = new Enumerator(fso.GetFolder(WScript.Arguments(0)).Files); !e.atEnd(); e.moveNext()) {
   var exec = shell.Exec("md5.exe " + e.item().Path);
   while (!exec.StdOut.AtEndOfStream)
      exec.StdOut.ReadLine();
}
899名無し~3.EXE:04/10/18 02:38:59 ID:JxpZBg0M
WSC(Windows Script Compornent)ファイル内でWScript::sleepメソッド
使いたいんですが、どのようにすればよいかわかる方はいませんでしょうか??

本やネットでめちゃくちゃ探したんだけど全然わからなくて…。

又は、
Sleepメソッドが使いたいだけなので、Windows2000及びXPで標準
ついている機能のみ(他のコンポーネントのインストール無し)で
WSCファイルでSleepできる方法がわかる方、挙手願えますでしょうか??
900名無し~3.EXE:04/10/18 23:43:20 ID:pT70E/XD
続けて質問します。

wsfやwscを使用せずにvbsファイルだけでincludeしたいのですが、
>>556 の手法だと、ドラッグドロップ時に私のマシン環境では
うまくスクリプトが動作しません。

例えば以下のスクリプトの場合、
 a. test.vbsをダブルクリックする。
  →正常に「in func_test()」というメッセージボックスが表示される。
 b. test.vbsにファイルをドラッグドロップする。
  →「ファイルが見つかりません。」というエラーが表示される。
となります。
901900の続き:04/10/18 23:43:57 ID:pT70E/XD
'━ test.vbs ━━━━━━━━━━━━━━━━━━━━━━━━━━

include "common.vbs"

func_test

Sub include(ByVal FileName)
Dim objFS, objTXT
Const ForReading = 1
Set objFS = CreateObject("Scripting.FileSystemObject")

' for debug --
Set tgtFolder = objFS.GetFolder(".")
MsgBox tgtFolder.Path
'↑ファイルをdrag&dropすると
' Windows2000の場合はここでカレントディレクトリが"C:\"と表示される。
' WindowsXPの場合はここでカレントディレクトリが"C:\Documents and Settings\Owner"と表示される。
' (あくまで私のマシンの環境では…)
' ------------

Set objTXT = objFS.OpenTextFile(FileName, ForReading, False) '←ここでエラー
ExecuteGlobal( objTXT.ReadAll() )
End Sub

'━ common.vbs ━━━━━━━━━━━━━━━━━━━━━━━━━━
Sub func_test
MsgBox("in func_test()")
End Sub

' ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
902901の続き:04/10/18 23:44:44 ID:pT70E/XD
原因はスクリプト実行時のカレントフォルダが、ダブルクリックと
ドラッグドロップとでは異なってしまうためのようです。
(カレントフォルダ)
 ダブルクリック時 :実行するvbsファイルのあるフォルダ
 ドラッグドロップ時:"c:\"とか。正式にはどのフォルダがカレントディレクトリとなるかはわかってない。

そこでこれに対処する方法がわかれば知りたいのですが、ドラッグドロップしても
問題なくスクリプトが動作するやり方のわかる方、教えてください。
よろしくお願いします。
(どこどこの設定を変えるとか、このサイトに書いてあるとか…)
903名無し~3.EXE:04/10/18 23:58:04 ID:j1CH7/dy
・フルパスでインクルードファイルを指定。
・WScript.ScriptFullNameからスクリプトファイルの位置を取得して
 それをもとにインクルードファイルのフルパスを取得してそれをインクルード。

どちらなりと。
904名無し~3.EXE:04/10/19 00:48:16 ID:xJshwPhk
L/Rキター
905902:04/10/19 00:50:07 ID:jFeBV1yG
>>903
後者は思いつきませんでした。
少し冗長になるのが気になるが、これでOKです。
ありがとうございました。

Set objTXT = objFS.OpenTextFile(FileName, ForReading, False)
  ↓
Set objTXT = objFS.OpenTextFile(left(WScript.ScriptFullName,instrrev(WScript.ScriptFullName,"\")) _
& FileName, ForReading, False)
906名無し~3.EXE:04/10/19 16:52:28 ID:oXlBCPFA
dos系のバッチファイルの実行ってどう記述するの?
907名無し~3.EXE:04/10/19 21:37:28 ID:ZpRJTA1c
>906
set objWshShell = WScript.CreateObject("WScript.Shell")
call objWshShell.Run("batファイルのフルパス")

こういう感じ?
908名無し~3.EXE:04/10/20 08:05:33 ID:xn4LtraR
set objWshShell = WScript.CreateObject("WScript.Shell")
call objWshShell.Run("batファイルのフルパス")

上記のように記述すると「指定したファイルが見つかりません」
のエラー表示になってしまうのはなぜ?
909名無し~3.EXE:04/10/20 12:45:06 ID:jTTjJP5H
"batファイルのフルパス" というファイルが見つからないせいだと思います。

もしかして >>906 の質問はメモ帳の使い方をおしえてほしかったのかな?
910名無し~3.EXE:04/10/21 21:18:23 ID:jTTMvPxN
これらのWSHスクリプトをください。

1「ユーザーの切り替え」
2「ユーザーを指定して切り替え」
3「終了オプション選択画面」
4「IMAPI(CD-Burning COM Service)サービスを開始」
911名無し~3.EXE:04/10/21 21:20:29 ID:1cNP+TAQ
>>910
こんなスクリプト書いてください in ソフト板 part1
http://pc5.2ch.net/test/read.cgi/software/1095411685/
912名無し~3.EXE:04/10/24 18:00:03 ID:hjbLCR8n
>>911の情報により、>>910じゃないですが、こんな依頼しました。
http://pc5.2ch.net/test/read.cgi/software/1095411685/35-36

でも、自分でも頑張ってやってみて途中まで上手く言ってると思うんですが…
AVIをD&Dした時点で関連付けされてるMediaPlayerが起動して上手くいきません。
同時に、QuickTime側は処理が動作してるのか…一応処理されるんですが、
AVIを読み込めていないので、下手したらアクティブになったウィンドウで処理しちゃってます。

WSFで書いてます。

<job id="IncludeExample">
<script language="JScript">
var WShell = WScript.CreateObject("WScript.Shell");
var oExec = WShell.Exec("QuickTimePlayer");//QuickTimePlayerを起動
WShell.Sendkeys("+E");//キーを送る
WShell.Sendkeys("{ENTER}");//キーを送る
while(oExec.Status == 0)
WScript.Sleep(1000);
WShell.Sendkeys("%FX");//キーを送る
</script>
</job>

あまり賢い方法じゃないでしょうが、初心者なのでこんな感じで始めてます。
現在、色々調べてやってる途中ですがJSもVBSも全くの初心者です。
どなたかアドバイス頂ければ幸いです。よろしくおねがいします。
913名無し~3.EXE:04/10/29 12:52:24 ID:y5f4KQ1x
ユーザーに情報を通知する手段についてですが、
普通にMsgBoxだとユーザーがボタン押さないといけないので
画面の端に一定時間表示されて勝手に消えてくれるような通知方法はないでしょうか?
914名無し~3.EXE:04/10/29 12:58:50 ID:rbM8AXyP
>>913
WshShell.Popup
915名無し~3.EXE:04/10/29 13:00:27 ID:rbM8AXyP
と思ったけど画面の端には無理だな。
916名無し~3.EXE:04/10/29 13:53:16 ID:zo6tvFG1
>>913
CreateObjectでIEを生成して、自動で閉じるウインドウを表示するとか。
917yara ◆SSLypP3Luo :04/10/29 23:37:55 ID:zsrZ/0Da
RubyScriptでWebページ内でHello Worldと表示させるにはどうしたらいいでしょうか。
↑WSH用のRuby
918名無し~3.EXE:04/10/29 23:50:32 ID:V0FW996l
>>917
print "<html>Hello world</html>"
919名無し~3.EXE:04/10/29 23:52:32 ID:Ap0nYukH
WSHの勉強を始めようと思って、本を一冊買おうと思ってるんだけど
オススメの本ってある?
>>3の本は随分古いようなので、今はどうなのかなと思って。
ちなみにおいらは、バッチファイルはある程度書ける、という程度のレベルです。
920919:04/10/29 23:53:57 ID:Ap0nYukH
× >>3の本〜
○ >>5の本〜
921名無し~3.EXE:04/10/29 23:59:41 ID:UwzqSupw
>>5の本は古いし、VBScripばかりなんだよね
922名無し~3.EXE:04/10/30 05:03:40 ID:wh/VjY2r
>>912 一週間も前だからもうみてないな。

どの時点で上手く行ってないのかがわからないけど、
スクリプトファイルにD&Dしたファイルが起動したQTで開けないってこと?
もしそうなら、QT起動時に引数として渡したらどうでしょ。

var file = WScript.Arguments.Unnamed.Item(0);
var oExec = WShell.Exec( "QuickTimePlayer" + " \"" + file + "\"" );

でもスクリプトにaviをD&DしてもWMPは起動しないし、外してるかな。
923912:04/11/03 01:47:40 ID:PB9dmDR7
>>922
たまに覗いてます!
ありがとうございました。QTにAVIを送り込むことが出来ました!

>でもスクリプトにaviをD&DしてもWMPは起動しないし、外してるかな。
WMPにAVIが関連付けされてるんですが、そのせいでWMP上でAVIが
再生されちゃうんですよ…。うちの環境だけですかね…。

でも、何とかQTでAVIを開けました。
後は、キーを送るの箇所辺りを弄ってみます。
どうも上手く作動してないっぽいです。
924912:04/11/03 02:45:25 ID:PB9dmDR7
立て続けにすみません。
>>922さんのおかげで、何とか1ファイルだけの処理を
上手くこなす事ができるようになりました。
有難うございます。

一つの処理時に次への実行を待機させるようなのは、
やはりSleepメソッドは無いでしょうか?
やたらSleep行が多いもので…。
これがクリアできたら、次は複数ファイルへの対応です!
ボチボチ調べながら自分自身でも頑張ってみます。
925912:04/11/03 02:46:35 ID:PB9dmDR7
>Sleepメソッドは無いでしょうか?

Sleepメソッド以外は無いでしょうか?の間違いです。
スレ汚しスマソ
926名無し~3.EXE:04/11/05 00:37:17 ID:g7DYgbKA
>912
複数ファイルスクリプトにD&Dして処理するのなら、
WScript.Arguments.Unnamed.lengthで名前なし引数の数を確認して
ループで順に取り出していけばいい。

>912のスクリプト、while(oExec.Status == 0) WScript.Sleep(1000); で
起動したQTPの終了を待ってるけど、その後さらにキーを送ってるから
ここのステータスチェックでのsleepはいらないんじゃない?

処理待ちSleepは、キーを送ってその処理待ちならSleepで待つしかないかな。
927名無し~3.EXE:04/11/05 00:37:28 ID:6HnHT4mY
こんな表記も出来るのね。今日初めて知った。

Dim a(2)
a(0)=array(0,1,2)
a(0)(0)=10
msgbox a(0)(0) ' 10と表示
928名無し~3.EXE:04/11/05 00:40:52 ID:PKEjFJ0R
ショートカットのリンク先に引数足して、
そのショートカットにファイルをドロップすると、
ショートカットで足した引数が WScript.Arguments で取れないみたいなんですが、
これは仕様ですか?

ショートカットで足した引数の後ろにドロップしたファイルがきて欲しい。
バッチファイルならいけたのに。
929名無し~3.EXE:04/11/05 21:50:54 ID:g7DYgbKA
>>928
ほんとだ、出来ない。

スマートじゃないけど
目的のスクリプトを引数付けて呼び出すスクリプトを書くとか?
930912:04/11/08 04:43:08 ID:2YtLn7z3
>>926
レスありがとうございます。遅くなってすみません。

>WScript.Arguments.Unnamed.lengthで名前なし引数の数を確認して
>ループで順に取り出していけばいい。
初心者なんで、何を言われてるかチンプンカンプン状態ですが、
WScript.Arguments.Unnamed.lengthをヒントにやってみます。

>ここのステータスチェックでのsleepはいらないんじゃない?
そこのsleepは処置待ちでのスリープです。
後、起動時にも即時にキーを送ってるっぽいので、今のバージョンでは、
多数sleep入れてしまっております。

ご教授ありがとうございます!
931名無し~3.EXE:04/11/09 04:46:23 ID:E7QupWoW
>>4
DynaCall - Win32APIコール
http://www.borncity.com/WSHBazaar/WSHDynaCall.htm
ここ落ちてないですか?そのうち復旧するのかな?
dynacallが必要なんです。
932名無し~3.EXE:04/11/09 11:30:22 ID:yAu/BLvf
microsoftのwshのサンプルってどこにありますか?
ヘルプには

>Windows Script Host のサンプルをダウンロードするには
>Microsoft Windows Script Technologies の Web サイト (http://www.microsoft.com/japan/) のナビゲーション ウィンドウ領域にある [Windows Scripting Host] をクリックします。
>メニューにある [ダウンロード] をクリックします。
>ダウンロード ページの [サンプル スクリプト (英語)] をクリックします。[ファイルのダウンロード] ダイアログ ボックスが表示されます。
と書いてありますがそんなページは見つかりません。

また他にもよいサンプルのおいてあるところがありましたら教えてください。
やりたいことは、ファイルとレジストリ操作、ダイアログの表示です。
933名無し~3.EXE:04/11/09 17:50:10 ID:OHm2GMYi
すみません、質問なのですが

Set IE=Wscript.CreateObject("InternetExplorer.Application")

↑の場合の「InternetExplorer.Application」の部分は、どうやったら調べられるのですか?
934名無し~3.EXE:04/11/09 22:24:03 ID:GAuhza3Q
>931
Upローダ教えてくれたらUpするよ。
2chでUpされた物を信用できるのならだけど。

>932
MSDNじゃ駄目なん?
ttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/script56/html/vtoriMicrosoftWindowsScriptTechnologies.asp
あとは>3にある個人サイトとか。

>933
oleview.exe。
ttp://www.microsoft.com/windows2000/techinfo/reskit/tools/existing/oleview-o.asp
935名無し~3.EXE:04/11/09 23:03:44 ID:OHm2GMYi
>>934
レスありがとうございます。
win2000のサイトのようですが、このoleview.exeは、XP SP2でも使えますか?
936名無し~3.EXE:04/11/09 23:05:16 ID:4UinI7d0
まあまずは試してみ。
937名無し~3.EXE:04/11/09 23:24:54 ID:uAkdiH+f
>>931
ttp://web.archive.org/web/20010706182517/http://www.borncity.de/WSHBazaar/dynawrap95.zip
9x系ならInternet Archiveから落ちたよ
Internet Archiveのバグで1バイトかけているので
ファイルの最後にバイナリエディタで00を追加すれば解凍できる
938名無し~3.EXE:04/11/09 23:34:00 ID:GAuhza3Q
>>935
>934のはver5.0。xpでも問題ないと思うよ。
ttp://www.microsoft.com/downloads/details.aspx?FamilyID=9d467a69-57ff-4ae7-96ee-b18c4790cffd&DisplayLang=en
こっちがたぶん最新版でver5.1。でも他のも入ってるからファイルがちょっとでかい。
939名無し~3.EXE:04/11/10 00:32:10 ID:dH38g6sq
WSHかバッチファイルでデスクトップのスクリーンショットを取って
bmpかjpgでファイルに保存することはできるでしょうか?
940名無し~3.EXE:04/11/10 00:38:11 ID:IgUgxNFd
>>939
そういうCOMを探すより、そういうEXEを探したほうが早いでしょう。
941935:04/11/10 00:59:55 ID:0IqHZxsT
>>938
どうもです。>>934のをインストールしてみたら、「iviewers.dllがない」って言われたので
ネット検索して見つけだしてコピー、ついでにoldバージョンの日本語化パッチを見つけたので
一工夫して日本語化、そしてOleviewには検索機能がないらしく、見方を把握するのに
手こずっていたら、こんな時間になってしまいました。
ProgID というのが該当部分なのですね。分かってしまえば便利ですね。

というわけで、>>934のはXP SP2でも問題なく動作しました。
>>938のリソースキットも面白そうなのでダウンロードしました。
ありがとうございました。
942名無し~3.EXE:04/11/10 07:35:12 ID:ANC3jy5y
>>939
キンタマ露出させる前にログぐらい嫁
943m:04/11/10 12:00:00 ID:PmMEJcSc
あるキー配下にあるキー名を取得したい場合ってどうするんですか?

具体的には
HKCU\Softwareの中にあるキーを片っ端からゴニョゴニョしたいんです。
ってか他のキーにもゴニョゴニョする事を考えいるので、配下のキーを全部・・・的な
動作を知りたいです。
944名無し~3.EXE:04/11/10 12:27:37 ID:IgUgxNFd
>>943
WMI EnumKey でぐぐれ
945名無し~3.EXE:04/11/10 12:28:59 ID:/7A6p4zJ
946名無し~3.EXE:04/11/10 12:45:00 ID:/7A6p4zJ
Win98でもWMIを手動インストールはできるのか。知らなかった。
947m:04/11/10 15:01:48 ID:PmMEJcSc
> 944-955

ぬおぉぉ、助かりました
まさにこんな動きです。

WMIって良く解らんかったので頭が回りませんでした。
948名無し~3.EXE:04/11/10 16:14:53 ID:Qneit69U
レジストリを検索して特定の文字列を見つけたら削除するスクリプトなんて
WSHで実現できないでしょうか?

ファイルやレジストリキーの削除は検索して出来るようになったのですが、
量が多いとめんどくさいので検索機能を使って一気にやりたいのです。
949名無し~3.EXE:04/11/10 16:21:04 ID:/7A6p4zJ
>>948
>  WSHで実現できないでしょうか?
できるよ。
すぐ上でやりとりされてるのを参考にすればいい。

//でもぶっちゃけ一気に数十台のマシンをとか言うんでない限りスクリプト書くより適当なレジストリエディタ使う方が早そうだが。
950948:04/11/10 18:00:06 ID:u2p4OJfV
>>949
レスありがとうございます。
ちょっと前のやりとりを参考に読んで自分でできるか試してみます。

ちなみにそのレジストリエディタはどのようなものでしょうか?
Vectorでちょっと見てみたのですが、検索して削除ってのはWinに付属の
レジストリエディタとあまり変わらなかったみたいなので。
よかったら教えてください。
951948:04/11/10 18:34:13 ID:0pHBdo5H
二つほど教えてください。
1、vbsの拡張子だと実行するファイルの拡張子をWSFにするとエラーになりますけど、
これは何か宣言すれば動作するようになるのでしょうか?
今まで実害が無かったのでずっとvbsのままにしていましたが気味悪いので。

2、もうひとつですが、ファイルの名前を今日の日付にしてあるファイルをコピーしたい
のですが、これはどうすればできますか?
ファイル操作は初めてでコピーのやり方や日付情報の取り方すら分かりません。
ここのログを検索してもファイルの削除の方法は書いてあったのですが、
コピーの方法はどこにも書いてありませんでした。
952名無し~3.EXE:04/11/10 18:48:45 ID:lTopE8CH

放置放置
953名無し~3.EXE:04/11/10 18:58:50 ID:/7A6p4zJ
まあ取りあえずMSDN読め。
Google使え。
954名無し~3.EXE:04/11/10 20:37:49 ID:0m1rxycB
>>951>>5の参考文献から何か買ったほうが良さそうだな
955名無し~3.EXE:04/11/10 23:57:09 ID:fbxEpDl6
MsgBoxでvbYesvbNo等以外にすること出来る?

例えば、4つぐらいのボタンを並べるとかやりたいんだけどYes No Cancel以外できなくて。
956名無し~3.EXE:04/11/11 00:07:30 ID:gp8+fVfY
MsgBoxとはそんなもんだ。
簡単に出せるけど、できることが限られてる。

IEを起動して、MsgBox風の外観にして、
HTMLでボタンを並べて、入力結果を元のスクリプトに返してやればいい。
957名無し~3.EXE:04/11/11 00:36:59 ID:cNYXWVQr
初心者が増えてきたな。良いことだ。
958名無し~3.EXE:04/11/11 16:12:50 ID:fZTohmvy
空白のあるフォルダや実行ファイルに引数を送るときは通常
"""c:hoge\hoge.exe -x"""
でやるよね?

でも、フォルダ名や引数が場合によって変わるからどうしてもこの形式が
使えないんだけど、こういうときに空白のフォルダ名や引数を送るには
どうしたらいいの?
ショートカットを作るとなると大量になるのでそれも無理です。
できたら、Wscript.run "C:\"+hogedir+"hoge.exe " +hoge
見たいな形でできたらいいんだけど、これって無理ですか?
959名無し~3.EXE:04/11/11 16:23:40 ID:YEYQryb+
例も日本語もむちゃくちゃだが、適当に引数の前後に"を付け加えるQuote関数でも作るとか。
960958:04/11/11 16:31:00 ID:CBKbTJ5A
""""で解決しました。すみませんでした。
961名無し~3.EXE:04/11/11 18:28:40 ID:ENl8B5W0
過去ログやテンプレのサイトも一通り読んでも分からないので教えてください。

http://pc5.2ch.net/test/read.cgi/win/1058829737/l50
などの2ちゃんのスレを . や / で切り分けて順番を並び替えることはできませんか?

例えば上の例だったら
http://www.aaa.co.jp/2ch_logbackup/pc5-win/1058/1058829737.mht
などのように.などや文字列の一部で切り分けて文字列操作をしたいのですが、
やり方が分かりません。
やりかたを教えてください。
962名無し~3.EXE:04/11/11 18:37:34 ID:YEYQryb+
わざわざ「2ちゃんのスレ」などと書く必要はないな。URL文字列の、とかなら分かるけど。

Split関数(VBScript)/splitメソッド(JScript)で文字列配列にして、
適切に処理して、
"/"なりなんなりを間に挟んで再結合とか。

//先頭のttp://は事前に削除しといた方がやりやすい
963名無し~3.EXE:04/11/12 11:26:57 ID:uCMuzyOf
961です。
やってみたのですが、どうしてもできません。
とりあえずURLを入力させて各要素をひとつずつ表示させようと
しているのですが、それすらできません。
lengthやsplitの使い方が間違っていると思うのですが、
どなたか教えていただけないでしょうか?
MSDNに当たっても
function SplitDemo(){
var s, ss;
var s = "The rain in Spain falls mainly in the plain.";
// スペースの位置で分割します。
ss = s.split(" ");
return(ss);
}
と言う例があるだけでそれを真似たのですが出来てないみたいです。

以下、ソース
Dim i,RURL,ss

RURL=inputbox("input URL")
ss=split(RURL,"/") 'ss=RURL.split("/")でも出来ず
for i=0 to ss.length 'ss.countなども試したが出来ず
msgbox ss[i]
next i

Wscript.Quit intMsg
964名無し~3.EXE:04/11/12 11:51:26 ID:gsoQ0tnO
>>963
VBScriptとJScriptがごっちゃになりまくってるね。

JScriptならsplitから返ってくるのがArrayオブジェクトなので、そのlengthプロパティを参照できる。
VBScriptだと、配列は配列なのでUBound関数を使って配列長を取得する必要がある。
大抵は、同じような機能をJScriptはオブジェクトベースで、VBScriptは関数ベースで解決しているから、
異なる言語のサンプルを見る時はそれに対応した自分の扱う言語上での表現に留意しないといけない。

あと、JScriptは配列要素へのアクセスは[index]だけど、VBScriptだと(index)になる。
965名無し~3.EXE:04/11/12 13:57:16 ID:A+iYBMN8
NTFSのファイルストリームに格納されているコメントの取得と設定のやり方を教えてください。
966名無し~3.EXE:04/11/12 14:59:41 ID:32lcMbL0
>>963
こんな感じじゃないかな。

Dim i, RURL, ss
RURL = InputBox("input URL", "hoge", "http://pc5.2ch.net/test/read.cgi/win/1058829737/")
ss = Split(RURL, "/")
For Each i In ss
MsgBox(i)
Next
967名無し~3.EXE
>>963
よく、MidやSplitを駆使して文字列を切り貼りしているのを見かけるが、
変則パターンがあると、バグを入れ込むしロジックも複雑になる。
VBSでもJSでも 正規表現の置換使うのが一番手っ取り早いのではないかと。
http://(\w+).+(\w+)/(\d{4})(\d{6})(/l\d+)?$

http://www.aaa.co.jp/2ch_logbackup/$1-$2/$3/$3$4.wht
みたいな感じで。ぱっとみぃで適当に作ってみたが。