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

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

・煽りや荒らしは無視の方針で。基本的にsage進行です。

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

・質問する際は、OS及び使用するコンポーネントのバージョンもお忘れなく。

●過去スレ
#1 http://pc.2ch.net/test/read.cgi/win/1009175619/
#2 http://pc2.2ch.net/test/read.cgi/win/1022248379/
#3 http://pc8.2ch.net/test/read.cgi/win/1058829737/
#4 http://pc8.2ch.net/test/read.cgi/win/1100489339/
#5 http://pc8.2ch.net/test/read.cgi/win/1126543183/

その他 >>1-10 あたり
2名無し~3.EXE:2006/08/08(火) 21:42:04 ID:hqaA5ks/
●便利なリンク
Windows Script
http://www.microsoft.com/japan/msdn/scripting/default.asp
MSDN Library (オンラインドキュメント)
http://msdn.microsoft.com/library/ja/
Windows Script 5.6 ドキュメント ダウンロード (exe 形式; 1.67 MB)
http://download.microsoft.com/download/winscript56/Install/5.6/W98NT42KMe/JA/scd56jp.exe
OLE/COM Object Viewer ダウンロード (exe 形式; 656 KB)
http://download.microsoft.com/download/win2000platform/oleview/1.00.0.1/NT5/EN-US/oleview_setup.exe

Sesame Script (スクリプト作成初心者向けコラム)
http://www.microsoft.com/japan/technet/scriptcenter/resources/begin/default.mspx
Hey, Scripting Guy! (スクリプトのQ&A・ハウトゥ集)
http://www.microsoft.com/japan/technet/scriptcenter/resources/qanda/default.mspx
Windows管理者のためのWindows Script Host入門 (@IT内記事)
http://www.atmarkit.co.jp/fwin2k/operation/wsh01/wsh01_01.html
Windows XP に含まれるコマンドラインツールの紹介 (@IT内記事)
http://www.atmarkit.co.jp/fwin2k/xp_feature/013commandtool/commandtool.html
ADSI (Active Directory Service Interfaces) の特集記事全文
http://web.archive.org/web/20050309045811/http://www.galliver.co.jp/writing/nikkei_tokushu/wad002/index.html

●個人サイト
Windows Script Wiki
ttp://winscript.s41.xrea.com/wiki/index.php
趣味のJavaScriptなページ
ttp://homepage3.nifty.com/aya_js/
Windows Scripting Host Laboratory
ttp://www.roy.hi-ho.ne.jp/mutaguchi/wsh/
Tips - (小技にも満たない)微ワザ集
ttp://www1.u-netsurf.ne.jp/~tomo_c/tips/Scr002.html
3名無し~3.EXE:2006/08/08(火) 21:42:58 ID:hqaA5ks/
●コンポーネント関連リンク

○Microsoft 製外部コンポーネント
DCOM
(98/Me) http://www.microsoft.com/japan/com/dcom/dcom98/dcom13.asp
(95)  http://www.microsoft.com/japan/com/dcom/dcom95/dcom13.asp
MDAC - データベース・メールボックス・WebDAV・バイナリの操作
http://msdn.microsoft.com/data/ref/mdac/downloads/
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
MSXML - XMLパーサ、SAX・DOM API、XSLT変換、POST/HTTPダウンロード
http://www.microsoft.com/downloads/details.aspx?familyid=993c0bcf-3bcf-4009-be21-27e85e1857b1

○サードパーティ製外部コンポーネント
BASP21 - メール、ファイルエンコード、文字コード変換、FTP/HTTPアップ、その他
http://www.hi-ho.ne.jp/babaq/basp21.html
Doodle2 - グラフィック変換、操作、描画
http://www.vector.co.jp/soft/winnt/prog/se219120.html
DynaCall - Win32APIコール
http://people.freenet.de/gborn/WSHBazaar/WSHDynaCall.htm
AutoItX - マウス・キーボード・クリップボード操作
http://www.hiddensoft.com/AutoIt/
4名無し~3.EXE:2006/08/08(火) 21:43:41 ID:hqaA5ks/
●WSH(COM)参考書籍

「はじめてのWindows Scripting Host」 (株)アンク著 技術評論社
http://www.amazon.co.jp/gp/product/477410650X/

「[改訂版] VBScriptポケットリファレンス」
http://www.amazon.co.jp/gp/product/4774127930/

「使いながら覚えるWindows Scripting Hostプログラミング入門」 竹田英雄著 エーアイ出版
http://www.amazon.co.jp/gp/product/4871936678/

「Windows Scripting Host入門 with VBScript」 毎日コミュニケーションズ
http://www.amazon.co.jp/gp/product/4839900906/

「WSHで楽しむWindows95/98/NT4.0版 ウィンドウズ・スクリプティング入門 VBScript編」 メディアテック出版
http://www.amazon.co.jp/gp/product/4896270207/

「WSHクイックリファレンス」 羽山博著 オライリー・ジャパン
http://www.amazon.co.jp/gp/product/4873110068/

「Rubyを256倍使う本 邪道編」 arton著 ASCII
http://www.amazon.co.jp/gp/product/4756136036/

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

「標準ASPテクニカルリファレンス」山田祥寛著 SOFTBANK
http://www.amazon.co.jp/gp/product/4797314001/
5名無し~3.EXE:2006/08/08(火) 21:44:21 ID:hqaA5ks/
6名無し~3.EXE:2006/08/08(火) 21:47:19 ID:hqaA5ks/
テンプレ終わり。なかったので立てました。
リンク切れ修正したり、簡潔にしたり、書籍をAmazonでまとめたり、色々追加したりしてみました。
まずかったらごめんなさい。
7名無し~3.EXE:2006/08/08(火) 22:44:29 ID:m2nJYuN9
やっと立ったか
>>1
8名無し~3.EXE:2006/08/09(水) 02:18:52 ID:HZLszs1m
おつりんこ
9名無し~3.EXE:2006/08/09(水) 21:29:00 ID:3ZEp9c5C
10名無し~3.EXE:2006/08/10(木) 01:20:51 ID:dgC59hri
そろそろ、大学入試に採用して欲しいものだ。
1111:2006/08/10(木) 02:20:10 ID:/7XeLnYy
こっそり。
連載って大変です・・・
12名無し~3.EXE:2006/08/10(木) 11:10:30 ID:QZ8c+eSn
>>11
ただの11に興味はありません。
13名無し~3.EXE:2006/08/13(日) 11:50:50 ID:41wVJTOD
「VBScrip逆引き大全 500の極意」 井川はるき著 秀和システム
ttp://www.shuwasystem.co.jp/cgi-bin/detail.cgi?isbn=4-7980-1379-X
14名無し~3.EXE:2006/08/13(日) 20:54:27 ID:8j+UDFyv
ファイルをD&Dすれば、その配下に「2006年08月」の年月フォルダを作って
振り分けてくれるスクリプトはどこかにないですか?
15名無し~3.EXE:2006/08/13(日) 21:14:49 ID:mVE7+F6R
見当たらないものを作るのがこのスレ。とにかく書いてみろよ。
16名無し~3.EXE:2006/08/13(日) 22:15:18 ID:Th0qG/nU
簡単っぽいね

現在の年・月取得
→「y年m月」というフォルダがないなら作る
→引数のファイルをそのフォルダにコピーor移動

>>14
がんばれ
17名無し~3.EXE:2006/08/15(火) 17:13:21 ID:5toxITo3
本当にスクリプトで画面の解像度を変更できませんか
18名無し~3.EXE:2006/08/15(火) 20:34:44 ID:5SvS0Mip
>>17
WScript.exe自体の機能では出来ない。
そういう機能のあるCOMを探すか作るかすれば出来る。
WMIのWin32_DisplayConfigurationあたりでも出来るかもしれないが
面倒なので自分で調べて。

というか、コマンドラインから解像度変更するツールは確かあったから
そいつをWshShellのRunで呼ぶのが一番手っ取り早いかも。
19名無し~3.EXE:2006/08/18(金) 02:23:11 ID:huYxnQWS
IE7をCOMで扱うときの資料ってどこかにありますか? メソッド一覧とか。

自作のIE自動運転ツールで、CreateObject("InternetExplorer.Application")ってやって新規IEをいくつも立ち上げてるんですが、
IE7のタブ機能で、同じIEの新規タブを使うように変更したいんです。
20名無し~3.EXE:2006/08/18(金) 03:20:19 ID:huYxnQWS
あと、CreateObject("InternetExplorer.Application") みたいな感覚で、
FireFoxって扱えないのでしょうか?
どっかに資料があったら教えてください。
21名無し~3.EXE:2006/08/18(金) 05:52:24 ID:X3GM4s/3
前まで使っていたHTAがある日突然文字化けして使えなくなってしまいました。
拡張子をHTMLにすると文字化けも解消し、動作します
なんとか元通りHTAのまま動作するようにしたいのですが、なにが原因なんでしょうか
ちなみに他のHTAは文字化けしませんでした
22名無し~3.EXE:2006/08/18(金) 06:09:17 ID:Y6b9lzs3
>>21
<meta http-equiv="Content-Type" content="text/html; charset=****" />

を入れてみたら?****はshift_jis, EUC-JP, UTF-8など

HTAスレがありますよ
HTAをもっと流行らせる計画
http://pc8.2ch.net/test/read.cgi/tech/1124559962/l50
23名無し~3.EXE:2006/08/18(金) 10:26:16 ID:cwDh88nh
>>19
http://msdn.microsoft.com/library/default.asp?url=/workshop/browser/webbrowser/reflist_cpp.asp

IE7は使ったことないから分からないけど
タブで開くには Navigate2で第2引数のフラグ(BrowserNavConstants)に
navOpenBackgroundTab = 0x1000を立てればいいんじゃないかな
24名無し~3.EXE:2006/08/18(金) 10:27:46 ID:cwDh88nh
25名無し~3.EXE:2006/08/19(土) 21:40:24 ID:Ax5AbTvR
789 名無し~3.EXE [sage] 2006/08/19(土) 13:35:26 ID:IAl43imz
MS06-023で指摘された脆弱性対応版ですかね?
バージョンは 5.6.0.8831

Windows 98、Windows Millennium Edition (Windows Me)、および Windows NT 4.0 用の Windows Script 5.6
※OS本体はサポート終了、しかも何故か→【要認証】
http://www.microsoft.com/downloads/details.aspx?FamilyID=0a8a18f6-249c-4a72-bfcf-fc6af26dc390&DisplayLang=ja
http://download.microsoft.com/download/3/a/0/3a09aa38-a01d-437d-aff0-517d1d47746e/Windows9x-Script56-KB917344-x86-jpn.exe

Windows 2003 用の Windows Script 5.6 【要認証】
http://www.microsoft.com/downloads/details.aspx?FamilyID=887fce82-e3f5-4289-a5e3-6cbb818623aa&DisplayLang=ja
http://download.microsoft.com/download/5/8/2/582f8ad3-c9c2-40db-a7cd-e30bdf8c6e70/WindowsServer2003-Script56-KB917344-x86-jpn.exe

簡単な説明
このダウンロードは、Visual Basic Script Edition (VBScript) Version 5.6、JScript Version 5.6、Windows Script Components、
Windows Script Host 5.6、および Windows Script Runtime Version 5.6 からなる Microsoft Windows Script をインストールします。

http://pc8.2ch.net/test/read.cgi/win/1133803512/789
26名無し~3.EXE:2006/08/26(土) 08:36:17 ID:7AZj00I6
バッチファイルの結果って、wsh からコピーできないんでしょうか。
Alt + Space を SendKeys してもメニューが出ないので、困ってます。
かなりぐぐったけど、結局できなかったって話しかないし。

-- 8< Login-FTP.bat 8< --
@echo off
TITLE FTP-Tool
ftp hoge
echo "FTP 終わったら [OK] をクリックしてください"

-- 8< FTPcopy.wsf 8< --
set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run "cmd.exe /k Login-FTP.bat", 1, false
MsgBox "[OK] をクリックしてください"
Do Until objShell.AppActivate("FTP-Tool")
WScript.Sleep 100
Loop
objShell.SendKeys "%({ }ES)%({ }EY)"
WScript.Sleep 100
Set objExec = objShell.Exec("notepad.exe")
Do Until objShell.AppActivate(objExec.ProcessID)
WScript.Sleep 100
Loop
objShell.SendKeys "%(EP)"
WScript.Sleep 100
objShell.SendKeys "%(FA)"
WScript.Sleep 500
objShell.SendKeys "FTP.log"
27名無し~3.EXE:2006/08/26(土) 09:21:16 ID:NGHbsPUz
>>26
Run じゃなくて Exec を使う。
WshShell.Exec の返り値として WshScriptExec のオブジェクトが返ってくるから
その StdOut を読めばいいよ。
2826:2006/08/26(土) 11:18:57 ID:7AZj00I6
>>27
サンクス! 全然考えてなかったやりかたでした。

試しました・・・ら、かんじんの FTP 処理がコマンドプロンプト上で
入力できないんですね・・・。
WSH から標準入力としてコマンドを送りつければよいのでしょうが、
FTP を自由に使いたいのでそういうわけにも行かず・・・。

うーむ・・・。
標準入力だけは WSH を経由しないようにできないものか・・・。
2926:2006/08/26(土) 11:31:17 ID:7AZj00I6
あ、標準入力っていうか、普通にコマンドプロンプト上で操作できて、
その後で Exec の結果を取得できなくちゃいけないのか。

・・・できそうにないな・・・。
30名無し~3.EXE:2006/08/26(土) 12:03:52 ID:X5Z8XRwb
出来ることをできそうにないとか言って諦めきれるならやらなきゃいいさ。
諦めきれないなら調べるなり試行錯誤するなりすればいいさ。

それが出来ないと本当に困るという状況で必死になってるなら自分で解決まで
這い蹲ってでも辿り着くだろうし、解決できないなら出来なくてもたいして困らないから
必死になりきれてないだけ。本人が別に解決しなくてもいいや程度に考えてるなら
俺等が手を掛けることでもないし、これ以上教えることは何も無さそうだな。
3126:2006/08/26(土) 12:23:05 ID:7AZj00I6
いや、まだやってますけど・・・。
32名無し~3.EXE:2006/08/26(土) 22:54:38 ID:caN/FdXT
HTAって、背景透過できない?
33名無し~3.EXE:2006/08/26(土) 23:22:22 ID:NGHbsPUz
このスレ的な回答なら COM を作ればできる かな。
34名無し~3.EXE:2006/08/27(日) 18:11:11 ID:iJpflacd
難しいそうでつね。
3519:2006/08/27(日) 23:34:30 ID:7+PWpyeP
>>23-24
情報感謝です。そんなIE7を反映した資料があるの、全然知らなかった。

複数サイトに対して自動巡回をするため、これまでは
CreateObject("InternetExplorer.Application") でIEをいくつも立ち上げてたんですが、

・IEインスタンスが存在しない→
  ・CreateObject("InternetExplorer.Application")
  ・それに対してNavigate2 URL (これまでどおりの処理)
・IEインスタンスが存在する→
  ・インスタンス取得
  ・それに対してNavigate2 URL, navOpenInNewTab
  ・新規タブで作った新インスタンスを取得、それに対して巡回操作

こう改造することで、1つの窓の複数タブにまとめることができました。
縮小表示で複数の巡回を一覧できて快適です。

ただし、IE7beta3がめちゃめちゃ落ちやすい罠。実用にはちょっと厳しいです。
いっぺん落ちるとDOM関係の内部構造がぐちゃぐちゃになるらしく、
IE7を再起動してもDHTML要素が取得できなくなります。
タスクスケジューラでexplorer.exeを全部殺して立ち上げなおすと、なぜか治る。
あと、普通に使ってても、Formで日本語入力できなくなったりすることがやたら多い。

9月のIE7正式版登場までには、もうちょい使い物になるようになってくれないと…。
3626:2006/08/29(火) 01:28:54 ID:o0XsAnyT
Alt + Space を SendInput する .exe を作って
wsh から呼び出すことにして解決しましたです。
37名無し~3.EXE:2006/09/03(日) 02:10:24 ID:9m7JaXWT
フォルダAにあるファイル全てと(サブフォルダ内のファイルを含む)
フォルダBにあるファイル全てを(サブフォルダ内のファイルを含む)比較して
同じファイル名のものがあれば、フォルダAのファイルをフォルダBのファイルに
上書きしたいのですが、どのような繰り返し処理を行えばいいのかわかりません。
初歩的な質問で申し訳ないのですが、どなたか参考になるご意見を聞かせて下さい。
38名無し~3.EXE:2006/09/03(日) 02:23:00 ID:M/8yjKeF
まずFileSystemObjectを使ってフォルダAにあるファイル全てを列挙して
配列(または連想配列)に入れておく。
あとはフォルダBのファイルを1つずつ調べていき、配列に同じ名前があれば
フォルダAのファイルを上書きコピーすればいいんじゃない?

列挙→GetFolder + Files 辺り
上書きコピー→CopyFile もしくは GetFile + Copy 辺り
3937:2006/09/03(日) 23:36:27 ID:9m7JaXWT
>>38
レスありがとうございます。
参考書片手に四苦八苦していたところに
ヒントを頂けて大変助かります。
早速試してみますね。
40名無し~3.EXE:2006/09/04(月) 00:42:41 ID:4RNTB77S
念のため言っとくと、GetFolder + Filesの列挙処理は、再帰的にな。
下層フォルダもぜんぶ処理対象にするためには。
もしわかんなきゃ「再帰」をキーワードに入れてぐぐること。
41名無し~3.EXE:2006/09/04(月) 16:42:27 ID:QYJv5P/p
JScriptからフォルダ共有の解除を行いたいと考えているのですが、外部からアクセスされている場合、
「この操作を続行しますか? (Y/N) [N]:」ってプロンプトが表示されてうまく動きません。
調べた感じでは標準入力(StdIn)に"Y"って送ってあげれば良い気がするのですが、うまく動いてくれません。
私が作ったjsファイルの内容は...

var WShell = WScript.CreateObject("WScript.Shell");
var objNet = WShell.Exec("net share Share /DELETE");
while (!objNet.StdOut.AtEndOfStream)
{
var strLine=objNet.StdOut.ReadLine();
var nPos=strLine.indexOf("この操作を続行しますか?");
if (nPos>=0)
{
objNet.StdIn.WriteLine("Y");
}
}

ちなみに誰も使用していない場合はちゃんと共有が解除されます。
対象はWindows2000 Serverです。
どうすればうまく動くようになりますか?
教えてエライ人!
42名無し~3.EXE:2006/09/06(水) 02:31:02 ID:6VRM8O2+
WShell.Exec("cmd /c echo y | net share airplane /DELETE");

あーあ、なんだよこの旧世代プログラマがやりそうな力技は
こんなことを考えついて試してしまう自分が嫌だ
43名無し~3.EXE:2006/09/06(水) 03:14:37 ID:W4o+AU9u
>>42
なるほどw パイプ便利だな
44名無し~3.EXE:2006/09/06(水) 03:46:18 ID:mG/64ktE
むしろ当然の解決策だと思った
45名無し~3.EXE:2006/09/06(水) 08:24:38 ID:Z523kT6K
stdinを読んでるわけでないようだから>>42もうまくいかない
4641:2006/09/06(水) 11:01:06 ID:B7U19HoE
>>42,43,44,45
レスありがとうございます。
wktkしながら試しましたが私の環境ではダメでした... (´・ω・`)
なんでだろうな...
47名無し~3.EXE:2006/09/07(木) 00:01:08 ID:Sux4zrox
>>46
var prc = GetObject("winmgmts:{impersonationLevel=impersonate}")
.ExecQuery("SELECT * FROM Win32_Share");
for ( var e = new Enumerator(prc); !e.atEnd(); e.moveNext() ) {
var sd = e.item();
if ( sd.Caption == "Share" ) sd.Delete();
}
4847:2006/09/07(木) 00:02:48 ID:7NNz2Yc3
しまった。プロセス操作のヤツからコピペしたから変数名が変だ。
49名無し~3.EXE:2006/09/07(木) 10:45:44 ID:EZRTppgw
>>47
同様のスクリプトを作ってやったことあるけれど
誰かが共有フォルダにアクセスしていると共有解除されないような
5041:2006/09/07(木) 11:25:34 ID:kklWKgcq
>>47
レスありがとうございます。
試したところ無事動作しているみたいです!
もしやあなたはネ申でつか。
...WMIは色々使えそうですね (. .)〆

>>49
簡単にやってみたところ大丈夫そうです。
もう少し色んなケースを試して見たいと思います。

PS.
レスくれた方々ありがとうございます。
51名無し~3.EXE:2006/09/12(火) 17:21:16 ID:6aj+7wdR
指定したフォルダのmp3ファイルをランダムで実行したい。

Set WSHShell = WScript.CreateObject("WScript.Shell")
WSHShell.Run "C:\MP3\*.mp3",3,true

これじゃエラー出るんだけど何故?この場合ってワイルドカード使えない?
52名無し~3.EXE:2006/09/12(火) 17:22:50 ID:8qFdY5Hd
    _, ,_  パーン
 ( ‘д‘)  
   ⊂彡☆))Д´) 
53名無し~3.EXE:2006/09/12(火) 17:47:46 ID:A3UEU+1f
*はランダムではない。
任意の文字列という意味。
Runの引数にワイルドカードなんて認められてない……はず。

ランダムで実行したかったら
すべてのファイルパスを配列にぶちこむ

Rndとかでファイル数以下のランダムな整数作る

それをインデックスにしてファイル実行する


54名無し~3.EXE:2006/09/12(火) 19:29:56 ID:5GCyJ/an
var WSHShell = WScript.CreateObject("WScript.Shell");
var Fso = new ActiveXObject("Scripting.FileSystemObject");
// .mp3ファイル名をmp3[]配列に格納
var folder = Fso.GetFolder("C:\\MP3");
var mp3 = [];
for (var e = new Enumerator(folder.Files); ! e.atEnd(); e.moveNext()) {
    var f = e.item();
    if (/\.mp3$/i.test(f))
        mp3.push(f);
}
var i;
do {
    // ランダムに並べ替え
    for (i = 0; i < files.length; i++) {
        var r = Math.floor(files.length * Math.random());
        var t = mp3[i];
        mp3[i] = mp3[r];
        mp3[r] = t;
    }
    // プレイ
    for (i = 0; i < files.length; i++)
        WSHShell.Run(mp3[i], 3, true);
} while (true); // trueで無限ループ
55名無し~3.EXE:2006/09/12(火) 19:41:04 ID:jll2Gkhp
WSHで、既に作成されているExcelファイルを開き、そこにある
イメージコントロールに画像を表示させるにはどうしたら良いの
でしょうか?

Option Explicit
Dim objExcel
Dim objExcelBook
Dim objExcelSheet

Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
Set objExcelBook = objExcel.Workbooks.Open("D:\Book1.xls")
Set objExcelSheet = objExcelBook.Worksheets(1)

objExcelSheet.cells(1,1).value = "aaa"
objExcelSheet.Image1.Picture = LoadPicture("D:\test.jpg")

objExcel.Quit
Set objExcelSheet = Nothins
Set objExcelBook = Nothing
Set objExcel = Nothing

を実行すると、A1に"aaa"が入る所までは良いのですが、LoadPictureの
行で「致命的なエラーです」が出てしまいます。
おそらく、Image1の指定方法に問題があるかと思うのですが、具体的な
指定方法または、それについて記載されているURLなどを教えて頂けない
でしょうか?
56名無し~3.EXE:2006/09/12(火) 20:01:14 ID:5GCyJ/an
>>54
× files.length
○ mp3.length
です
5751:2006/09/12(火) 23:16:11 ID:rMXBUJr8
>>53
>>54
サンクス。動作は確認できたが、出来ればWSHで書いて欲しかった。javascriptはウヴォア
58名無し~3.EXE:2006/09/12(火) 23:30:42 ID:5MYDPybn
WSH は VBScript だけのもんじゃないよ?
59名無し~3.EXE:2006/09/12(火) 23:36:25 ID:muCQp/dj
JavaScriptもPerlもRubyもPythonも。
60名無し~3.EXE:2006/09/13(水) 00:08:35 ID:ry6CWKuK
あーそうなのかー
無知ですまぬ
61名無し~3.EXE:2006/09/13(水) 10:17:38 ID:74VYdgSO
>>55
> おそらく、Image1の指定方法に問題があるかと思うのですが、
問題ないよ。試しにその前で
MsgBox TypeName(objExcelSheet.Image1)
ってやってみな。これで「Image」が返るなら、正しくImageオブジェクトを参照出来てる。

問題があると言えば、objExcel.Quitの前にobjExcelBook.Closeが必要なのと
Set objExcelSheet = Nothingの、Nothingのスペルが間違ってることくらいだが
エラーが出ている部分は問題なし。おそらく間違ってるのではなく、仕様として出来ないんだろうね。
Picture = LoadPictureをブックのVBAモジュールに書いて、VBSからそのプロシージャを読んでみれば?
画像のパスはVBS側で指定することも可能だし。
6255:2006/09/13(水) 11:01:41 ID:P4go6OWL
>>61
御回答ありがとうございます。

> MsgBox TypeName(objExcelSheet.Image1)
> ってやってみな。

 こうすれば、オブジェクトの確認が出来るんですね。
 やってみた所、「Image」と表示され、参照方法には問題が無かった様です。

> 問題があると言えば、objExcel.Quitの前にobjExcelBook.Closeが必要なのと
> Set objExcelSheet = Nothingの、Nothingのスペルが間違ってることくらいだが

 そこに行く前に、エラーで止まっていたので気付きませんでした。

> おそらく間違ってるのではなく、仕様として出来ないんだろうね。

 御指摘の方法等を含め、別の方法を検討してみます。
6355:2006/09/13(水) 20:42:40 ID:8lTHFtaw
>>61
御指摘の通り、Excel側にVBAを仕込み、VBS側から実行したら画像の表示が出来ました。

やった事は、

1. Module1の下に、下記の様なマクロを仕込む。

Sub Macro1()
Worksheets("Sheet1").Image1.Picture = LoadPicture("D:\test.jpg")
End Sub

2. VBS側のLoadPictureの行を下記の様に変更

objExcel.Run ("Book1.xls!Module1.Macro1")

です。

Macroの実行方法が分からなかったのですが、
http://suiten.wig.nu/index.php?itemid=289
が参考になりました。

今回は、ありがとうございました。
64名無し~3.EXE:2006/09/14(木) 23:27:15 ID:XRemmWNN
VBScriptから別のVBScriptを呼び出すことはできますか?
あとユーザライブラリの関数を呼び出す的なことをしたいのですができますか?
一度作った関数をコピペするのが面倒で。
よろしくお願いします。
65名無し~3.EXE:2006/09/14(木) 23:36:11 ID:6COp2u2i
ファイル読み込んで Eval
後者は意味が良く分からんが ユーザライブラリって何?
66名無し~3.EXE:2006/09/14(木) 23:40:30 ID:8WXwarb4
外部のスクリプトを読み込みたいんでしょ
wshなら素直に.wsfファイル作って、

<package>
<job>
<script language="VBScript" src="外部スクリプト1.vbs" />
<script language="VBScript" src="外部スクリプト2.vbs" />
<script language="VBScript" src="メイン.vbs" />
</job>
</package>
67名無し~3.EXE:2006/09/15(金) 00:22:29 ID:MxvWsxE+
あとついでに、ライブラリはクラス化すると吉。
VBScriptのクラス機能って存在感なさすぎて忘れがちだけどね。
68名無し~3.EXE:2006/09/15(金) 00:49:05 ID:6z+vLxyz
>>65,66,67
ありがとです。外部スクリプトの呼び出しは最初
Set obj = WScript.CreateObject("WScript.Shell")
Set obj2 = obj.Run("RunNotepad.vbs")
ってやってWin32オブジェクトじゃないって怒られたんですが、2行目を
obj.Run "RunNotepad.vbs"
で出来ました。いろんなやり方があるようですね。
ライブラリはクラス化して中にメソッド書けばいいのですかね?
いや、皆さん作られた関数をどうやって再利用されているのかと思いまして。
69名無し~3.EXE:2006/09/15(金) 00:50:34 ID:1e9FhoNf
コピペさ
70名無し~3.EXE:2006/09/15(金) 00:54:36 ID:3qVVhzeE
wsh で使うようなのは書き捨てが基本だな、私は。
String とか Date とか Number とかの prototype にいくつかメソッドは突っ込んでるけど(JScript)。
71名無し~3.EXE:2006/09/15(金) 01:49:36 ID:hZMJWHVe
wshしこしこ書くのとドトネトでアプリ作るのと
作業量が大して変わらないことに最近気付いた
72print.vbs:2006/09/17(日) 03:36:23 ID:pIeGPZjs
ファイルをまとめて印刷するツールです。
'Print files

Option Explicit

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

Dim ws
Set ws = CreateObject("WScript.Shell")

Dim argv,file,name,ret
Set argv = WScript.Arguments

Dim tpad,i,code

If argv.Count > 0 Then
For Each file In argv
If Fs.FileExists(file) Then
name = Fs.GetFileName(file)
Set tpad = ws.Exec("C:\Free\TPad\TeraPad.exe """ & file & """")
WScript.Sleep 100
i=0
Do
ret = ws.AppActivate(tpad.ProcessID)
WScript.Sleep 100
73print.vbs:2006/09/17(日) 03:38:27 ID:pIeGPZjs
i=i+1
If i>100 Then
MsgBox "Activate 失敗 print前"
WScript.Quit
End If
Loop While ret = False
ws.SendKeys "^pp"
WScript.Sleep 5000
i=0
Do
ret = ws.AppActivate(tpad.ProcessID)
WScript.Sleep 100
i=i+1
if i>100 Then
MsgBox "Activate 失敗 print後"
WScript.Quit
End If
Loop While ret = False
tpad.terminate
set tpad = Nothing
Else
MsgBox file & "というファイルは存在しません。"
End If
Next
Else
MsgBox "ファイルをD&Dしてください"
End If
74print.vbs:2006/09/17(日) 03:56:30 ID:pIeGPZjs
ソースが無駄に長くてすみません。そういう書き方がしみ付いているもので

前スレまであったソースアップ板は、無くなったのでしょうか?

使い方は、印刷したいファイルをドラッグ&ドロップするつもりで作ったのですが、
過去スレを読みなおして見るとSendToで使うほうが便利そうです。

中でteraPadを呼び出しています。(作った当時使っていたエディタだったので)
sendkeysで操作しているだけなのでそういう操作ができるほかのエディタ用にも書きかえれると思います。

一応私の環境(Win98)では、3,4ページのファイル4,5個は、まとめて印刷できました
あまり大きなファイルを印刷するには、むいていないと思います。

まだあまり、wshにはなれてなくて、マニュアルを見ながら作りました。
sleepの値などもいいかげんで、その辺も含めて添削していただいたらありがたいです。
75名無し~3.EXE:2006/09/17(日) 10:41:23 ID:GAjliUIS
プリントアウトはFileSystemObjectを使って出来たはず、と思って
ttp://www.microsoft.com/japan/msdn/columns/server/server033099.aspx を参考に
こんなん書いてみたけど、エラーは出ないのにプリントアウトできない。なんで?
\\MyPC\BJF9000 はUSBポートに接続したプリンタで、共有してます。

var fso = new ActiveXObject("Scripting.FileSystemObject");
var objWSHNet = new ActiveXObject("WScript.Network");
objWSHNet.AddPrinterConnection("LPT2:", "\\\\MyPC\\BJF9000");
var printer = fso.CreateTextFile("LPT2:", true);
try { printer.Write("printout test");} catch(e) {;}
printer.Close();
objWSHNet.RemovePrinterConnection("LPT2:");
76print.vbs:2006/09/17(日) 14:54:53 ID:pIeGPZjs
>>75

AddPrinterConnection
リモートの MS-DOS ベースのプリンタ接続をコンピュータ システムに追加します。

ちょっと前、メーカーに
「プリンタ(CANON PIXUS 550i)をMS-DOSで使えるようにできるかどうか」たずねたところ、
「MS-DOSで使えるようにはできない」という回答でした。
多分私の環境では、このスクリプトは使えないと思います。
77名無し~3.EXE:2006/09/17(日) 15:50:48 ID:8OXBNlvH
WshScriptExec オブジェクトについて質問させてください。

var sh = new ActiveXObject("WScript.Shell");
var exe = sh.Exec("cmd.exe /c dir");
while (exe.Status == 0) { WScript.Sleep(100); }
WScript.Echo("完了");
if (!exe.StdOut.AtEndOfStream) { WScript.Echo("出力結果\n" + exe.StdOut.ReadAll()); }

上記のスクリプトで "cmd.exe /c dir" を実行して結果を取得しようとしています。
しかしファイル数の多いフォルダではいつまで待っても (exe.Status == 1) になりません。
どうやら StdOut の容量制限があり、Read されるまで実行が止まってしまうようです。

(exe.Status == 1) を待たずに StdOut.ReadAll() をすればすぐに終了するのですが
StdOut.ReadAll() は、EOFまで(プログラム終了まで)帰ってきませんので
実行待ちの間に Terminate() したりすることができなくなってしまいます。
StdOut.Read() も入力があるまで待つので使えません。

良い解決策はないでしょうか?
78名無し~3.EXE:2006/09/17(日) 16:36:09 ID:RpCl687c
>>77
こういうふう(↓)にはしたくないってことかな

var sh = new ActiveXObject("WScript.Shell");
var exe = sh.Exec("cmd.exe /c dir");
var dir = [];
while (! exe.StdOut.AtEndOfStream) { dir.push(exe.StdOut.ReadLine()); }
WScript.Echo("完了");
WScript.Echo("出力結果\n" + dir.join("\n"));

それなら、こういうのは?

var sh = new ActiveXObject("WScript.Shell");
var dirfile = "dir.txt";
var exe = sh.Exec("cmd.exe /c dir > " + dirfile);
while (exe.Status == 0) { WScript.Sleep(100); }
WScript.Echo("完了");
var fso = new ActiveXObject("Scripting.FileSystemObject");
var f = fso.OpenTextFile(dirfile);
WScript.Echo("出力結果\n" + f.ReadAll());
f.Close();
79目民 ◆xQYoLwVGxQ :2006/09/17(日) 16:41:19 ID:oMWuro07
まぁ、>>78と同じだけど。

var sh = new ActiveXObject("WScript.Shell");
var exe = sh.Exec("cmd.exe /c dir");
var str = "";
while (!exe.StdOut.AtEndOfStream){
    str += exe.StdOut.ReadLine() + "\n";
}
WScript.Echo("完了");
WScript.Echo("出力結果\n" + str );

ファイルの多いフォルダで実行してみると、最後の一行に異常に時間がかかるね。
実用的側面からは、単にファイルにリダイレクトするのが早いと思う。
8077:2006/09/17(日) 17:30:31 ID:8OXBNlvH
>>78-79様ありがとうございます。

最終的には hta でつかおうと思ってるんですが
StdOut.ReadLine(), Read(),ReadAll() を使うと出力待ちの間、どうしても画面がフリーズしちゃうんです。
出力がない時は StdOut.AtEndOfStream が true になってくれればいいのですが・・・

あんまりファイルに書き出したくないのですが、やっぱそうするしかないでしょうか。
81目民 ◆xQYoLwVGxQ :2006/09/17(日) 17:52:05 ID:oMWuro07
>>80
while (!exe.StdOut.AtEndOfStream){
    str += exe.StdOut.ReadLine() + "\n";
    // ココで必要な処理
}
じゃ、ダメなの?
8277:2006/09/17(日) 18:24:19 ID:8OXBNlvH
>>81
そこで Sleep() や setTimuout() しちゃうと 時間がかかりすぎるし
どっちにしても ReadLine() のところで止まっちゃうので・・・

あ、すいません。実際には dir だけじゃなくて時間のかかるコマンドも使いたいと思ってます。
83名無し~3.EXE:2006/09/17(日) 18:30:11 ID:DkiP0mWC
84目民 ◆xQYoLwVGxQ :2006/09/17(日) 18:32:31 ID:oMWuro07
>>82
なるほど〜。
やっぱり、ファイルに書き出すのがいいと思うよ。
8577:2006/09/17(日) 20:06:55 ID:8OXBNlvH
ファイル使うことにします。わがまま言ってすみません。
しかし >>83 すごいですね。
これだけ苦労されてるということはやっぱ簡単な方法はないということですね。
86名無し~3.EXE:2006/09/18(月) 16:03:23 ID:0Yyqe12A
87dir_+w.vbs:2006/09/18(月) 21:14:02 ID:TkVYNr1Z
フォルダを再帰的に検索して中のファイルを書きこみ可能にする

' chmod +w **

Set fso = WScript.CreateObject("Scripting.FileSystemObject")

Sub FileRW(filespec)
Set f = fso.GetFile(filespec)
ReadOnly=1
If f.attributes and ReadOnly Then
f.attributes = f.attributes - ReadOnly
End If
End Sub

Sub FolderRW(filespec)
Set subf = fso.GetFolder(filespec)
For Each FileName In subf.Files
FileRW(FileName)
Next
For Each FolderName In subf.Subfolders
FolderRW(FolderName)
Next
End Sub
88dir_+w.vbs:2006/09/18(月) 21:14:40 ID:TkVYNr1Z
Set argv = WScript.Arguments
If argv.Count <= 0 Then
Wscript.Echo "ファイルをD&Dしてください"
WScript.Quit
End If
For Each file In argv
If fso.FolderExists(file) Then
FolderRW(file)
ElseIf fso.FileExists(file) Then
FileRW(file)
Else
Wscript.Echo file & "というファイル・フォルダは存在しません。"
End If
Next
Wscript.Echo "書きこみ可 終わり"
89dir_+w.vbs:2006/09/18(月) 21:21:50 ID:TkVYNr1Z
こんなのwshで書かなくても標準のやり方があるのでしょうか?

いろいろなところのサンプルプログラムをつぎはぎして作ったので自信がないです。
特にBASICでの再帰呼び出しが。
間違いや他のやり方があったら指摘してください。

一応自分で動作チェックした限りは正常に動いているみたいです。
90名無し~3.EXE:2006/09/18(月) 21:35:28 ID:IGnQYkUN
attrib /s -r *.*
91名無し~3.EXE:2006/09/18(月) 21:35:41 ID:1rgAgV0s
attrib -r %1 /s /d
9289:2006/09/18(月) 22:13:54 ID:TkVYNr1Z
>>90 >>91
試してみたのですが、うまくいきません。
win98ではできないんじゃないでしょうか
93名無し~3.EXE:2006/09/18(月) 23:23:17 ID:j9Uaecc1
cygwinでchmod -R +w でできないかな?
94名無し~3.EXE:2006/09/19(火) 03:10:53 ID:+HpwiHbO
>>92
できる。コマンドプロンプト開いて attrib /? してみ。
95名無し~3.EXE:2006/09/19(火) 03:26:44 ID:X9V4Hq4y
>>93
UnxUtils の chmod でできました。

cygwin は、昔入れて日本語化するだけで一週間ぐらいかかっていたような気がするので
とりあえずパス

>>92は、今から試します
96名無し~3.EXE:2006/09/19(火) 03:30:30 ID:PvS6FX5U
システムついてると一緒に指定しないと外せなかったりとか
変な規制がついてるよね。あととりぶ
97名無し~3.EXE:2006/09/19(火) 03:39:25 ID:X9V4Hq4y
>>94
attrib /? を行うとフォルダも受け付けるようなニュアンスなんですが、
実際に試してみるとファイルは受け取るけど、フォルダはだめみたいなんですが?
9877:2006/09/19(火) 12:50:31 ID:PvS6FX5U
>>86
どうもです。

すれ違い気味(htaねた)でわるいけど、
Exec() の代わりに Run()を使ったら実行中でもhtmlがフリーズしないことがわかった。

これってJavaScriptでマルチスレッドみたいな動作だけど、普通に使ってても大丈夫なのかな?
99名無し~3.EXE:2006/09/20(水) 14:48:55 ID:NLxtOcqj
98の頃のバッチファイルを見つけた。

ffind . -attr dh | xargs attrib -h

ATTRIBでディレクトリを操作するときは1個ずつでないと駄目なようだ。
ffindもxargsも外部ツールなので、OS標準コマンドだけでは一括は無理だったのかも。
100名無し~3.EXE:2006/09/24(日) 22:24:37 ID:zXp/H8j6
ネット株取引でEトレを使っていますが
wsh で自作した便利なツールがあれば、ただで暗号化しないでクレ。
101名無し~3.EXE:2006/09/25(月) 02:23:37 ID:VGXX8PLt
見積もりは無料ですよ?
102名無し~3.EXE:2006/09/26(火) 20:51:06 ID:OGK5SGUc
作ってもらうほどではないので退散します。
103名無し~3.EXE:2006/09/28(木) 13:45:46 ID:P5EUWFW0

Windows Script File( .wsf )についての質問です。OSはWinXP SP1。
wsfは
<script language="VBScript" src="パス"/>
と定義すると、src属性値で指定したパスのファイルを参照できますが、
特定のディレクトリに置いたvbsを、別のディレクトリに置いたwsfから
ファイル名のみで参照する方法を教えてください。

相対パスが使えるので、同一ディレクトリに置けば、ファイル名のみで参照可能ですが
別ディレクトリの場合は、もちろんそのままではファイル名のみでの参照は出来ません。
パスを通せば出来るかとも思ったのですが、パスを通してもダメでした。
(WshShell.Runではファイル名だけで呼べるので、パスがきちんと通っているのは間違いないのです。)
参照するvbsを置くディレクトリは固定ですが、wsfは別ドライブに置く可能性もあるし
作成後、移動する可能性もあります。wsf、vbs側では、もう出来ることは無いので、
後はOS側の設定になると思いますが、どこをどのようにすれば解決するかが解りません。
どうかご教示願います。
104名無し~3.EXE:2006/09/28(木) 16:34:28 ID:H6IHIklM
htmlと同じ要領でいいんじゃないの?

test1.wsf
└testfolder
  └test2.vbs
って配置した時、

testfolder/test2.vbs
or
./testfolder/test2.vbs
でパスを指定したら動いたぉ
105名無し~3.EXE:2006/09/28(木) 16:37:36 ID:H6IHIklM
ごめん、ちゃんと読んでなかった
wsfはいろいろ動かすのね
誰かまかせた
106目民 ◆xQYoLwVGxQ :2006/09/28(木) 17:31:22 ID:McUJ8oIU
>>103
"VBSDir"みたいなユーザー環境変数を作って、
(システムのプロパティ→詳細設定タブ→環境変数(XPの場合))

var WshShell = WScript.CreateObject ("WScript.Shell");
with( WshShell ){
    CurrentDirectory = ExpandEnvironmentStrings("%VBSDir%");
}

とか?

// VBSの話なのにJScriptだけど気にしないでw
107名無し~3.EXE:2006/09/29(金) 15:56:35 ID:KPftmCI3
>>103
WSCを使う。
108名無し~3.EXE:2006/09/29(金) 16:18:18 ID:KPftmCI3
>>72
terapadには/pがないのかと思ったらあるじゃないですか。
terapad.exe /p
じゃ駄目なの?
109103:2006/10/01(日) 11:02:53 ID:WUxruDIK
>>106
残念ながらダメでした。
ご教示いただいたものを参照を書いてる行の前に入れても、
job分けしても、コードが実行される前に参照が評価されてしまうようで
ファイルが見つからないというエラーが出ます。

>>107
現在いくつか使ってます。
しかしwscは>>103の条件を満たしていません。なぜならwscは1ファイル単位の登録が必要で、
「特定のディレクトリに置いた」もの全てに対して有効になるようなものではないからです。
レジストリを使うのは全く構いませんが、「特定のvbs」ではなく「特定のディレクトリに置いたvbs」に
有効な方法をお願いします。
特定のディレクトリに置いた物を個別登録無しで使える方法があるならwscでも構いませんが。



ということで、ご回答には感謝しますが解決には至っておりませんので引き続き宜しくお願いします。
110名無し~3.EXE:2006/10/01(日) 11:27:13 ID:Mjb4Qp/j
ディレクトリさえ分かったならあとはファイル読み込んで Eval で評価すれば良いじゃん?
111名無し~3.EXE:2006/10/01(日) 12:27:11 ID:kCPKYKBO
wscの中に
<script language="VBScript" src="パス"/>
を並べて、
wsfからは、
wsc.メソッド名
で呼び出せ。
という意味だったけど通じなかった?
getobject("script:wscのフルパス")ならレジストリは不要だけど、これはどっちでも。
112名無し~3.EXE:2006/10/01(日) 16:52:54 ID:kCPKYKBO
>>75
form feed \f を送るとか。
113名無し~3.EXE:2006/10/02(月) 04:29:12 ID:+WL/W97H
>109
ここで究極の選択。スクリプトで wsf ファイルを書いて実行。
114名無し~3.EXE:2006/10/02(月) 19:14:34 ID:bWQ93X+m
すいません。知ってたら教えて頂きたいんですが
WScript.CreateObject(strProgID[,strPrefix])
などで作成したオブジェクトのプロパティやメソッドを調べる方法ご存知の方いますか?
115名無し~3.EXE:2006/10/02(月) 19:19:41 ID:9vzbPfN/
116名無し~3.EXE:2006/10/02(月) 20:00:19 ID:kbswuek+
>>111
wscの<script>にsrc属性が使えるなんて初耳だけどできるの?
仕様的に他のファイルに実装を書けるとは思えんのだが
117名無し~3.EXE:2006/10/02(月) 20:21:15 ID:V60uXU1H
118114:2006/10/02(月) 21:36:01 ID:bWQ93X+m
>>115,117
私の探し方が足りなかったみたいですね
解決しました、ありがとうございます
119名無し~3.EXE:2006/10/06(金) 21:09:26 ID:e+UOKJbW
DynaCallにEnumWindowsのサンプルがついてますが、
これを参考に特定文字列を含むウインドウにメッセージを送るってのを作ったのだけど、
なんかClassなのに変にグローバルになってて、どれをどう再利用できるのかよくわからんのです。
うまくカプセル化できませんか?
120名無し~3.EXE:2006/10/06(金) 22:28:17 ID:drRRZZ4o
日本語でおk
121名無し~3.EXE:2006/10/14(土) 17:33:06 ID:COmDsoWy
hosyu
122名無し~3.EXE:2006/10/14(土) 22:13:32 ID:kOCNeboH
DOS窓から行う作業があったので、wscript.execにやらせようとしているのですが、DOS窓では数秒で完了するコマンドがexecでは動作中のまま帰ってきません。
動くコマンドと動かないコマンドがあったりするのでしょうか?
ちなみに動かそうとしているのは業務用のソフトです
123名無し~3.EXE:2006/10/14(土) 22:27:57 ID:3YNrV18h
そもそも WScript オブジェクトに exec メソッドなんて無かったような気がするのだが。
何を以て返ってこないと判断したのか分からんし。
124名無し~3.EXE:2006/10/14(土) 22:52:54 ID:kOCNeboH
WshScriptExec の間違いでした
DOSだとすぐ出力結果のファイルが出来るんですが、WshScriptExecだと黒いウィンドウが開いてそこから進まないです
125名無し~3.EXE:2006/10/15(日) 00:23:27 ID:0zheqdL0
プロンプト画面に何も出力されないのは仕様。
WshScriptExec オブジェクトは StdIn / StdOut プロパティ使って入力したり出力受け取ったりする。
MSDN にサンプルコードも多分あるだろ。
進まないってのは入力待ちしてるんじゃね?
126名無し~3.EXE:2006/10/15(日) 00:44:16 ID:bYSqBt4L
>>122
以下のVBSスクリプトが参考になるかも。

Option Explicit
Dim ws,i
Set ws = CreateObject("WScript.Shell")
i = ws.Run("%COMSPEC% /C DIR C:\ > C:\sample.log" , 1, true)
ws.Run "NOTEPAD C:\sample.log" , 1, true
Set ws = Nothing
WScript.Quit(i)
127名無し~3.EXE:2006/10/15(日) 21:08:26 ID:Tn/lrPJD
私も122さんと同様にDOSの業務用ソフトをwshで動かそうとしているのですが、
以下の部分が分からず困っています。便乗して質問させてください。

動かそうとしているDOSの業務ソフトは実行するとメニューが出力され
メニューから番号を選択して、出力ファイルを得るものなのですが、
番号の選択を自動化したいと思い、「入力=」が表示されたら、
Sendkeysをしようと以下のようなvbsを作成したのですが、
Exec メソッドがプログラムの実行終了後に行われるため、
業務ソフトが終了するまで、StdOutが取得できず困っています。


Set ws = CreateObject("WScript.Shell")
Set wsExec = ws.exec("業務ソフト.exe")

Do Until wsExec.StdOut.AtEndOfStream
If InStr(strLine,"入力=") <> Then
wsExec.Sendkeys.("1")
End If


Loop


メニューが出力されるDOSをwshから操作する良い方法がありましたら
教えてください。
128名無し~3.EXE:2006/10/15(日) 21:21:46 ID:ZvvyBgQg
StdIn 使えばいいんじゃね?
と思ったが GUI アプリか? それにしちゃ StdOut 読んでるよな。
つか strLine が書き変わってないようだが。

> Exec メソッドがプログラムの実行終了後に行われる
の意味が分からん。
129名無し~3.EXE:2006/10/15(日) 22:05:37 ID:Qx1lq3WL
strLine = wsExec.StdOut.ReadLine は要らないの?
InStr(strLine,"入力=") > 0 じゃないの?
SendKeys と ("1") の間にある . は必要なの?

ごめん、VBScriptはあんまわかんないけど、これは明らかに動くわけないよね。
130127:2006/10/15(日) 22:08:50 ID:Tn/lrPJD
>>128さん
127のvbsを実行すると、DOS窓で黒いウィンドウが開いた状態で業務アプリが
入力待ちになったまま止まってしまいます。
StdOutが出来ているかを確かめるために、127のIf文を以下のように書き換えて
実行しました。

If InStr(strLine,"入力=") <> Then
  WScript.Echo strLine
End If

DOS窓で黒いウィンドウが開いた状態で業務アプリが入力待ちになり、
ずっと止まったままになります。
真っ黒で止まっているDOS窓に業務ソフトを終了させる番号の「9」を入力すると
WScript.Echo strLine が実行され、
メッセージボックスに「入力=」が表示されました。

某HPでExecメソッドは、Execを使って実行されたスクリプトまたはプログラムの実行終了後、
実行開始前のいずれかに行われると書いてあったので、業務ソフトが終了するまで
メッセージボックスが表示されなかったのかな?と思ったのです。

勘違だったらすみません。
131名無し~3.EXE:2006/10/15(日) 22:23:29 ID:bYSqBt4L
>>130
例えば"1"の1バイト分だけ記録されたテキストファイルを"stdin.txt"とすると、コマンドプロンプト画面で

業務ソフト.exe < stdin.txt

と打ち込んで実行させる事はできる?
もしできるのであれば、>>126の応用で解決できそうな気がするんだけど・・・
132127:2006/10/15(日) 22:35:28 ID:Tn/lrPJD
>>129さん
>SendKeys と ("1") の間にある . は必要なの?

ご指摘の通り、間違いです。お恥ずかしい。

>>128さん
その業務ソフトはGUI アプリというか、
DOS窓に
==メニュー===
 1)実行
 2)変更
 9)終了
入力=

のように表示され、DOS窓にメニューの番号を
入力するようなタイプのアプリです。
Sendkeysで番号を自動入力できないかなっと思ってWSHを調べながら
始めてみたのですがどうも難しくって・・
133127:2006/10/15(日) 22:42:05 ID:Tn/lrPJD
>>131さん
レスありがとうございます。

業務ソフト.exe < stdin.txt

もDOS窓で直接試してみたのですが、
メニューの後に複数のメニュー画面が続くせいか、
stdin.txtに選択したい番号を記述して実行では思うような結果が
得られませんでした。
134名無し~3.EXE:2006/10/15(日) 22:58:29 ID:Qx1lq3WL
え、てか Exec の戻り値の WshScriptExec に SendKeys なんてメソッドはないんじゃ。
wsExec.StdIn.Write "1" & VbCrLf
とかじゃないとダメでしょう。
135名無し~3.EXE:2006/10/16(月) 11:08:32 ID:FXtLk26/
1{Enter}なら、
(
ECHO 1
MORE
) | 業務ソフト.exe
136名無し~3.EXE:2006/10/16(月) 13:42:42 ID:FXtLk26/
Set wShell=CreateObject("WScript.Shell")
wShell.Run """業務ソフト.exe"""
Do While Not wShell.AppActivate("タイトル")
WScript.Sleep 100
Loop
wShell.SendKeys "1{Enter}"
137名無し~3.EXE:2006/10/17(火) 00:39:00 ID:MOegLLqX
>>127
ReadLineじゃ駄目なのは、「入力=」の最後に改行がないからだと思う。
>>130の「止まったまま」というのは改行待ちしてる状態と予想。

Read(1) で一字ずつ読みながら「入力=」との一致をチェックすればいけるかもよ。
一致したところでReadを止めてWrite。
138名無し~3.EXE:2006/10/17(火) 13:34:51 ID:oUFoO9T0
VBScript使用で、a.vbsはmusic1.mp3を再生する。b.vbsはmusic2.mp3を再生する。

最初にa.vbsを実行して、曲の再生が終わったら自動でb.vbsを実行することは可能ですか?
つまり、曲が終わったことを何らかの形で取得することは出来ますか?
139名無し~3.EXE:2006/10/17(火) 14:11:45 ID:cfn5xPeC
>>138
頭を柔軟に。
VBSで曲が終わったことを検知する方法ばかりに拘らないで
曲が終わったことをVBSに検知させられるような再生方法というのを考えてみよう。
答えはすぐ出るはずだ。
140138:2006/10/17(火) 14:58:00 ID:oUFoO9T0
感謝です。色々やってみたのですが、

Set WSHShell = WScript.CreateObject("WScript.Shell")
WSHShell.Run "music1.mp3",1,true
WSHShell.Run "b.vbs",1,true

これだと、曲が終わった後にwinampを手動で終了させることでb.vbsが実行されることになります。
自動で実行するにはどうしたらいいでしょうか・・・
141名無し~3.EXE:2006/10/17(火) 15:36:42 ID:muV3yV8A
music1.mp3
music2.mp3

ってm3uファイルに書き出してvbsで実行

じゃ駄目?
142138:2006/10/17(火) 15:43:39 ID:oUFoO9T0
>>141
最終的に、複数のm3uファイルを用意して、一曲再生されるごとに別のm3uに移動する、
という方法にしたいの不可です。すまぬ。
143名無し~3.EXE:2006/10/17(火) 22:23:32 ID:V4I4jpE0
>>140
Set WSHShell = WScript.CreateObject("WScript.Shell")
WSHShell.Run "%COMSPEC% /C START /W music1.mp3",1,true
WSHShell.Run "b.vbs",1,true

これはどう?
144名無し~3.EXE:2006/10/17(火) 22:28:18 ID:CmV+fzlF
つかアプリ決め撃ちでない以上どうしようもないんじゃない?
再生が終わったからってアプリそのものが終了するとも限らないんだし。
145名無し~3.EXE:2006/10/17(火) 22:42:21 ID:V4I4jpE0
>144
ほとんどの再生ソフトは、再生終了時にソフト自体も終了させる事ができるだろ。
それに質問者本人は>140で再生ソフトがWinampという海外製の定番フリーソフトである事を
晒しているから、イザとなればどうにでもなるんじゃないかな?
146名無し~3.EXE:2006/10/17(火) 22:45:40 ID:kaR5WnBM
>>142
最初に複数のm3uファイルを読み込んで、vbsで合成したm3uファイルを作成後、再生するとか。
147138:2006/10/18(水) 01:23:50 ID:rHQCrCuO
再生終わったとあとに、どうしてもアプリを一旦終了させる必要がありそうですか。
流石にそれは無駄な動作なので避けたい所ですが('A`)  ちなみに再生はwinampでも何でもいいです。

>>143
コマンドプロンプトが邪魔に感じてしまう('A`)  でも工夫次第で何とかなるかも

>>146
プレイリストに手を加えるというのはアリかも


みなさんありがとうございました。何とかやってみます。
148名無し~3.EXE:2006/10/18(水) 01:47:36 ID:u9ZZOnu7
HTAで、こんな感じ。
<object id=WMP classid="clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95">
</object>
<script language=vbscript>
wmp.ShowAudioControls=True
wmp.AutoStart=True
wmp.Open "C:\...\....mp3"
</script>
<script language=vbscript for=WMP event="EndOfStream(Result)">
MsgBox Result
window.close
</script>
149名無し~3.EXE:2006/10/18(水) 03:35:55 ID:d04WcGTs
>>148に似てるけどこれを応用するとか( .htmでなく .hta です)

<html>
<head>
<script>resizeTo(269, 283);</script>
<hta:application /><title>Player</title>
<style>body{margin:0px}</style>
<script>
var Playlist = ["C:/WINDOWS/Media/tada.wav", "C:/WINDOWS/Media/chimes.wav"];
function Play() { Player.URL = Playlist.shift(); }
</script>
</head>
<body onload="Play()">
<object id="Player" classid="clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6"></object>
<script for="Player" event="playStateChange(NewState)">
if (NewState==1) {
if (Playlist.length)
setTimeout("Play()", 1000);
else
window.close();
}
</script>
</body>
</html>
150名無し~3.EXE:2006/10/18(水) 19:45:28 ID:u9ZZOnu7
原始的に、
mplay32.exe /play /close "...mp3"
151名無し~3.EXE:2006/10/20(金) 17:33:52 ID:wRng55we
WSHを使う上でのjsとvbsの違いって何ですか?
152名無し~3.EXE:2006/10/20(金) 17:54:19 ID:UVRHvNiX
違いはないと思うよ。

言語の仕様上、vbsの方がfor eachとかでファイル再帰とかやりやすいけど。
おれはVBっぽいのに拒否感があるので、見た目Cっぽいjsを主に使ってる
153名無し~3.EXE:2006/10/20(金) 18:17:10 ID:Ut0WGun7
>>151
JSは引数の参照渡しができないのが致命的欠点。
JSのいい加減な配列になれていると、VBSの配列は使いにくい。
使いにくい分実行速度はVBSが有利。
154名無し~3.EXE:2006/10/20(金) 20:30:17 ID:xavmQ34J
大文字と小文字を打ち間違えて、なんでエラーになるんだー、と悩むのが嫌でVBScriptです。

155名無し~3.EXE:2006/10/20(金) 21:14:36 ID:XTKLReLW
>>153
オブジェクトは参照渡しじゃね? 文字列とか整数みたいな、プリミティブな型は値渡しだけど。
でも、やろうと思えばオブジェクトを媒介にして参照渡しはできる。

function hoge(o) {
o.a += 10;
o.b -= 10;
}
var o = { a: 10, b: 10 };
hoge(o);
WScript.Echo( o.a + "\n" + o.b );


個人的には、正規表現が組み込まれてて文字列処理に強いのと、
プロトタイプ指向なOOPが好きなので、JavaScript 使ってます><
でも、VBSにもJSにもそれぞれ良いところがあるから、結局自分で選んだ方がいいね。
156名無し~3.EXE:2006/10/20(金) 21:26:38 ID:/EMq1zH6
>>155
参照の値渡し、と言うべきかな。

JScript は(ECMAScript は、なのかな)正規表現が言語組み込みな割りに
グローバル変数に結果が格納されるという謎仕様が台無し感たっぷり。
157名無し~3.EXE:2006/10/20(金) 21:35:11 ID:Ut0WGun7
>>155
自作関数ではなくて、引数に値を返してくるCOMがやっかいなのよ。
おれもJSの方が楽なのでCOM周辺だけVBS使ってる。
158名無し~3.EXE:2006/10/20(金) 21:46:52 ID:XTKLReLW
>>156
> グローバル変数に結果が格納される
RegExp オブジェクトの事かな?
match メソッドとか exec メソッドとか、結果をちゃんと返してくれるんだから
RegExp オブジェクトを使わずに返り値を使うようにすれば済む話では?

>>157
なるほど。それはやっかいですね(´・ω・)
159122,124:2006/10/20(金) 22:07:43 ID:G2VMMq1m
業務ソフトをwshshell.execで走らせると窓が止まってしまうと言っていた者です。
wshshell.run で同じコマンドを走らせると動きました。
stderrが使えないのが不満ですが・・・

runとexecで使えるコマンドに違いがあるのでしょうか?文字数とか使用できる文字とか。
160名無し~3.EXE:2006/10/20(金) 22:11:13 ID:Ut0WGun7
stdoutかstderrのバッファがあふれてるとか?
161122,124:2006/10/20(金) 22:23:31 ID:G2VMMq1m
>>160 バッファあふれ対策ってあるのでしょうか?runだと不便で不便で
162名無し~3.EXE:2006/10/20(金) 22:37:34 ID:Ut0WGun7
Readすりゃいいけど、stdoutとstderrの両方があふれる可能性がある場合はお手上げ。
ファイルにリダイレクトすれば・・・・・Runと変らないw
163名無し~3.EXE:2006/10/20(金) 22:37:50 ID:xavmQ34J
パイプはタンクじゃないんだから、出口から読み出さないと、入り口へ書き込めないよ。
164名無し~3.EXE:2006/10/20(金) 22:40:50 ID:xavmQ34J
Set oExec=wShell.Exec("cmd.exe /c,""業務アプリ.exe"" 2>&1")
hoge=oExec.StdOut.ReadAll()
165122,124:2006/10/20(金) 22:47:21 ID:G2VMMq1m
皆さんありがとうございます
DOS窓やrunで実行するとメッセージが1〜2秒くらいスクロールしていますからたぶんstdoutのバッファあふれだと思います。
月曜日に>>164 を解読して応用してみたいと思います。
166名無し~3.EXE:2006/10/21(土) 00:22:05 ID:EplX6k6g
C:\> type test01.js
p = function(s) { WScript.Echo(s); }

re = /^ABC(.*)$/i;

if(r1 = "abcdefg".match(re)) {
if(r2 = "abcxyz".match(re)) {
if(r3 = re.exec("abchijkl")) {
if(r4 = re.exec("abcllll")) {
p(r1[1]);
p(r2[1]);
p(r3[1]);
p(r4[1]);
}
}
}
}

C:\> cscript test01.js
Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

defg
xyz
hijkl
llll

C:\>
167名無し~3.EXE:2006/10/22(日) 01:06:53 ID:2EaEsyDk
VBSの正規表現って「任意の文字列」ってありますか?
いろいろネットで調べたんですが「.」が任意の一文字っつーのはわかったんですが
どうしても任意の文字列が見つからんのです。
そういう正規表現はVBSではサポートされてないのでしょうか?
ちなみにやりたいことは、テキストから「〜ABC」という文字列を検索して
replaceで「XYZ」に置換したので、「〜」の部分を正規表現で表せないのかなと。
168名無し~3.EXE:2006/10/22(日) 01:13:55 ID:liwxrQBE
終了条件(ABC)は分かった。
開始条件は何よ。
169名無し~3.EXE:2006/10/22(日) 01:30:45 ID:sou1ELwq
> 「任意の文字列」

普通に".*"だろ(空文字列も含む)
170名無し~3.EXE:2006/10/22(日) 02:38:07 ID:SSdwCjK5
検索: .+ABC
置換: XYZ

もちろん、テキストの先頭から ABC まで「任意の文字列」として置換の対象になります^^
171167:2006/10/22(日) 11:14:01 ID:2EaEsyDk
>>168
>>169
>>170
レスサンクスです。

>>168
開始条件はありません。先頭から「ABCで終わる」文字列をXYZに置換したいのです。
「あいABC」「かきくABC」「さしすせABC」をXYZへ置換したいのです。

>>169 >>170
「.*」「 .+」さっそく試してみます。
ちなみにこの2つは全く同じという解釈でいいですか?
172名無し~3.EXE:2006/10/22(日) 11:23:38 ID:liwxrQBE
>>171
> 先頭から「ABCで終わる」文字列
あるじゃん、開始条件。>先頭から

* や + は正規表現の超基本なのでそれくらい調べれ。
わざわざ別の文字を割り当ててる以上別モンである。
173目民 ◆xQYoLwVGxQ :2006/10/22(日) 11:29:46 ID:2pGZNsvG
>>171
「開始条件はない」と言ってるけど、無意識に
空白文字以外で始まる文字列を前提にしているんじゃないの?
それなら、「\S*ABC」でやってみるといい。
174名無し~3.EXE:2006/10/22(日) 12:22:00 ID:8Mbhr02c
>>171
こういう処理に慣れてないとしょうがないけど、条件の書き方があいまい。

> 先頭から

どの先頭から?

行なの? 単語なの?

単語としたら、単語ってなに?

>>173 が言うように空白意外の塊?

> 「ABCで終わる」文字列

文字列ってなに?

例えば、"あいABCD" は、"XYZD" に変換されてもいいの?

あと細かいところだけど、〜ABC の「〜」の部分は、空でもいいの?
175名無し~3.EXE:2006/10/22(日) 15:27:40 ID:N3BdT48Y
「あいABC」「かきくABC」「さしすせABC」をXYZへ置換したいのです。
----------------------------------------------------------
というのがどういう状況でデータになっているのかが重要、

あいABC
かきくABC
さしすせABC
おばかXXX

というように、データが一行に一個あるのか。
あるいは文章がずらずらと並んでいるのか。その場合、先頭って何?

あいABCでかきくABCがさしすせABC

なのか?
正規表現は行頭、行末もマッチさせることができるし、それらの情報
なくして回答なしだよ。
176名無し~3.EXE:2006/10/22(日) 21:18:46 ID:OIBpBobZ
WSHをはじめたいけど、何からはじめたらいいのかわかりません。


環境:WindowsXP SP2
PG経験:Cをちょっと
177名無し~3.EXE:2006/10/22(日) 21:24:38 ID:mrzCrOm0
>>176
まずはWMIあたりから始めると面白いかも。
178名無し~3.EXE:2006/10/22(日) 21:29:03 ID:vQXb6UKC
>>176
必要になったらやればいいのに、、、
179名無し~3.EXE:2006/10/22(日) 22:13:29 ID:EOcMerY5
>>176
つまり、>>1
180名無し~3.EXE:2006/10/22(日) 22:55:08 ID:afcuKUls
>>176
まずは>>2の「Windows Script 5.6 ドキュメント ダウンロード」を落として
隈無く読むこと。今とくにやりたいことも無いならそこから入れ。
まあ、やりたいことがあってもここから入るのが基本だが。
181176:2006/10/22(日) 23:35:43 ID:OIBpBobZ

返信ありがとうございます。

目的は、PCの単純作業を出来る限り自動化です。


「Windows Script 5.6 ドキュメント」を隈なく読みます。
それでわからなかったらまた質問に来させて頂きます。


ありがとう御座いました。
182名無し~3.EXE:2006/10/23(月) 17:09:37 ID:IlmEYWFd
まあでもそのドキュメントがWSHでやれることの全てだと思われても困るが。
183名無し~3.EXE:2006/10/23(月) 22:29:02 ID:p8IXQ+tm
え゛、あのドキュメントが全てだろ。
184名無し~3.EXE:2006/10/23(月) 22:39:08 ID:Mp53qbOD
COM があれば可能性はおおよそ無限だ
185名無し~3.EXE:2006/10/23(月) 23:04:41 ID:BYV9Z446
COMさえあればモテモテだね!
186名無し~3.EXE:2006/10/23(月) 23:07:04 ID:CBFP8CuU
>>182
俺もアレがほぼ全てだと思うけど。そりゃ、COMだのWMIだのを使えば、出来ることの幅は広がるが
それらはWSHの機能でもなければ、WSH専用のコンポーネントですら無いから、(WSH同梱のCOMはあるが)
全てに置いてリファレンスが載ってるわけではないが、それらが利用できることはきちんと書いてあるし。

例えば自分はWSHがサポートしていないxml要素を作り、それを利用して変数の値を保持したり
次回実行時にそれを読み込んだりしているが、wsfがxml準規であることと、COMが使えることが書かれている以上、
定形外のwsfを作りMSXML2.DOMDocumentを利用したこの使い方も、あのドキュメントから導き出される使い方の一つだ。

「加算演算が出来ます」と書かれていたら、1+1の演算が可能です、1+2の演算が可能ですといちいち書かれていなくても
それらの演算が可能なことを意味するのと同じ。言語製品は応用するのは当然のことだが、応用ではなく機能として見た場合に
あのドキュメントに書かれていない機能って何がある?絶対無いとは言い切れないけど、俺はすぐには思いつかないな。
187名無し~3.EXE:2006/10/23(月) 23:40:51 ID:j0qOB48K
3行でかけることをよくもまぁ
188名無し~3.EXE:2006/10/24(火) 00:01:18 ID:wYm/9FA1
別に構わないよ、苦ではないし。
わざわざそいいうことを書き込む理由が分からない。
189名無し~3.EXE:2006/10/24(火) 00:11:33 ID:P1PufmL8
内容が無い書き込みを読む方が苦痛ですぅ
190名無し~3.EXE:2006/10/24(火) 04:22:05 ID:e4iNvxC6
MSDNとか見難くて見てられんのよね・・
191名無し~3.EXE:2006/10/30(月) 00:01:11 ID:/XauOmlM
hozyu
192名無し~3.EXE:2006/10/31(火) 19:28:20 ID:WW2MnT8D
WSHクイックリファレンス 第2版
http://www.amazon.co.jp/gp/product/4873113091
193名無し~3.EXE:2006/10/31(火) 21:00:56 ID:iFG+tSJz

> 紙のリファレンスとして
>  ある意味では,本書のカバーする範囲はWSHのヘルプに書かれている範囲をそう越えてはいない。
>  基礎的な知識があることを前提にすれば,一読したあとは紙のリファレンスであることが最大のメリットということになる。
>
>  紙のリファレンスの価値は,プログラマの人ならよくわかっているだろうとは思う。
>  はたして,紙としてまとめられていることにどれだけの価値を見いだすか,というのは議論のわかれるところだろう。
>  入門書というにはやや記述が少なく,解説書というにはリファレンス的側面が強すぎるため,それ以外には魅力を見いだせないということなのだ。

確かに紙面リファレンスは有ると便利だが、それだけの為に4000円出すバカは居ないだろう。
早速改訂版が入荷してたので立ち読みしてみたが、サンプルとかもショボすぎて使い物にならないし。
4000円出してでも、script56.chmの紙面版が欲しいってなら、絶対に買うなとは言わないが、
俺にとっては100円ショップに置いてあるなら買ってもいいかなってレベルの出来だな。
194名無し~3.EXE:2006/11/01(水) 02:00:10 ID:M0Co5/Ld
WSHヘルプを見る時は、「窓使いの憂鬱」と「HHプラグイン」を使うと読み易いです
195名無し~3.EXE:2006/11/02(木) 02:30:30 ID:dDmy4YyL
.vbsのショートカットにドロップしても引数が消えなくする方法
ttp://pc8.2ch.net/test/read.cgi/win/1152544955/341
196名無し~3.EXE:2006/11/04(土) 10:36:34 ID:gFg82ib7
.vbsを登録してD&Dで引数が渡せる良い感じのプログラムランチャーって無いですか?
197名無し~3.EXE:2006/11/04(土) 11:12:19 ID:4Dsu/0i6
あるよ。
但しスレ違いな上に、「良い感じ」の定義は個人によって違うので具体的な紹介はしないけど。
具体的に紹介して欲しいなら、ソフ板のソフト紹介スレで、
具体的にどういうものが君にとって「良い感じ」なのかをきちんと書いて質問してみな。
198名無し~3.EXE:2006/11/04(土) 13:43:08 ID:gFg82ib7
自分で探した方が早そうだね
199名無し~3.EXE:2006/11/06(月) 04:44:13 ID:6BsyJ6Fg
200名無し~3.EXE:2006/11/08(水) 19:11:29 ID:PcQgSeRB
うっしゅ
201名無し~3.EXE:2006/11/09(木) 18:28:17 ID:/TzE/TZH
既定のブラウザをIE5.01SP4とfirefox2(J) とに交互に切り替えるJscript を恵んでくださいな。
202名無し~3.EXE:2006/11/09(木) 20:33:49 ID:nGi8ytVm
>201
交互っつったって、どんなタイミングで切り替えるんだ?
既定ブラウザ自体はレジストリ変更でどうにかなりそうだが…
203名無し~3.EXE:2006/11/09(木) 21:13:34 ID:/TzE/TZH
(既定ブラウザを切り替えたいときに、机の上にある jscript ファイルをダブルクリックする。)
// 1 変数の初期設定
// 2 該当レジストリを読み出す。
// 3 既定ブラウザが IE だったら、とある変数に firefox2 を代入する。
// 4 既定ブラウザが firefox2 だったら、とある変数に IE を代入する。
// 5 既定ブラウザが上記以外だったら、とある変数に 逝ってよし を代入する。
// 6 とある変数が逝ってよし以外なら、 該当レジストリに書き込んで、とある変数 に切り替えましたと表示する。
// 7 とある変数が逝ってよしなら、とある変数をそのまま表示する。

こんな感じです。
204名無し~3.EXE:2006/11/09(木) 21:48:39 ID:qNCmXvkB
何にしてもここは「スクリプトの作成を依頼するスレ」じゃないからね。
自分で作る気が無いなら帰れってことになる。
205名無し~3.EXE:2006/11/09(木) 23:00:35 ID:/TzE/TZH
じゃ帰りまつ。
206名無し~3.EXE:2006/11/10(金) 02:09:09 ID:AYtg+sjS
Windowsがロック(Win+L)されてると、AppActivate→SendKeysではキー送れない…ですよね?
何か代替策ありますでしょうか?

WshShell.Run('notepad.exe', 1, false);
WshShell.AppActivate('メモ帳');
WshShell.SendKeys('0{ENTER}');
207名無し~3.EXE:2006/11/10(金) 02:31:12 ID:ktKvkKru
>>206
COM使ってSendMessage
具体的な方法はCOM付属のドキュメントやWeb上の解説読んで
208名無し~3.EXE:2006/11/10(金) 08:13:38 ID:AYtg+sjS
>>207
dクス!
まだまだ知らないことばっかりだ(゚∀゚;)
209名無し~3.EXE:2006/11/11(土) 04:37:38 ID:jLixVM07
PowerShellって完成遅くね?
もしかしてVistaに入ってない?
210名無し~3.EXE:2006/11/11(土) 07:33:18 ID:OPUQTd1+
XMLHTTPでWebから落としてきたテキストファイルが文字化けするんだけど
文字化けしないで表示させるるにはどうな感じにやればいいの?

var xmlhttp = new ActiveXObject("MSXML2.XMLHTTP");
xmlhttp.open( 〜 );
xmlhttp.send( 〜 );
win1.document.open();
win1.document..clear();
win1.document..write(xmlhttp.responseText);
win1.document..close();
xmlhttp.abort();

↑はスゲー適当にしたけど、今はこんな感じ。処理の流れを言葉で表せは、
win1からコンテキストメニュー経由でスクリプト起動、xmlhttpでアクセス、ページ落としてそれをwin1にそのまま表示。
って感じ。

あと、落すのは普通のwebページ。ゆえにサーバーの方は弄れないし、文字コードは予め判らない。
そして、ググッていくつかの参考サイト見たけど、全然理解できなかったぐらいおれは馬鹿。

よろしくお願いします。
211名無し~3.EXE:2006/11/11(土) 09:34:07 ID:OPUQTd1+
桃子って馬鹿っぽい声だな
212名無し~3.EXE:2006/11/11(土) 09:36:39 ID:yLvGNxuk
URLそのまま表示するだけなら、普通にwin1.location.href="URL"でええやん(´・ω・)
213名無し~3.EXE:2006/11/11(土) 19:52:55 ID:fv8aBk4Z
>>203
「とある変数」は冗長。
214名無し~3.EXE:2006/11/11(土) 21:17:05 ID:OPUQTd1+
>>212
フォームのアクションへ POST して取ってくる感じ
215名無し~3.EXE:2006/11/11(土) 21:55:05 ID:yLvGNxuk
>>210
内容を一旦テンポラリファイルに保存してから、それを開くって感じではどう?
ADODB.Stream 使って XMLHTTP.responseBody を保存すれば、正確に表示できる。
216名無し~3.EXE:2006/11/12(日) 09:26:37 ID:paxoE75X
>>215
やってみたら文字化けしませんね。
一度保存するってのをベースにこれから作ってみます。
どもありがとです。
217名無し~3.EXE:2006/11/12(日) 09:53:43 ID:UX7xiFXQ
ファイルに書き出さんでも、Write した後 Position を 0 にしてやれば
Type やら Charset やら ReadText やら可能になるよ。
218名無し~3.EXE:2006/11/12(日) 10:13:55 ID:2A2d5Z9x
ファイルに保存せずに、ストリームを直接ブラウザに表示なんてできる?
219名無し~3.EXE:2006/11/12(日) 12:41:42 ID:eheFZjLZ
wshであるサーバがtelnetできるかというのを自動化しようとしてます。

Runメソッドでtelnet.exeを動かすスクリプトを作ってみたのですが、
ログインしている状態では動くのですが、
ログアウトしてスケジューラで動かしてみると、パスワードとかの入力ができません。

' Connect Server
strCMD = "telnet.exe -a -l root -f telnet.log 192.168.1.100
set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run strCMD,2
' Send Password
WScript.Sleep 5000' Wait 5 sec
WshShell.AppActivate "Telnet"
WshShell.SendKeys "rootpsaaword~"
' Exit Telnet
WScript.Sleep 2000' Wait 2 sec
WshShell.AppActivate "Telnet"
WshShell.SendKeys "exit~"


Execメソッドにしてみたところ、telnetが動いてもくれません。
Dim WshShell, oExec
strCMD = "telnet.exe -a -l root -f telnet.log 192.168.1.100
Set WshShell = CreateObject("WScript.Shell")
Set oWshExec = WshShell.Exec(strCMD)

telnetできなかったらメールを送るとかのスクリプトを作りたいのですが
どなたか同じことをやられている方はいませんでしょうか。
220名無し~3.EXE:2006/11/12(日) 14:13:34 ID:2A2d5Z9x
メールを送るだけなら CDO.Message でできる。
詳細はググってください。
221名無し~3.EXE:2006/11/12(日) 15:18:11 ID:0ftkh14m
>>219
標準のtelnet.exeじゃなくて、
ログインまで自動化できる別のソフトを使えば?
222名無し~3.EXE:2006/11/13(月) 23:10:05 ID:qiz2dlwS
>>219
> WshShell.SendKeys "rootpsaaword~"
> WshShell.SendKeys "exit~"

CRLF は送らなくていいのか?
223名無し~3.EXE:2006/11/14(火) 20:48:44 ID:eUOyYwez
ローカルPCのプロセス一覧を書き出す VBScript があります。
これは正常に動作します。

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colItems = objWMIService.ExecQuery( _
"SELECT * FROM Win32_Process",,48)
For Each objItem in colItems
Wscript.Echo "Name: " & objItem.Name
Next


これをJScriptに変換しようとしているのですが、
var strComputer = ".";
var objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2");

この行で既に
「Microsoft JScript 実行時エラー: オートメーションの操作中にファイル名または
 クラス名を見つけられませんでした。」となってしまい、実行できません。
\記号が何か変なことになってるんでしょうか?

どうすればいいのでしょうか?
WSH 5.6 / Windows XP SP1 Professional の環境です。
224223:2006/11/14(火) 20:50:34 ID:eUOyYwez
あ、ごめんなさい。
エラーの行に WScript をつけて、以下のようにしても同様でした。
var obj = WScript.GetObject("winmgmts:\\" & strComputer & "\root\CIMV2");
225名無し~3.EXE:2006/11/14(火) 20:53:15 ID:7Tv2z1qt
JScript の文字列連結演算子は + だが。
226名無し~3.EXE:2006/11/14(火) 21:43:55 ID:7Vc/ugR3
\→\\
227名無し~3.EXE:2006/11/15(水) 05:49:24 ID:eq52+nBC
PowerShell正式版来たな
228名無し~3.EXE:2006/11/15(水) 08:49:19 ID:eq52+nBC
PowerShell 1.0
ttp://support.microsoft.com/?kbid=926140
これおもしろいな。昔Monadスレあった気がしたけど、消えた?
229223:2006/11/15(水) 10:11:55 ID:8Giezelv
>>224-225
初歩的なことですみません&ありがとうございます。

var obj = WScript.GetObject("winmgmts:\\\\" + strComputer + "\\root\\CIMV2");

のようにしてみましたが、今度は
(null): 0x800C000D
のようなエラーで止まってしまいます。

試しに
var obj = WScript.GetObject("winmgmts:");
とすると上記と同じエラーが、

var obj = WScript.GetObject("winmgmts"); // ←コロンを取った
とすると>>223と同じエラーが出てしまいます。

原因として何が考えられるでしょうか?
230223:2006/11/15(水) 10:18:39 ID:8Giezelv
解決しました。

var obj = WScript.GetObject("winmgmts:\\\\" + strComputer + "\\root\\CIMV2");

はダメで

var obj = GetObject("winmgmts:\\\\" + strComputer + "\\root\\CIMV2");

ならOKでした。ムムム。
231名無し~3.EXE:2006/11/15(水) 23:24:20 ID:F3PSFGj/
>228
Windows Server 2003 Service Pack 1 および Windows XP Service Pack 2 用ってのがアレだけどな。
232名無し~3.EXE:2006/11/16(木) 10:54:00 ID:X8pn6xyi
PowerShell入れてみたけど、気に入ったw。
wsh捨てる決心ついたよ。
233名無し~3.EXE:2006/11/16(木) 12:14:40 ID:qnfm5A7w
コマンド入力まで時間かかるんだが、どうにかならんの
234名無し~3.EXE:2006/11/17(金) 00:37:42 ID:qH260wvA
Me使いのオレは移行したくとも出来んのだよ。
235名無し~3.EXE:2006/11/17(金) 01:02:22 ID:rS+zXwC5
PowerShellってパイプを流れるのもオブジェクトなのな。
CMDで
dir | sort
dir | sort /r

PSで
dir | sort
dir | sort -des
と比べて、頭の古い俺はちょっとびびった。

cd hklm:
でおいおい俺レジストリにいるよ、とか。

Vistaにデフォで入っていない上にデフォのセキュリティもガチガチだけど
やれること考えたら仕方ないか…。
236名無し~3.EXE:2006/11/17(金) 12:14:12 ID:tuTlaVuD
explorer切ってこっちをシェルにできんかな
237名無し~3.EXE:2006/11/18(土) 02:21:35 ID:OLX52wf8
ご案内

Windows PowerShell (正式版リリース)1.0
http://pc8.2ch.net/test/read.cgi/win/1163764836/
238名無し~3.EXE:2006/11/18(土) 15:10:02 ID:AegbpAMY
ADODB.Stream関連のプロパティを紹介してるHPを知りませんか?
239名無し~3.EXE:2006/11/18(土) 15:16:39 ID:rOSuiBco
>>238
Microsoft Data Access SDK 2.8
をダウンロードしたら?
240名無し~3.EXE:2006/11/18(土) 15:20:25 ID:mdx8HK1h
241名無し~3.EXE:2006/11/22(水) 21:59:57 ID:Hl8ABRjt
エクセルの中身をスクリプトで抜きたいんですが、可能でしょうか?
アクセスに移行しないと無理ですかね?
242名無し~3.EXE:2006/11/22(水) 22:12:10 ID:ag1e260U
エクセルの中身というのを xls ファイルの中身であると解釈して。
Excel.Application からオートメーションすればいいっしょ。
243名無し~3.EXE:2006/11/22(水) 22:36:18 ID:FtHukSom
>>241
できる
244名無し~3.EXE:2006/11/22(水) 23:20:06 ID:t8oZlpFH
245名無し~3.EXE:2006/11/22(水) 23:47:23 ID:EyhEga7i
皆様ありがとうございます。
>>244のって工夫すればなかなか便利に使えそうですね
246名無し~3.EXE:2006/11/25(土) 04:54:10 ID:fL/fbuiK
>>244
いろいろいじってみたけど、これすげく楽しいな
ADOでのSQLについて詳しいページってありませんか?
247名無し~3.EXE:2006/11/25(土) 12:16:26 ID:Z7NXJrJB
ググれ
248名無し~3.EXE:2006/11/25(土) 12:41:31 ID:qXN1g3LQ
  _____
  \  _ _/
   ( *゚∀゚)
   ( 9 ⌒)9゙ ググッ
  "⊂_)∪,,
249名無し~3.EXE:2006/11/25(土) 23:07:22 ID:OspuG9g+
>>248

( ゚∀゚)o彡゚ wsh!wdh!
250名無し~3.EXE:2006/11/26(日) 21:34:24 ID:tNFTdH9d
OutLookExpress内の任意のメールを特定のフォルダへドロップ(コピー)するような
スクリプトは、どのような関数を使えばよいでしょうか?

emlファイルに出来ればOKです。
WSHに詳しい先輩達にご意見をお聞きしたいです。


251名無し~3.EXE:2006/11/27(月) 00:56:10 ID:1iJUdyxp
COMってコム?それともシーオーエム?
WSHは?ウィンドウズスクリプトホスト?ダブリュエスエイチ?ウーシュ?
252名無し~3.EXE:2006/11/27(月) 01:06:33 ID:nxeZfR/d
COMはコムって読んでる
WSHはそのままW・S・H
253名無し~3.EXE:2006/11/27(月) 01:20:04 ID:YbmUHCoW
wshはウッシュだなあ
関係ないけど、zshはズッシュ、tcshはティッシュと
呼んでた俺。
254名無し~3.EXE:2006/11/27(月) 02:33:55 ID:nUiU//Yl
        lヽ ノ l        l l l ヽ   ヽ
  )'ーーノ(  | |  | 、      / l| l ハヽ  |ー‐''"l
 / W  | | |/| ハ  / / ,/ /|ノ /l / l l l| l  W ヽ
 l   ・  i´ | ヽ、| |r|| | //--‐'"   `'メ、_lノ| /  ・  /
 |  S  l  トー-トヽ| |ノ ''"´`   rー-/// |  S |
 |  ・   |/     | l ||、 ''"""  j ""''/ | |ヽl  ・ |
 |  H   |       | l | ヽ,   ―   / | | l  H  |
 |   !!  |     / | | |   ` ー-‐ ' ´|| ,ノ| | |  !! |
ノー‐---、,|    / │l、l         |レ' ,ノノ ノハ、_ノヽ
 /        / ノ⌒ヾ、  ヽ    ノハ,      |
,/      ,イーf'´ /´  \ | ,/´ |ヽl      |
     /-ト、| ┼―- 、_ヽメr' , -=l''"ハ    |  l
   ,/   | ヽ  \  _,ノーf' ´  ノノ  ヽ   | |
、_    _ ‐''l  `ー‐―''" ⌒'ー--‐'´`ヽ、_   _,ノ ノ
   ̄ ̄   |           /       ̄
255名無し~3.EXE:2006/11/27(月) 18:31:52 ID:uqV36mAE
>>254 W−WSHのアニメはイマイチだったぞ。
256名無し~3.EXE:2006/11/27(月) 22:04:40 ID:mEhuqTrR
>>250
やっぱり、難しいですよね。
257名無し~3.EXE:2006/11/28(火) 00:54:51 ID:Tv1LYONy
htaやwsfファイル中でPerlScriptからVBScriptやJScriptの関数って呼べます?
逆は普通に呼べるんだが...
258名無し~3.EXE:2006/11/28(火) 01:03:28 ID:V4pOQQjQ
ランチャをWSHで組んだとして
起動させたアプリからの、read/writeを規制することは
可能でしょうか?
例えば、~/tmp以外書き込み禁止とか...
259名無し~3.EXE:2006/11/28(火) 01:12:07 ID:Tv1LYONy
>>258
何でそんなことしたいのか知らんけど,Windows2000かXPであれば,新しくユーザ作成して適切なパーミッション設定して,runasでそのユーザで起動するようにすればできなくはないかも?
260名無し~3.EXE:2006/11/28(火) 01:14:36 ID:kOxlRyob
>>257
呼べる。とりあえずwshのリファレンス読め。
htaも同じ方法で呼べるから。

>>258
不可能。というかスクリプトの仕事じゃない。
まともなプログラム言語使え。
261名無し~3.EXE:2006/11/28(火) 01:25:26 ID:Tv1LYONy
>>260
呼べるのか.

<job id="main">
<script language="PerlScript">
sub perlfunc() {
$WScript->Echo("PerlScript");
}
</script>
<script language="JScript">
perlfunc();
</script>
</job>

これはいけるけどPerlScriptからJScriptのfunctionを呼ぶにはどうすれば?
wshやperlのマニュアル見ても見つからないの.サンプルプリーズ.
262名無し~3.EXE:2006/11/28(火) 01:27:02 ID:RRJTB0rw
&jscriptfunc()
で呼べるんでないの?
263名無し~3.EXE:2006/11/28(火) 01:33:50 ID:Tv1LYONy
>>262
それで呼べないんで困ってるんですわ.
264名無し~3.EXE:2006/11/28(火) 01:34:54 ID:ZRVbZfL6
method(); でいけるはずだが
265名無し~3.EXE:2006/11/28(火) 01:44:28 ID:dX4vnSDr
strconvはもちろんストア昆布だよな
266257:2006/11/28(火) 01:57:32 ID:Tv1LYONy
いろいろ試してたら分かってきた.
PerlScriptからVBScriptの関数は普通に呼べました.
JScriptの関数オブジェクトはPerlScriptからは扱えないみたい.
$WScript->Echo(&jsfunc());とかやるとfunctionの中身がdumpされた.

JScriptで作ったライブラリとか使えねー
PerlScriptなんて使うなってことですか...

<job id="main">

<script language="VBScript">
  sub vbsfunc()
    WScript.Echo("VBScript")
  end sub
</script>

<script language="JScript">
  function jsfunc() {
    WScript.Echo("JScript");
  }
</script>

<script language="PerlScript">
  # VBScript OK
  &vbsfunc();
  # JScript NG
  &jsfunc();
  $WScript->Echo(&jsfunc());
</script>

</job>
267名無し~3.EXE:2006/11/28(火) 02:35:59 ID:BAbEyrhQ
引数があれば呼べるんじゃないかな
268名無し~3.EXE:2006/11/28(火) 02:40:16 ID:RRJTB0rw
適当な引数を付ければ呼べるみたいだね。例えば、
&jsfunc(0);
269名無し~3.EXE:2006/11/28(火) 02:47:47 ID:g8pNCyQB
ScriptControlを使う手もあります 呼び出し先ではWScript使えないけど><

<job id="main">
<script language="PerlScript">
my $jscript = <<EOS;
    function jsfunc() {
        return "Perl meets JavaScript!";
    }
EOS

my $sc = $WScript->CreateObject("ScriptControl");
$sc->{Language} = "JScript";
$sc->AddCode($jscript);
$WScript->Echo( $sc->Run("jsfunc") );
</script>
</job>
270258:2006/11/28(火) 02:49:32 ID:V4pOQQjQ
>>259
データ管理上、ローカルにデータ放置させたくないのです
小生Win環境詳しくないので、感謝
早速試してみます

>>260
元がAIX上でPerl/Tkで動いている認証機能付ランチャなのです
Win環境は詳しくないものですいません
271名無し~3.EXE:2006/11/28(火) 07:36:45 ID:AQr+bFyx
OutLookExpress内の任意のメールを特定のフォルダへドロップ(コピー)するような
関数を教えてください。

頭の良い方達揃いと思い、お願いします。
272名無し~3.EXE:2006/11/28(火) 12:16:59 ID:h8kiq/Ct
>>271
この辺の情報を参考に作ってみたら?

OE dbx file format
ttp://oedbx.aroh.de/
273名無し~3.EXE:2006/11/28(火) 13:51:02 ID:77idGO9L
>>271
バックアップならこういうのを使ったほうがいい。
ttp://www.tietew.net/soft/OE2/
274名無し~3.EXE:2006/11/28(火) 15:46:44 ID:eQt+KJMG
>>269
>ScriptControlを使う手もあります 呼び出し先ではWScript使えないけど><
使えます。VBScriptの記述では、
sc.AddObject "WScript",WScript
みたいにSC側にWScriptを渡せばよいのです。
275名無し~3.EXE:2006/11/28(火) 19:56:04 ID:eQt+KJMG
>>258
>>259
タスクスケジューラに登録しておいて、FolderItem.InvokeVerbで実行する。
276名無し~3.EXE:2006/11/28(火) 19:58:54 ID:g8pNCyQB
>>274
それは知らなかった。thx!
277名無し~3.EXE:2006/11/28(火) 20:03:14 ID:eQt+KJMG
>>257
あてずっぽうですが、
jscriptfunc()
で呼べませんかね。結構、非常識な発想が通ったりする世界ですから。。。
278257:2006/11/28(火) 20:21:36 ID:Tv1LYONy
>>267 >>268
無事呼べました.情報ありがとう.
perlじゃ引数なし()は省略されるってことね.

>>269
ふむふむ.それはVBA上からperl呼ぶとか便利に使えそうだね.
vbsやjsにできてperlにできないことはまずないから,wshでは使わないだろうけど.
279名無し~3.EXE:2006/11/28(火) 21:48:29 ID:tFRKZPTE
スクリプトから自動でメールを出すってできますか?
WEBページにあるフォームに入力させて「送信」ボタンを押すみたいなことをスクリプトで実現したいんですが
280名無し~3.EXE:2006/11/28(火) 21:53:30 ID:mWvA7je0
MsgBox でフォントの大きさを変えることはできませんか?
(全体を大きくするのではなくて、MsgBox のウインドウで
使われるフォントだけ)。
281名無し~3.EXE:2006/11/28(火) 22:06:15 ID:g8pNCyQB
>>279
CDO.Message で検索してみて。

>>280
一からウィンドウを作らないとダメかと。
282280:2006/11/28(火) 22:18:48 ID:mWvA7je0
>>281
Wsh では1からウインドウを作るのはどうやるんでしょうか?
VBScript でも JScript でもこの際なんでも構いません。
(機能はメッセージを出して OK 押したら消えるだけでいいんです。
但し大きく目立つように出したいということです)。かといって
後から何か特別なソフトをインストールしたくはないので Wsh の
VBScript の MsgBox でやっていたんですが、何か方法ありませんかね?
283名無し~3.EXE:2006/11/28(火) 22:23:19 ID:HgwQULRQ
HTAにしてみるとか
284名無し~3.EXE:2006/11/28(火) 22:23:44 ID:E3q0nv4b
>>282
WSHから使えるGUIウィンドウは
COMとして作るしか無いかと。
又はWSHではなくHTAを使うって手もある。
285名無し~3.EXE:2006/11/28(火) 22:39:47 ID:mWvA7je0
>>283-284
HTAというのは知りませんでした。検索したら出ましたが。これですよね。
http://www.microsoft.com/japan/msdn/workshop/author/hta/overview/htaoverview.asp
調べてみます。ありがとうございました。
286名無し~3.EXE:2006/11/28(火) 23:15:36 ID:eQt+KJMG
PowerShellを使うと
>>36
>>206
などが簡単に出来るようになるんでしょうか?
287名無し~3.EXE:2006/11/28(火) 23:23:34 ID:45tW03Iv
CDO.Messageについて調べたんですが、送信元のアドレスをソースに入れないで(自動で補完)つくれないでしょうか
スクリプトを知らない多数の人が使用するという想定でつくりたいのです
288名無し~3.EXE:2006/11/28(火) 23:42:30 ID:Tv1LYONy
>>282
TclScript, PerlScript, RubyScriptとかならTkが使えるからGUIが自前で作れる.
それぞれの処理系をインストールしなきゃならんのでHTAの方がいいだろうけど.

>>287
1. スクリプトの先頭にadress = "[email protected]"とか書いておいて,各自そこだけ書き換えてもらう.
2. InputBoxやHTA使ってアドレス入力させる.毎回入力するのは面倒なので,ファイルに保存しておいて次回からはそれを読む.
など
289名無し~3.EXE:2006/11/29(水) 00:33:36 ID:2/mGVRQo
>286
↓で訊いてみたら?

Windows PowerShell (正式版リリース)1.0
http://pc8.2ch.net/test/read.cgi/win/1163764836/
290名無し~3.EXE:2006/11/29(水) 22:17:21 ID:1dkZEY39
>>272
>>273
ありがとうございます。

ただ、もっと簡単にスクリプトを組んで関数をチャチャっとやって、
できないものか思案中です。

あまり、プログラムって組んだ経験がないので・・・。

何か良いアイデア、ないでしょうかね?
291名無し~3.EXE:2006/11/29(水) 22:41:40 ID:DKiaM1yK
自力でプログラム書く気がないなら、このスレ向きじゃないよ。
292名無し~3.EXE:2006/11/30(木) 01:16:13 ID:WPzp0DQP
標準出力を使いたいので、ファイル名.vbs(wscript.exe)で実行しても
cscript.exeで実行するような書き方ってありますか
293名無し~3.EXE:2006/11/30(木) 01:40:47 ID:f/8+PZe+
>>292
cscript //H:CScript
294名無し~3.EXE:2006/11/30(木) 02:14:43 ID:oHR/u/8E
>>292
vbsじゃないけどお手製のライブラリがあるので晒そう.

以下をたとえばstdio.jsというファイル名で保存
//---------ここから------------
(function(){
  if (/wscript\.exe$/i.test(WScript.FullName)) {
    var args = new Array();
    for ( var i = 0; i < WScript.Arguments.length; i++ ) {
      var arg = WScript.Arguments.Item(i);
      if ( /\s/.test(arg) ) arg = '"' + arg + '"';
      args.push(arg);
    }

    var cmd = 'cscript.exe //Nologo "' + WScript.ScriptFullName + '" ' + args.join(' ');
    WScript.CreateObject('WScript.Shell').Run(cmd, 1, false);
    WScript.Quit();
  }
})();
//---------ここまで------------

使い方はwsfファイルの最初でインクルードしてやるだけ.
<job>
<script language="JScript" src="stdio.js"></script>
<script language="VBScript">
'ここに好きなコードを書く
WScript.StdIn.ReadLine
</script>
</job>

既定のスクリプトホストはwscriptのままでOK.
まあ自分で使うだけなら >>293 が一番楽でしょう.
295名無し~3.EXE:2006/11/30(木) 02:42:53 ID:v82cYZy4
>>292
vbcという拡張子をcscriptに関連付けて、cscriptで実行したいものはvbcで作る方法がオススメ。

>>294のようにwsfでやるならjob分けした方が良い。または引数が無ければ
ttp://winscript.s41.xrea.com/wiki/index.php?%5B%5B%A5%C6%A5%AF%A5%CB%A5%C3%A5%AF%5D%5D#content_1_4
でもいける。ぶっちゃけ>>294はこれの引数対応版なだけの話だし。

まぁ固定環境で使うものなら関連付けしちゃうのが一番煩わしくないよ。
コード一切必要ないし、条件分岐も、実行し直しも、引数の処理も無いからいくらか早いし。
296名無し~3.EXE:2006/11/30(木) 07:51:25 ID:oeVEhWch
>>295
> vbcという拡張子をcscriptに関連付けて、cscriptで実行したいものはvbcで作る方法がオススメ。

なるほどなあ、その発想はなかった
297名無し~3.EXE:2006/11/30(木) 10:53:55 ID:4A8n4oNd
>>292
先頭に
REM:[email protected] //E:VBS //NoLogo "%~f0" %* & GOTO :EOF
を書いて、拡張子をCMDに変える。
298名無し~3.EXE:2006/11/30(木) 19:27:18 ID:4A8n4oNd
>>295
関連付けで標準入出力が使えない障害はありましたが、もういいのかなぁ。
もし、駄目なときはVectorのVBCFILEを参照。
299名無し~3.EXE:2006/12/02(土) 15:02:40 ID:AkJV6Sni
これでアクセス権限のないレジストリキーを
自動で削除する事ってできますか?
300名無し~3.EXE:2006/12/02(土) 20:48:03 ID:0XNYfzVD
WScript.ShellのPopup(,nSecondsToWait)が効かないってことありませんか?
HTMLやHTAのときは、そういう仕様か、と思っていましたが、WSHでも起こります。
どうもCPUが他の処理で忙しいときに抜けるみたいです。
さすがに、それは障害だと思いますが。使うときはご用心。
301名無し~3.EXE:2006/12/07(木) 15:43:36 ID:EC5LjnO7
>>282
こういうときは、WSHからIEを起こして操作するのが簡単。
302名無し~3.EXE:2006/12/09(土) 18:45:02 ID:P6CN1pgP
バッチファイルをリモートからWebに埋め込んで使う
ということをwsh使ってできますか?
303名無し~3.EXE:2006/12/09(土) 19:13:49 ID:pifhS49b
うん、出来る。。面倒だから普通はやらないけど。
どうしても面倒なことやりたいなら勝手にやればよい。
304名無し~3.EXE:2006/12/09(土) 19:49:26 ID:0qa9SSE3
>302
で、それを知って何をやりたいんだ?
305名無し~3.EXE:2006/12/10(日) 00:08:13 ID:UaBqXVVZ
>>296
それより、RunWithArgs.CMDを関連付けると、便利だわい。
306名無し~3.EXE:2006/12/11(月) 22:02:52 ID:YncVWVUZ
age
307名無し~3.EXE:2006/12/13(水) 14:27:42 ID:/++eaESB
WSHでDDE使う方法ないかな?
308名無し~3.EXE:2006/12/13(水) 15:44:43 ID:npJjnYln
>>307
DDE使えるCOMを探すか作る。

そんな回答アリかよ、と言うかも知れないが
拡張無しにWSH自身が出来る事なんてほとんど無いんだから
COMなどの外部拡張に頼らざるを得ないのは仕方ない。
309名無し~3.EXE:2006/12/13(水) 16:38:28 ID:5aDfYNEq
VBScript(.vbs)からExcelを操作して文字列の置換をしたいんですが、ループでセルを一つずつ見て置換していくしかないのでしょうか?

Excelの置換ダイアログみたいに一括でブック全体を置換したいんですが。

ちなみに優先順位としては
処理スピード > コードの複雑さ
です。
310名無し~3.EXE:2006/12/13(水) 17:06:25 ID:npJjnYln
>>309
RangeメンバのReplaceメソッドで置換すれば良いだけだよ。
Replaceメソッドの使い方はExcelVBAヘルプに載ってる。
因みに組み込み関数のReplaceじゃないので間違わないように。

ちなみに対象のシートオブジェクトを取得したら、置換は1行コードで終わる。
ループよりは速いが、どのくらい速いかはCPU依存。
311名無し~3.EXE:2006/12/13(水) 17:48:44 ID:5aDfYNEq
>>310
ありがとうございました!標準オプションなら↓だけで行けますね。

objApp.ActiveSheet.Range("A1").Replace <検索文字列>, <置換文字列>

後は各シートでコレを実行させました。十分実用に耐えるスピードです。
312名無し~3.EXE:2006/12/13(水) 22:14:37 ID:hw3Bn7Em
IEから右クリックで動作させるスクリプトなんですが、
その右クリックされた場所にある画像のURL(リンクではなくIMGタグ)
を取得するにはどうすればいいでしょうか?
313名無し~3.EXE:2006/12/13(水) 22:49:12 ID:qNFDZs3m
external.menuArguments.document.elementFromPoint(external.menuArguments.event.clientX, external.menuArguments.event.clientY).href
らしい。Irvine のスクリプトによると。
314312:2006/12/14(木) 00:28:11 ID:7FtNx5qL
>>313
ありがとうございます
315名無し~3.EXE:2006/12/14(木) 00:29:42 ID:DjAdsCMN
InternetExplorer.Applicationとかの情報ってWSHのリファレンスに
のってないけど、どっから情報獲ってくるんだ?
316名無し~3.EXE:2006/12/14(木) 00:42:56 ID:WjQ1wjr4
IE オブジェクトなら MSDN にいくらでもあるっしょ
317名無し~3.EXE:2006/12/14(木) 01:39:10 ID:XilSwh1W
>>315
つ OLEView.exe
318名無し~3.EXE:2006/12/17(日) 09:32:44 ID:A0dC8xU5
以下のようにした場合、メッセージボックス(?)が表示される前に
コマンドプロンプト・ウインドウが表示されるのですが、結果の
メッセージだけを表示させるにはどうすれば… ?

Set objWshShell = WScript.CreateObject("WScript.Shell")
Set objExecCmd = objWshShell.Exec("ruby\bin\ruby -Ks search.rb")
WScript.Echo "検索結果:" & objExecCmd.StdOut.ReadAll
319名無し~3.EXE:2006/12/17(日) 11:44:36 ID:H95I1sD8
rubyw.exe
320名無し~3.EXE:2006/12/17(日) 14:04:16 ID:A0dC8xU5
>>319 ギガddd!
321スレッドを超えたコテハン:2006/12/17(日) 15:02:58 ID:EP+mDiGm
WSCの場合は、プロパティで定数を公開して、wsc.nameで定数を参照したほうが、
衝突の心配がないし、WSFだけでなく、VBSやJSでも使えてよさそうですが、
もし、nameだけで、参照したいときは、WSC側でreferenceメソッド作って、
function reference(Me){
Me['xxx']=111;
Me['yyy']=222;
}
VBS側で
wsc.reference me
WScript.Echo xxx
JS側で
wsc.reference(this);
WScript.Echo(xxx);
とすれば、WSFだけでなく、VBSやJSからも使えます。
322名無し~3.EXE:2006/12/18(月) 14:59:23 ID:P40MScLH
WSHでIEオブジェクトを作成してそれのProcessIDを取得する方法を教えて欲しいのですが。

今は下記の手順でブラウザにキー送信をしていますが、「タイトルの文字列」が変更した場合には通用しません。
なので、ProcessID指定で確実にSendKeysをしたいのです。
InternetExplorer.Application + ProcessIDでぐぐっても見つけられませんでした。
よろしくお願いします。

Set IE = WScript.CreateObject("InternetExplorer.Application","IE_")
Set sShell = WScript.CreateObject("WScript.Shell")
sShell.AppActivate("ブラウザのwebページのタイトル文字列")
sShell.SendKeys "ほげほげ"

参考にしたページ
ttp://www.atmarkit.co.jp/fwin2k/operation/wsh05/wsh05_04.html
> 一方のプロセスIDは、Execを使って起動したプログラムでは、WshScriptExecオブジェクトのProcessIDプロパティから取得できる。

323名無し~3.EXE:2006/12/19(火) 21:38:05 ID:4I7Im65l
マルチするならせめて一言断り入れとけよ。あとリンク。

つか IE オブジェクト使うなら大凡の操作は可能だと思うのだが。わざわざ SendKeys 使わんでも。
324名無し~3.EXE:2006/12/20(水) 02:32:54 ID:mM03wtmE
>>323
ファイルの指定したいんじゃないかな?
予想だけど。

>>322
<input type="file">以外の入力をしたいのなら、SendKeysなんて不安定なもの使わなくても
Document.Allで取得したHTML要素のオブジェクトを直接操作できるよ。
DHTML関係で調べると情報が見つかると思う。

<input type="file">だけはセキュリティだか何だかで値を設定できないから仕方ないけど。
325名無し~3.EXE:2006/12/20(水) 10:45:02 ID:RqDSiDAq
>>324
そうです。
SendKeys "%(FA)"とかでセーブしたり印刷などダイアログ操作もしたいんです。
326名無し~3.EXE:2006/12/20(水) 13:00:07 ID:mrdk27Jg
327名無し~3.EXE:2006/12/20(水) 14:15:14 ID:RqDSiDAq
>>326
ありがとうございます。
IEが複数起動してた場合や別プロセスにチェックあった場合とかで試してレポートしますね。

328名無し~3.EXE:2006/12/20(水) 19:15:52 ID:AUSJGC40
あっちのスレで質問に答えてる人が、こっちのスレを見たらどう思うだろうね。逆はどうだろう。
マルチするやつは、想像力のかけらもない、人を思いやる事のできない、最低の人種。
329名無し~3.EXE:2006/12/20(水) 21:56:05 ID:hALWCcKZ
痛い人はっけん伝
330スレッドを超えたコテハン:2006/12/21(木) 00:13:52 ID:Agf2Nj7H
>>328
というか、マルチの問題は、回答者の善意が無駄に捨てられていることだと思う。
そして、それが、本人より、それを見ているひとを刺激するのだと思う。
331名無し~3.EXE:2006/12/22(金) 15:58:35 ID:JvRzts1c
パワーポイントに画像
1.jpg 2.jpg...
を並べて貼るのって自動化できないの?
332名無し~3.EXE:2006/12/22(金) 23:04:54 ID:jt8/BZlk
マクロ書けばいいんじゃないのか?
333名無し~3.EXE:2006/12/23(土) 12:28:39 ID:0ryoXlyK
html で書いて読み込みとか
334名無し~3.EXE:2006/12/23(土) 14:14:29 ID:N/gLsGdS
SendKeys()は?
335名無し~3.EXE:2006/12/26(火) 16:17:49 ID:MwEmWwE0
>>103
つ subst
336名無し~3.EXE:2006/12/26(火) 19:21:31 ID:YnXAl3Sk
質問させて下さい。

var obFS,obFOL,colFile;
var timestamp = "";

obFS = WScript.CreateObject("Scripting.FileSystemObject");
obFOL = obFS.GetFolder("f:\\");
colFile = obFOL.Files;

var x = new Enumerator(colFILE);

for(; !x.atEnd(); x.moveNext()){
timestamp = x.item().DateCreated
}

というコードを実行すると、
timestampに"Wed Nov 29 19:35:35 UTC+0900 2006"というようなのが返ってくるのですが、
ここからyyyymmddという形式の文字列を取り出すにはどうしたらよいのでしょうか。

337名無し~3.EXE:2006/12/26(火) 19:23:16 ID:YnXAl3Sk
↑環境はXPSP2、Windows Script5.6です。
338名無し~3.EXE:2006/12/26(火) 19:55:35 ID:TReychuT
>>336
Dateオブジェクトの扱い方について学びましょう。
リファレンスにも載ってますよ。
339名無し~3.EXE:2006/12/26(火) 19:57:26 ID:YnXAl3Sk
>338

var timestamp = new Date(x.item().DateCreated);
ですね。いろいろいじっていたら閃きました。
340名無し~3.EXE:2006/12/27(水) 01:45:26 ID:uErdji5h
既に開いてある IE のウィンドウのオブジェクトを、
子ウィンドウかどうかに関係なく所得するにはどうしたらいいでしょうか?
341名無し~3.EXE:2006/12/27(水) 11:51:57 ID:lsopXQRq
>>340
Set IEShell = CreateObject("Shell.Application")
num = IEShell.Windows.Count
For i = 0 to num - 1
WinName = IEShell.Windows.Item(i).LocationName
WinPath = IEShell.Windows.Item(i).LocationURL
Document.write "<tr><td>" & WinName & "</td>"
Document.write "<td>" & WinPath & "</td></tr>"
Next

こんなんでどお?
342名無し~3.EXE:2006/12/27(水) 18:21:28 ID:Z9+O0XhD
>>327
レポートはどうしたんだろう?
343名無し~3.EXE:2007/01/04(木) 09:48:15 ID:pQA4Aeed
少し前に、vbscriptをコンソール実行するのにcscript.exeに関連付けした.vbcというのを用意するという話があったけど
これと同じように.wsfのコンソール実行版として.csfをcscript.exeに関連付けしたいんだけど、どうしたらいい?

単純に%SystemRoot%\System32\cscript.exe "%1" %*じゃエラーになるし、//Eに何を指定したら良いのか解らずお手上げ状態
wsfにはcscript.exeも関連付けされてるが、右クリックメニューからの選択は煩わしいのでvbcみたいに既定関連付けにしたいし
cscript.exeで実行し直すスクリプト(>>294のvbs版のようなもの)を書いてみたりもしたけど、やはり関連付けしちゃったほうがスッキリするので
344名無し~3.EXE:2007/01/05(金) 11:38:36 ID:IRXk0L1E
普通に%SystemRoot%\System32\CScript.exe "%1" %*でいけるだろ?

ちゃんとREG_EXPAND_SZにしてるか?
345名無し~3.EXE:2007/01/06(土) 22:39:45 ID:5TwI70x6
>>344
.wsfをcscript.exeに関連付けするんじゃなくて.csf(独自拡張子)をcscript.exeに関連付けする場合ですよ
本当に%SystemRoot%\System32\CScript.exe "%1" %*でスクリプトとして実行される?

こちらはちゃんとREG_EXPAND_SZにしてるし、cscript.exeやwscript.exeに直接D&Dしても同じメッセージが出るので
パスはきちんと通ってるし、コマンドも渡ってる
346名無し~3.EXE:2007/01/07(日) 02:58:46 ID:Jlib32pI
>>345
D&Dならこれじゃないの。

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

しかし、cscriptでD&Dとはこれ如何に…
347名無し~3.EXE:2007/01/07(日) 06:47:22 ID:bXPc+IQY
>>343
うちもエラーが出る。メッセージは↓だろ。
> ファイル拡張子 ".csf" を持つスクリプト エンジンはありません。
解決方法はわからん。

>>346
スクリプトファイルにD&Dしたいんじゃなくて、
「スクリプトエンジンにD&Dしても同じエラーが出るから
関連付けのパスは間違ってないですよ」ってことだろ。
348名無し~3.EXE:2007/01/07(日) 14:19:39 ID:sB9LNE5a
画像の容量やサイズを取得しJavaScriptで利用するにはどうしたらいいですか?
349名無し~3.EXE:2007/01/07(日) 14:30:59 ID:zkbC9oLK
>>348
>>3の doodle とか使えるんじゃない
350名無し~3.EXE:2007/01/07(日) 17:31:26 ID:F4E+azH/
'標準的なJPEGファイルの画像サイズ取得
GetJpegSize "sample.jpg", x, y
WScript.Echo "X=" & x & " Y=" & y
Function GetJpegSize(filename, ByRef x, ByRef y)
Set oStrm = CreateObject("ADODB.Stream")
oStrm.Open
oStrm.Type = 1 'adTypeBinary
oStrm.LoadFromFile filename
Do While (CvNum(oStrm.Read(1)) = &hFF)
Select Case CvNum(oStrm.Read(1))
Case &hD8 'SOI
Case &hD9 'EOI
Exit Do
Case &hC0 'SOF0
length = CvNum(oStrm.Read(2))
oStrm.Read(1)
y = CvNum(oStrm.Read(2))
x = CvNum(oStrm.Read(2))
Exit Do
Case &hDA 'SOS
Exit Do
Case Else
length = CvNum(oStrm.Read(2))
oStrm.Read(length - 2)
End Select
Loop
End Function
Function CvNum(bstr) ' BigEndian
For i = 1 To LenB(bstr)
CvNum = CvNum * 256 + AscB(MidB(bstr, i, 1))
Next
End Function
351名無し~3.EXE:2007/01/07(日) 18:57:51 ID:v/viW2rY
>>346
DropHandlerは既に設定してあるけど、問題はそこじゃないので

>>347
エラーメッセージはそれです

cscript.exe /?を見ても、//Eオプションの意味は書いてあるんだけど//Eオプションに設定出来る値とかは書いてないんだよね
.wsf形式は固定エンジンじゃないけど.vbcも//E無しで関連付けすると同じエラーが出て//E:VBSを付けると解決するから
これも//Eで解決しそうな気もするんだけど
352名無し~3.EXE:2007/01/17(水) 20:07:13 ID:0sN+rIEb
(・∀・∀・)
(・∀・)サテオシゴト・・・          ε三三三三(; ・∀・)鯖マデオツカイ
HTTP/1.1 304 Not Modified
( ・∀・)(・∀・ )オツカイオワリ 三三三三3
(・∀・∀・)
( ´∀`) 誰も書いてないよ
(・∀・)カンリョウ!!
353名無し~3.EXE:2007/01/19(金) 16:29:22 ID:e+OFGk5J
下のコードでVistaのファイルのプロパティ調べてみたら
266もあって笑った。
2000/XPだと40もなかったのに

--------------------------------
var WshShell = new ActiveXObject("WScript.Shell");
var oShell = new ActiveXObject("Shell.Application");
var oFol = oShell.NameSpace( "C:\\" );
var str= "";

for( var i = 0; i < 300; i++ )
{
    str += i + ":" + oFol.GetDetailsOf( null, i ) + "\n";
}

WshShell.Popup( str );
354名無し~3.EXE:2007/01/19(金) 18:26:35 ID:QaLFoFFk
WSFはデフォルトをCScript.exeにする。
WScript.exeで動かしたいときは、ショートカット(.lnk)を作って
リンク先の頭にWScript.exeを入れる。
355名無し~3.EXE:2007/01/19(金) 18:56:22 ID:QaLFoFFk
>>348
>>356の要領で26,27,28がサイズ
356名無し~3.EXE:2007/01/19(金) 18:58:08 ID:QaLFoFFk
訂正
>>353の要領で26,27,28がサイズ
357名無し~3.EXE:2007/01/20(土) 00:20:12 ID:GPpR1ytY
>>353

207:雰囲気


なんじゃこりゃ
358名無し~3.EXE:2007/01/20(土) 02:42:29 ID:ETgywjVO
envionment を直訳したのか?
359名無し~3.EXE:2007/01/20(土) 12:57:54 ID:N7R7pz3V
envionment (なぜか翻訳できない)
360名無し~3.EXE:2007/01/20(土) 14:38:04 ID:UE2i8MKk
//E:のエンジン名は可変だから、
ハードコーディングのcscript /?に書いてある訳ないわな
ヘルプぐらいででわざわざレジストリを検索するのも面倒だし
361名無し~3.EXE:2007/01/20(土) 15:25:54 ID:UE2i8MKk
>>359
ぐぐれ
362名無し~3.EXE:2007/01/20(土) 16:16:36 ID:XJ4mGjq5
>>359
つ r
363Jscriptで:2007/01/20(土) 17:23:56 ID:5Xd7S+Ct
Excel のブック中に、4月〜3月のシート名を持つワークシートがあり、
各シート名内の数字が全角か半角かはあやしいものとする。

セルA6から下方方向に半角数字で日付が記入してあり
対応する日の’C'から'G'のセルに行事予定が記入してある。

今日も含めて3日分の予定を WScript.Echo で表示する。
エクセル.xls ファイルとJscript.js ファイルは、d:\1 フォルダ内に置く。

という条件で、とりあえず動くものを作りましたが、

ここを直した方がスクリプトが簡素になるよとか、
「今日も含めて3日」間が、月の境界の場合は無視しているので
その処理のアイデアとか
コメントを下さい。

ttp://a-draw.com/uploader/src/up11825.lzh.html
364名無し~3.EXE:2007/01/20(土) 20:34:48 ID:8DNLMKa6
JScript使い始めて2日目のおいらが、勉強がてらリファレンス読みながら調べたことを書いてみる。

var XLS_FILE = WScript.ScriptFullName.replace(/\\[^\\]+$/, "\\sample.xls");
にすれば"d:\1"以外でも、同一ディレクトリにsample.xlsがあれば動く。

曜日はyday = "日月火水木金土".charAt(yday)の1行で済む。

正規表現使って(reはmonthから"^(?:10|10)月$"のようなパターンを作る)
for(; !sub1.atEnd(); sub1.moveNext()){
  if (sub1.item().Name.match(re) != null){
    sh = sub1.item();
    break;
  }
}
という感じで対象シートを変数に取得しておけば、
while(sumSheatnc.indexOf("1")>-1){ 〜 sumSheatnc.indexOf("月"+month +"月")+1))).Select;
の約50行は不要だし
ExcelApp.ActiveWorkBook.ActiveSheet.Cells(i,3) を
sh.Cells(i,3) と書ける。
半角数字はcharCodeAt+65248をfromCharCodeすれば全角数字になる

更に
if (ExcelApp.ActiveWorkBook.ActiveSheet.Cells(i,3)>"") event+= ExcelApp.ActiveWorkBook.ActiveSheet.Cells(i,3)+" ";
以下の5行に相当するものが
event = new VBArray(sh.Range(sh.Cells(i,3),sh.Cells(i,7)).Value).toArray().join("\t").replace(/\t+/, " ");
の1行で書ける。(join(" ")でもいいと思うけど)

月越えの処理は、「2007年month月date+1or+2日」のgetMonthがmonthより大きければ次のシートに移る処理を書けば良いのでは?
2007/2/28の場合なら、2007/2/30を指定すれば2007/3/2を返すから、末日が何日かとか考えなくても月を越えたかどうか判断できる。
次のシートはWorksheets(sh.Index+1)って感じで取得すればいい。末尾シートの場合の例外処理をお忘れなく。
365名無し~3.EXE:2007/01/20(土) 23:24:24 ID:slWIhDIN
Excel上にVBAで書いたモジュールを
jsやvbsから呼び出す方法ってあるんですかね?
ぐぐってみたんですけど、わからんのですorz
366名無し~3.EXE:2007/01/20(土) 23:42:48 ID:Lkiodn1p
ネット中毒なっている若者はオナニーでもしておれ!!
367名無し~3.EXE:2007/01/21(日) 14:39:38 ID:fTYEC1jK
>>365
kwsk
368名無し~3.EXE:2007/01/21(日) 16:02:19 ID:ilBf4mqg
>>364
ありがとうございます。参考にさせて頂きます。

正規表現のところは、こちらの能力の限界で、今分かっても数ヶ月のちには屁理屈を忘れてしまいそうなので
ブラックボックスのまま置いておくか、wsh HELP ページや参考となるところのURL までコメントとして詳しく書き入れるか
どうしよう。

ここも人が少なくなりましたね。サンプルソースコードは、2,3日後には消しますね。
でわ。
369名無し~3.EXE:2007/01/21(日) 16:11:18 ID:eMwqitJ2
370365:2007/01/22(月) 00:19:18 ID:o8eRiI+8
>>369
返信ありがとうございます。

なんとか解決できないだろうかと、
会社の帰りに本屋でExcelマクロの本を読み漁って、
Application.run ってのが探してたものだとわかりました。
お手数おかけしました。

371名無し~3.EXE:2007/01/23(火) 01:49:09 ID:15EbuWWs
回避策はわかったのですが、
どなたか知っていたら教えてください。

<やりたい事>レジストリの値名が\から始まっているデータをRegReadで取得する方法
<環境>WinXP SP2 Pro/WSH5.6

<例>キー[HKLM\HARDWARE\DEVICEMAP\SERIALCOMM]
値名 \Device\Serial0
データ COM1
この場合は、「COM1」を取得したい

<やった事>RegReadで簡単に取得できるだろうと思ったのですが、全然取れませんでした。
<回避策>reg.exeからはデータの取得が可能

Set objWSH = WScript.CreateObject("WScript.Shell")
'RegReadで取得失敗した例
'WScript.Echo objWSH.RegRead("HKLM\HARDWARE\DEVICEMAP\SERIALCOMM\\\Device\\Serial0")
'WScript.Echo objWSH.RegRead("HKLM\HARDWARE\DEVICEMAP\SERIALCOMM\\\Device\Serial0")
'WScript.Echo objWSH.RegRead("HKLM\HARDWARE\DEVICEMAP\SERIALCOMM\\Device\\Serial0")
'WScript.Echo objWSH.RegRead("HKLM\HARDWARE\DEVICEMAP\SERIALCOMM\\Device\Serial0")
'WScript.Echo objWSH.RegRead("HKLM\HARDWARE\DEVICEMAP\SERIALCOMM\Device\Serial0")

'回避策
WScript.Echo objWSH.Exec("reg query HKLM\HARDWARE\DEVICEMAP\SERIALCOMM /v \Device\Serial0")
372名無し~3.EXE:2007/01/23(火) 01:51:52 ID:dZzOJZ4W
\は全部\\にしろ
373名無し~3.EXE:2007/01/23(火) 02:01:31 ID:4m7yBxl6
自己解決能力低すぎ
ぐぐればわかるだろうに
374371:2007/01/23(火) 02:26:27 ID:15EbuWWs
>>372
\でエスケープしてみたがダメだった。
値名が\以外なら、アッサリ取得できるのだが・・・

WScript.Echo objWSH.RegRead("HKLM\\HARDWARE\\DEVICEMAP\\SERIALCOMM\\\Device\\Serial0")
WScript.Echo objWSH.RegRead("HKLM\\HARDWARE\\DEVICEMAP\\SERIALCOMM\\Device\\Serial0")

>>373
すまん。ぐぐってもRegReadで取得する方法がわからかった。
WMIでならやれそうな気もするが、教えてくれまいか
375名無し~3.EXE:2007/01/23(火) 02:53:05 ID:rRUN1PnK
ググれば解ることとはいえ、\のエスケープ方法はMSDNやダウンロード版ドキュメントのRegRead項目にに書いておくべきだよな。

でもRegReadでの\のエスケープを覚えておくより、WMIの扱いを覚えていた方が身になるぞ。
\のエスケープは「可能なこと」だが、WScript.Shellのレジストリ操作はそれ以外に「不可能なこと」が多すぎる。
「不可能なこと」に直面したときにあたふたするよりは、WScript.ShellのRegRead、RegWrite、RegDeleteで出来ることも
全てWMIでやるようにしておいた方が遙かにいいだろ。数年前だとWIMの情報は少なかったが今はあふれかえってるし。
376373:2007/01/23(火) 19:49:29 ID:4m7yBxl6
ああ、勘違いしてたよ。
それなら俺もわからんわ。

wmiでやるならWin32_SerialPort*あたりだろ
サンプルなら
ttp://www.activexperts.com/activmonitor/windowsmanagement/scripts/hardware/ports/
とかじゃない?
377371:2007/01/23(火) 21:37:04 ID:15EbuWWs
>>375>>376
RegReadで\をエンコードする方法はあるんですね。
私はわからんかったので、
WMIのEnumKeysとEnumValueで実装し直しておきました。
レスサンクスでした。
378名無し~3.EXE:2007/01/24(水) 01:03:32 ID:ww8gbHgn
だれか教えて下さい。
WSHでマウス移動の自動化って出来るんですか?
キー送信の自動化とか出来るんですか?
ディスプレイカラーの値を読み込む事って出来るんですか?
プリントスクリーンみたいな画像保存って出来るんですか?
379名無し~3.EXE:2007/01/24(水) 01:59:45 ID:Yau2S1mD
できる。
できる。
意味不明。
できる。
380名無し~3.EXE:2007/01/24(水) 03:40:31 ID:eGutPL5I
RegReadの代替、こんなのも
Set Installer=CreateObject("WindowsInstaller.Installer")
WScript.Echo Installer.RegistryValue(2,"HARDWARE\DEVICEMAP\SERIALCOMM","\Device\Serial0")
381名無し~3.EXE:2007/01/24(水) 07:39:03 ID:7G/RPQuZ
ありがとうございます。
ディスプレイカラーの値を読み込む事って出来るんですか?
→24ビットカラーのRGBの値です。
382名無し~3.EXE:2007/01/28(日) 18:16:25 ID:bulVaiB4
>>375
>でもRegReadでの\のエスケープを覚えておくより、WMIの扱いを覚えていた方が身になるぞ。
>\のエスケープは「可能なこと」だが

ほんと?聞いたことないな〜
383名無し~3.EXE:2007/01/28(日) 20:31:04 ID:t8jFe24C
var str=prompt("str1","str2");
の代わりになるものが欲しいのですが、何かいい方法はないですか?
384名無し~3.EXE:2007/01/28(日) 20:48:56 ID:ce6F4Ah9
どういう時に何が欲しいのかさっぱりだ
385名無し~3.EXE:2007/01/28(日) 23:02:41 ID:Jx0Q5hq7
IEでは window.prompt が使えるけど WSH では使えないって
話じゃないか?
VBScript だと InputBox 関数が使えるが、JScript だと
相当するメソッドはない。

386名無し~3.EXE:2007/01/29(月) 03:01:15 ID:RMea5nPo
そんなときはIEオブジェクト作ってprompt使う
387名無し~3.EXE:2007/01/29(月) 03:48:33 ID:Zhbkzilw
wsfにしてvbscriptで関数書いたらだめ?

<job id="main">
<script language="VBScript">
Function vbinput( mssg, defi )
vbinput = InputBox( mssg, WScript.ScriptName, defi )
End Function
</script>
<script language="JScript">
function prompt( msasg, defd ) {
if ( !msasg ) msasg = "";
if ( !defd ) defd = "";
return vbinput( msasg, defd );
}
</script>
<script language="JScript">
388名無し~3.EXE:2007/02/02(金) 14:06:21 ID:io3AcPQD
htaでのjsでEnumeratorってつかえないの?
389名無し~3.EXE:2007/02/02(金) 17:19:48 ID:2buUxDcl
つかえとるがな。
390名無し~3.EXE:2007/02/02(金) 17:30:37 ID:l8a6AAPU
スレ違いと思うが、Enumeratorが使えるかどうかは、
コレクション側の仕様。HTMLでは使えないコレクションが多い
てぇことじゃないの。インデクス使え。
391名無し~3.EXE:2007/02/02(金) 19:04:18 ID:io3AcPQD
>>389-390
なるほど。
じつは、ファイル挙列したかったんだ。
インデックスつかえるのかー。ちょっとやってみる。
392391:2007/02/02(金) 19:26:54 ID:io3AcPQD
うーん。ファイル数はあってるんだけど。
なんでVBSのfor eachはできるのにjsはできないんだろう・・・。それとも、また勘違いなのか。。。

一応残骸をはってみるけど、あきらめたーー!

function EnumFileName(path){
    var Names = new Array();
    var Fso = new ActiveXObject("Scripting.FileSystemObject");
    var Fo = Fso.GetFolder(path);
    
//  alert(Fo.Files.Count);
    var i=0;
    for(var i=0;i<Fo.Files.Count;i++){
        var Fi = Fo.Files[i];
        Names.push(Fi.Name);
    }

    return Names;
}
393名無し~3.EXE:2007/02/02(金) 19:34:39 ID:2buUxDcl
>>392
<html lang="ja"><head><meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<title>quote</title><script type="text/jscript"><!--
while (1){ try{ resizeTo( 0, 0 ); break; } catch(e){} }
//--></script><HTA:APPLICATION id="hta" border="none" /><script type="text/jscript"><!--
//配列とオブジェクトの宣言
var strCmdLine = hta.commandLine, strHTADir
if ( strCmdLine.indexOf('"') == 0 ) strHTADir = strCmdLine.match( /"(.+?)[^\\]+?"/ )[1];
else strHTADir = strCmdLine.replace( /[^\\]+?(?: .+)?$/, "" );

var objSFS = new ActiveXObject("Scripting.FileSystemObject");
var list = new Array();
var inFiles = objSFS.GetFolder(strHTADir).Files;

//こうするとコレクションのすべての要素に対する繰り返しができるらしい
var enumInFiles = new Enumerator(inFiles);
while ( !enumInFiles.atEnd() ) {
list.push( enumInFiles.item().Name );
enumInFiles.moveNext();
}

//まとめて出力
var dialogMessage = new String( inFiles.count );
for (i in list) dialogMessage += "\n" + list[i];
alert( dialogMessage );
close();
//--></script></head><body></body></html>

学習用にスクリプトと同じディレクトリ内のファイルを列挙するWSHを作ったのが残ってたのでHTAにしてみた。
参考になるか知らないが。whileのところはforでもおk。
394Adrienne ◆HI8ebVe8lo :2007/02/02(金) 19:50:11 ID:fKLh6VfE
>>392
(ちょっと、>>393とかぶるけど)
7行目の var i=0; は不要。
それに、JScriptではforステートメントの制御変数は宣言しないのが流儀。
for( i=0; i<Fo.Files.Count; i++ )でOK.

↓みたいな感じでやるといいよ〜

var fso = new ActiveXObject("Scripting.FileSystemObject");
var f = fso.GetFolder(path)
var fc = new Enumerator(f.files);
var names = new Array();

for (; !fc.atEnd(); fc.moveNext()){
     names.push( fc.item() );
}
395Adrienne ◆HI8ebVe8lo :2007/02/02(金) 20:08:35 ID:fKLh6VfE
var f = fso.GetFolder(path); // →正
var f = fso.GetFolder(path) // →誤:文終了子がない

ね。わざわざ訂正する必要もないと思うけど、一応。
396名無し~3.EXE:2007/02/02(金) 20:14:21 ID:pU/AdnT5
i をグローバルで使うのってどこの流儀?
397Adrienne ◆HI8ebVe8lo :2007/02/02(金) 20:29:13 ID:fKLh6VfE
>>396
function test(){
     for( i=0; i < 5; i++ ){
     }
}

WScript.Echo( i );

試しに↑を走らせてみて。6行目の i は宣言されていないとエラーが出るはず。
つまり、for文の制御変数は宣言なしでも暗黙でローカル変数として扱われるということ。
もちろん、どうしても気持ち悪いなら for( var i=0; ……と書いても構わない。
398392:2007/02/02(金) 21:33:58 ID:io3AcPQD
>>393-395
おまえら!ほんとうにありがとう。できました!
後はエラーチェックとか必要に応じて追加すれば完了だ!!
で、以下のようになったよ。

function EnumFileName(path){
    var Names = new Array();
    var Fso = new ActiveXObject("Scripting.FileSystemObject");
    var Fo = Fso.GetFolder(path);
    var EnFiles = new Enumerator(Fo.Files);
    
//  alert(Fo.Files.Count);
    var i=0;
    for(; ! EnFiles.atEnd();EnFiles.moveNext()){
        Names.push(EnFiles.item().Name);
    //  alert(EnFiles.item().Name);
    }
    return Names;
}
399名無し~3.EXE:2007/02/02(金) 22:56:36 ID:4UL0tw6S
Enumerator の作成を for の初期化節でやるのって少数派なんだろうか
for (var e = new Enumerator(list); !e.atEnd(); e.moveNext()) {
400名無し~3.EXE:2007/02/02(金) 23:04:02 ID:2buUxDcl
省略が好きな人はやるんじゃない?

自分の場合はそのときの気分。
401名無し~3.EXE:2007/02/02(金) 23:07:19 ID:KzBlSYpP
htmlをぶっこ抜く時に

1.CreateObject("MSXML2.XMLHTTP.4.0")
2.CreateObject("InternetExplorer.application")

とかあると思うんだけど、君らならどっち使う。
それとそれぞれのメリット・デメリットあれば教えて下さい。
402名無し~3.EXE:2007/02/03(土) 00:12:55 ID:ZQXI4k07
>>397
あまり知ったかはしない方がいいよ。ボロが出るから。

> つまり、for文の制御変数は宣言なしでも暗黙でローカル変数として扱われるということ。

実行コンテキストが違うからだろ。
悪いことは言わん、スコープチェーンの勉強でもして出直して来い。

ちなみに>>398の var i=0; はマジで余計だな。単なる消し忘れだろうけど。
403名無し~3.EXE:2007/02/03(土) 00:26:29 ID:ZQXI4k07
いや、俺は俺で変なこと書いてるな。

>>397の例で、最終行で i を参照出来ないのは
そもそも関数 test() を1度も呼び出していないからだよ。

試しに

function test(){
     for( i=0; i < 5; i++ ){
     }
}
test();
WScript.Echo( i );

でやって味噌。これでもエラー出る?

この時 i は立派にグローバル変数になっているよ。
スクリプト中のどこからでも参照出来る。
404Adrienne ◆HI8ebVe8lo :2007/02/03(土) 00:44:08 ID:yTQ/iH6h
>>403
試しに
var i=100;
function test(){
    for( var i=0; i < 5; i++ ){
     }
}
test();
WScript.Echo( i );

でやってみた。うん、明らかにグローバルになってるね。一つ利口になった。ありがとう。
ってか、ドキュメント等で悉く宣言省略されてるから無意識にローカル変数になるものと思ってたよ。

なんか、自宣言省略できたり勝手に型変換されたりといったJScriptの仕様は、
逆に難解だよね。
405名無し~3.EXE:2007/02/03(土) 03:11:51 ID:pDHMAoqQ
>>404
「変数の宣言を明示的に行わなければグローバル変数になる」と覚えておけば
問題ないよ。

ややこしいのは for なんかのブロック内で宣言したとき。JavaScript では
変数のスコープはグローバルか関数内かの2つしかない。
(最新版では違うらしいけど。)

for(var i=0; ... みたいにブロック内で var を書いても、これは関数あるいは
スクリプトの先頭でvar したのと同じこと。

>ドキュメント等で悉く宣言省略されてるから

は、宣言したらブロック内スコープを持つものと開発者が勘違いしてバグるの
を心配してのことかも。
横着するには便利んだけどね。関数内で for ループ書くときに、いちいち
関数の先頭でカウンタ変数を宣言しないですむから。
406名無し~3.EXE:2007/02/03(土) 03:36:27 ID:5xiUQTdM
letが使えんからな。
407名無し~3.EXE:2007/02/03(土) 20:43:52 ID:In8o1+SV
匿名関数の中から外部のローカル変数を参照してるクロージャとかもややこしい。
408名無し~3.EXE:2007/02/04(日) 09:01:18 ID:pYYZVU6i
MSXML2.XMLHTTPで
Open "GET", URL, True
と非同期実行した場合、readyStateで通信状態を取得できますが、これをWinHttp.WinHttpRequestで
実行した場合、通信状態はどのようにして取得したら良いのでしょうか?
主要なメソッド、プロパティは共通のようですが、readyStateに該当するものが見つけられずに困ってます。
OSはWindowsXP SP1、WSHは5.6、WinHttp.WinHttpRequestは5.1です。
409名無し~3.EXE:2007/02/04(日) 13:16:16 ID:XUYfkIsH
試してないしドキュメントにもどうなるのか書いてないけど、
WaitForResponse をタイムアウト 0 で呼び出してみるとか?
410名無し~3.EXE:2007/02/04(日) 14:49:19 ID:/70Bq45h
誰か>>401お願いします
411名無し~3.EXE:2007/02/04(日) 16:38:11 ID:Lw9wofTu
>>410
2だと画像などの付属品もダウンロードしてしまう。
412名無し~3.EXE:2007/02/04(日) 21:47:54 ID:MbUYtnwe
こんちわー。
htaで揮発性環境変数(PATH)の設定をするために以下のようにコードを書きました。
ネットを回って得たものなので根拠とかが欠落してます。@@;
それで、ですね。
tagに環境変数名をいれてParhに場所を記述したものをOSに登録したいのですが、下のコードではうまくいきませんでした。
どのように書けばうまくいきそうですか?

function AddSystemPath(tag,path){
    //var WshShell = WScript.CreateObject("WScript.Shell");
    var WshShell = new ActiveXObject("WScript.Shell");
    var WshEnv = WshShell.Environment("VOLATILE");
    if( tag.toUpperCase() == "PATH" ){
        WshEnv.Item(tag) = WshShell.ExpandEnvironmentStrings("%Path%") + ";" + path;
    }else{
        WshEnv.Item(tag) = path;
    }

}

これができたら次のステップにいけるんですー。
作ってるのは簡易版GUI似非Makeです。
413名無し~3.EXE:2007/02/04(日) 22:12:37 ID:JVVlKIId
>>411
1.だとhtml以外は取得しないということですね。ありがとうございます
414名無し~3.EXE:2007/02/04(日) 23:37:47 ID:3x53LZg+
>>412
よくわからんが、
pathに登録したいならレジストリ直接弄ればよいんじゃね?
415名無し~3.EXE:2007/02/05(月) 00:29:38 ID:vT9R2Dhh
>>414
うわ。それは勘弁してください。
"VOLATILE"指定すれば、遺恨も残らないということらしいので、便利だなーとおもったんですけど。
うーん、前途多難ですねぇ。基本機能はほぼできててあとこれだけなんですよ。

まぁ、いいや。またきます。
おやすみなさいー。
416名無し~3.EXE:2007/02/05(月) 00:37:29 ID:xw+mOdqs
勘弁も何も一番簡単だろ。
417名無し~3.EXE:2007/02/05(月) 01:22:47 ID:fqy0z/kI
揮発性の意味・意義をわかってない奴がいるな
418名無し~3.EXE:2007/02/05(月) 01:59:52 ID:ybbbBATF
揮発性環境変数も保持される場所はレジストリであることを知らないのかな?
419名無し~3.EXE:2007/02/05(月) 02:19:32 ID:xw+mOdqs
HKEY_CURRENT_USER\Volatile Environment
420名無し~3.EXE:2007/02/05(月) 02:54:38 ID:xw+mOdqs
function AddSystemPath(tag,path){
var WshShell = new ActiveXObject("WScript.Shell");
var WshEnv = WshShell.Environment("VOLATILE");
WshEnv.Item(tag) += ";" + path
}

いろいろやってみたけどこれで十分じゃね?
421名無し~3.EXE:2007/02/05(月) 03:40:16 ID:ttc4Lfai
>>412
MSDN見たら、PATHとかの予約されてる環境変数はVolatileは
使えないと書いてある。
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/script56/html/wsproenvironment.asp

けど、今試したらうまく動いた。(WinXP)
しかもわざわざ既存のPATHに追記しなくても、追加したいパスを指定
するだけでマージされる。
(考えてみればSystemとUserのPATH環境変数もそんな関係だ。)


うまくいかないのは、すでに動いてるプロセスに反映させたいと思ってるから
とかではない?
SystemだろうがVolatileだろうが、環境変数の反映は新しいプロセス
から有効だよ。
422名無し~3.EXE:2007/02/05(月) 16:49:35 ID:vT9R2Dhh
>416-421
皆さんありがとう!

えっと、VOLATILEでもレジストリに登録されるのは知りませんでした。
>>420をやってみたところ、>>419の場所に登録はされてるんですけど、
>>421にあるように、登録したHTAには反映されてないのかもしれません。

Terapadで書いてはメニューから起動って感じにやってるんですけど・・・。

あ!ってちょっと実験・・・。うげ!できた。
……なんか、起動もと(Terapad)のPath設定を受け継いでたみたいです。。。
エディタ再起動したらうまくいきました。なんてこった。

結局>>421の"すでに動いてるプロセスに反映させたいと思ってるからとか"の部分でした。

お騒がせしました。


・・・しかし、これはちょっと不便だなー。
423名無し~3.EXE:2007/02/05(月) 19:47:41 ID:0J0/Livg
普通に bat に書き出して実行した方が早いんじゃないかな・・・
424422:2007/02/05(月) 21:50:23 ID:vT9R2Dhh
結局それがベターなのかなー。

車輪を知るには車輪を再発明するのが一番!とかわけのわからんことをのこしつつ、
そっちの方向を模索してみますー。スクリプトいじりすぎて動かなくなったことだし。。。@@;

さて、皆さんどうもありがとう。;D
425422:2007/02/05(月) 22:45:24 ID:vT9R2Dhh
ああそうそう。
危険な残骸ほしい人います?

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3613.zip
超危険だしめちゃくちゃ汚いから、扱いには注意してください。

そういうわけでまたどこかで!
426名無し~3.EXE:2007/02/07(水) 16:45:15 ID:AYyF197a
xmlhttpでsetRequestHeaderでIf-Modified-Since付けてsendすると何十分経っても応答こないサイトがあるんだけど、なんで?
427名無し~3.EXE:2007/02/07(水) 20:48:05 ID:CeKP5txc
URL プリーズ
428名無し~3.EXE:2007/02/07(水) 21:51:07 ID:0PYxyQ85
ダウンローダ対策かな
429名無し~3.EXE:2007/02/08(木) 13:22:42 ID:R1J4DUrt
「Volatile」(「揮発性の」という意味)は、現在のログオン・セッションのみに適用さ
れる。名前が示すとおり、Volatile環境変数は一時的に使われるもので、ログオ
ン中のユーザーがログオフしたり、コンピュータを再起動したりすると、変更した内
容は変更前の内容に戻る。
430名無し~3.EXE:2007/02/08(木) 16:44:18 ID:d3kjRTBg
で?
431名無し~3.EXE:2007/02/09(金) 11:30:07 ID:fnbavqX5
>>430

「Process」は、現在のプロセスにのみ適用される環境変数である。Process環境変数は、
コマンド・プロンプトが終了するなど、現在のプロセスが終了すると、変更内容が元に戻る。

変数 System User Volatile Process
NUMBER_OF_PROCESSORS ○ × × ○
PROCESSOR_ARCHITECTURE ○ × × ○
PROCESSOR_IDENTIFIER ○ × × ○
PROCESSOR_LEVEL ○ × × ○
PROCESSOR_REVISION ○ × × ○
OS ○ × × ○
COMSPEC ○ × × ○
HOMEDRIVE × × ○ ○
HOMEPATH × × ○ ○
PATH ○ × × ○
PATHEXT ○ × × ○
PROMPT × × × ○
SYSTEMDRIVE × × × ○
SYSTEMROOT × × × ○
WINDIR ○ × × ○
TEMP × ○ × ○
TMP × ○ × ○

環境変数の種類と利用できる変数(○=利用可、×=利用不可)
432名無し~3.EXE:2007/02/09(金) 12:21:51 ID:Z70kHm//
で?
433名無し~3.EXE:2007/02/09(金) 16:47:48 ID:/+8ALF64
コピペばかりで何が言いたいやら。
434名無し~3.EXE:2007/02/11(日) 00:58:40 ID:XFBIDHB0
おいらみたいなスクリプトをちょっといじるだけの人間には逆にありがたいが・・
検索してもちゃんとわかりやすく解説してるサイトとかなんか見かけないし(;´д`)
WSHのドキュメントには>>431みたいなこれが使える使えないの表とよく分からんコメントがちょろっとしかないし
435名無し~3.EXE:2007/02/11(日) 12:30:23 ID:tgvQIzzh
検索の能力が無いんじゃないか?

http://www.microsoft.com/japan/technet/scriptcenter/default.mspx
436名無し~3.EXE:2007/02/11(日) 14:17:35 ID:83xaTx2C
おせーてください。
var A = new Date(); ってやると
DateオブジェクトのインスタンスへのポインタがAに格納されるのかなと
思ってるんです。
だからもう一回
A = new Date(); をやると
新しいDateオブジェクトのポインタがAに入りますよね。
ということは1回目のDateオブジェクトの確保されたメモリの開放は
されてないんじゃないの?と思ったわけです。
メモリの開放はする必要はないのでしょうか? そもそも認識誤り?
ループで数万回newを実行するのが怖い・・。
437名無し~3.EXE:2007/02/11(日) 15:10:40 ID:XTg9OO+A
>>436
やってみれ
438名無し~3.EXE:2007/02/11(日) 15:41:54 ID:jfeZcFaS
>>435
そんな入り口じゃなくてSystemとUserとVolatileとProcessの違いを書いてるところを直接貼れですぅ
それかおまいがさっさとSystemとUserとVolatileとProcessの違いを「素人に毛が生えた程度のヤツにも」「わかりやすく」教えやがれですぅ
439名無し~3.EXE:2007/02/11(日) 15:58:54 ID:83xaTx2C
>>437
やってるんですよ、でリソースエラーで落ちてるんで
コードを見直しすと
もしかしてこのせいではと思ってるんです。
MSのサイトみてもdestroyメソッドなんてないし・・・
>>438
ググルこともできない奴は、「 あ き ら め れ 」
441名無し~3.EXE:2007/02/11(日) 22:42:10 ID:gLg6x3i4
>>436
参照が外れた時点で自動的に解放されるので大丈夫。

while (true) {
  var A = new Date();
}
とか実行してみればわかるけど、メモリ使用量は増えずに一定。

ただし、
var A = [], i = 0;
while (true) {
  A[i++] = new Date();
}
とかやったら、いつまで経ってもオブジェクトは解放されず、
メモリ使用量はガンガン増える。
442名無し~3.EXE:2007/02/11(日) 23:18:15 ID:GhIBrlc6
>>436
GCは自動
強制的にnull代入したり、deleteする必要があるのはまれ
443名無し~3.EXE:2007/02/12(月) 02:04:02 ID:3LVpBfdW
なんでここで GC の話がでてくるんだろうか...。
444名無し~3.EXE:2007/02/12(月) 02:08:09 ID:QgYwe6Xo
>>439
HTAでかけるならHTAで書いてみてみ。
実行速度云々のダイアログが出るなら何か間違ってるから。
445436:2007/02/12(月) 08:05:03 ID:731Di+ID
いやー、皆様ありがとうございます。
441さんのやり方でテストもしてみて確かに増えないですよね。
参照がはずれると自動開放ということで安心しました。
ということは、他の部分で落ちているということですので
444さんの教えどおりHTAで書いて試してみます。
助かります!
446名無し~3.EXE:2007/02/12(月) 11:53:33 ID:9qzGp9MR
>>443
勉強が足りない
447名無し~3.EXE:2007/02/12(月) 12:00:38 ID:0DSgfs+L
>>443
参照されていないオブジェクトのメモリを回収するのは
GCのお仕事だからだよ。
448名無し~3.EXE:2007/02/12(月) 12:03:44 ID:gVWGPkUz
GC を任天堂のゲーム機だと思ってしまった、とか
449名無し~3.EXE:2007/02/12(月) 12:04:57 ID:QgYwe6Xo
がべぃじこれくたー
450名無し~3.EXE:2007/02/12(月) 17:24:26 ID:Zi22y/xv
WSH、得意なのはバッチ代わり?
ちゃんとしたアプリは作れない?
んなことなくてVBで作れるようなものはたいがい作れる?
GAMEとかシューティングのようなものとか。
451名無し~3.EXE:2007/02/12(月) 17:41:02 ID:gVWGPkUz
まあ止めといた方が良いだろう
452名無し~3.EXE:2007/02/12(月) 17:56:40 ID:Zi22y/xv
ぶっちゃけ、これでGAMEとかRPGとか作れるのかなあと。
453名無し~3.EXE:2007/02/12(月) 18:02:05 ID:Zi22y/xv
>>451
レスありがとう。更新しなくて書いたのですれ違いすいません
これってある意味無料だから、修得したら便利かなって。
GAMEが作れるなら、シューティングとかRPGが作れるなら、たいがいのものは
作れるだろうと思ったんですよ。
GAMEにかぎらず、ちょっと目立つようにJPGを重ねたり動かしたりとかいうのは
良くあるでしょうから。

やめといたほうがいいんですね 有り難う御座いました
454名無し~3.EXE:2007/02/12(月) 18:06:21 ID:hmPAvRl0
>>450
jsやvbsなどのスクリプト言語でGUIツール使いたいならWSHではなくHTAの方がいいよ。
「GAMEとかシューティングのようなもの」というのがどの程度のものを想定してるのか知らないが
HTAならスキル次第でそこそこのGUIツールが作れる。WSHでもIEのインスタンス作ればどうにかなるけどね。
455名無し~3.EXE:2007/02/12(月) 18:09:35 ID:9qzGp9MR
>>453
できるけどEXEのほうが高速かつ無難
玄人じゃないと高速なゲームを作るのは難しい
JavaScript製のブラウザゲームがどの程度、同内容のEXEのゲームと張り合えているのか考えるとよろし
456名無し~3.EXE:2007/02/12(月) 18:19:38 ID:gVWGPkUz
VS すら無料の時代だぜ?
457名無し~3.EXE:2007/02/12(月) 19:25:32 ID:3LVpBfdW
>>447
論点はそこじゃないだろ。

しょぼい知識を披露したかったのか? (w
458名無し~3.EXE:2007/02/12(月) 19:36:20 ID:WOrUc4U6
ろっ、ろんてんはどこなの〜〜??
459名無し~3.EXE:2007/02/12(月) 21:20:57 ID:PkhDhK5r
オレ論点 w
460名無し~3.EXE:2007/02/12(月) 21:28:27 ID:QgYwe6Xo
ガベージコレクションは自動。って書いてりゃ良かったのだろう。
>>441と本筋は同じだすね。がべーじこれくたーってのを説明にまじぇただけで
461名無し~3.EXE:2007/02/13(火) 02:30:05 ID:Ep5PwYrj
意外と知られていないが、Microsoft JScript には
undocumented な CollectGarbage() なる関数が存在する。

ただ、よっぽどのことでもない限り、使用すべきではないでしょう。
(通常、生涯使う機会がないと思うけど)

http://support.microsoft.com/kb/164494
http://support.microsoft.com/kb/266088/EN-US/
462名無し~3.EXE:2007/02/13(火) 02:36:55 ID:Ep5PwYrj
> 関数

メソッドですた。
463名無し~3.EXE:2007/02/13(火) 03:57:12 ID:3QRyx/IL
なんかJavaScriptでFPS作るデモがあったような気がするが
464名無し~3.EXE:2007/02/13(火) 10:24:15 ID:h83QHOwZ
>>454
>>455
レスありがとう!
PDAのスマートフォンであるX01HTやシグマリ3やW-ZERO3で
動くWSH方式のNSBASICというのがあるんですよ。これがほとんどWSHと
文法も同じ。だからWSHを覚えようかなあと。WindowsCE上でも開発できるし。
GAMEを作るにしても作るレベルは、昔MSXで作っていたレベルです。出来れば
当時は線画で3DRPGやシューティングを作っていましたが、これをRPGなら面画で3D表示
できればいいなあと。
市販するとかシェアウエアレベルのものなんて求めていないですから、
当時のBASICなみに気軽にサンデープログラミング出来るのかなあとWSHが。

その程度のものなら出来るというのであれば、WSHアマサンデープログラマーの仲間入り
したいんですが。長々とすいません。
465名無し~3.EXE:2007/02/13(火) 10:25:52 ID:h83QHOwZ
ぐぐってみたんですが、WSHの入門サイトは引っかかったんですが
作った作品のスクリーンショットを公開してるサイトがめっからなくて。
だからWSHがどのくらいの目安を持っているのか、分からなかったんですよ
466名無し~3.EXE:2007/02/13(火) 12:32:37 ID:XbSpjXDZ
そりゃWSHのGUIってメッセージボックス程度しかないから
スクリーンショットを公開してるとこはないだろうね。
467名無し~3.EXE:2007/02/13(火) 13:40:11 ID:RyIkaJG+
メッセージボックスで何か作れる?
468名無し~3.EXE:2007/02/13(火) 14:43:18 ID:7IiMzH02
「はい」の時に[いいえ]ボタンを、「いいえ」の時に[はい]ボタンを押す、
メッセージボックスによる反射神経ゲーム。


var max = 10; // 回数。
var objWSHShell = WScript.CreateObject("WScript.Shell");
var arr = new Array("はい", "いいえ");
var answer, rnd, i;
var time = (new Date()).getTime();
for (i = 0; i < max; i++) {
    rnd = (Math.random() + "").substr(2, 1) % 2;
    answer = objWSHShell.PopUp(arr[rnd], 0, "[ はい / いいえ ] 反射神経測定", 36);
    if (rnd + answer != 7) break; // お手付きにつきゲーム終了。
}
if (i == max) { // 全問正解。
    WScript.Echo("全問正解!\n\n掛かった時間: " + ((new Date()).getTime() - time) / 1000 + "秒");
} else { // お手付き。
    WScript.Echo("お手付き!\n\n成功回数: " + i);
}
469名無し~3.EXE:2007/02/13(火) 16:34:20 ID:RyIkaJG+
>>468
4.469でした
470名無し~3.EXE:2007/02/13(火) 20:28:04 ID:OHI0QKKv
なにげに良展開あげ
471名無し~3.EXE:2007/02/13(火) 22:00:53 ID:RyIkaJG+
「3 < 7-5」みたいな式が正しいかを答える


var max = 5;
var WshShell = WScript.CreateObject("WScript.Shell");
var getX = [function () {return String(Math.floor(Math.random()*9)+1);},
function () {return this[0]()+(Math.floor(Math.random()*2) ? " + " : " - ")+this[0]();}];
do {
var time = new Date().getTime();
for (i=0; i<max; i++) {
var question = getX[Number(i>3)]()+" < "+getX[Number(i>1)]();
var answer = WshShell.PopUp("この式は正しい?\n\n"+question, 0, "不等式", 36);
if (answer == 7 == eval(question)) break;
}
} while (WshShell.PopUp("( "+i+" / "+max+" ) "+(i == max ? "全問正解!" : "お手付き!")
+"\n経過時間: "+((new Date().getTime()-time)/1000)+"\n\nまだ続ける?", 0, "Result", 36) == 6);
472名無し~3.EXE:2007/02/14(水) 20:44:58 ID:R5pO5sAJ
ダブルクォーテーションを文字としてコマンドライン引数に渡し、
 "ARG ARG"
となることを期待して
 cscript example.vbs "\"ARG ARG\""
と実行したのですが、
WScript.Arguments(0)が勝手にダブルクォーテーションを削除しているのか、
 ARG ARG
としてしか受け取れません。
もうよくわからず、
 cscript example.vbs "\"\"ARG ARG\"\""
などとして二重にしてみたりしたのですが当然だめでした。

ものすごく初歩的なことな気がするのですが、検索しても解決できません…。
どなたかお教えいただけないでしょうか。
473名無し~3.EXE:2007/02/14(水) 20:49:03 ID:eKYTLQYh
^
474名無し~3.EXE:2007/02/14(水) 20:56:11 ID:R5pO5sAJ
>>473
おお、素早い返事ありがとうございます。
最初はキャレットでエスケープしたのですがだめでした。

また、結果の表示を間違えて書いてしまいました。
詳しく状況を説明すると、
 WScript.Echo WScript.Argument(0)
 WScript.Quit()
という、example.vbsを作成し、コマンドラインから
 cscript example.vbs "\"ARG ARG\""
を実行すると「\ARG」と表示されます。
また、この円マークをキャレットに変更すると「^ARG」と表示されます。

単純にダブルクォーテーションが削除されて、空白で区切られてしまっているように見えます。
475名無し~3.EXE:2007/02/14(水) 21:45:33 ID:BFGnaiNb
プレフィックスエスケープではなくエンコードエスケープすれば良いのでは?
可逆で有ればなんでも良いわけだが、全体変換ではなく部分変換なら実態参照がいいかも。単純にやるなら
 実行:cscript example.vbs ""ARG ARG""
 変換:WScript.Echo Replace(WScript.Arguments(0), """, """")
更に"を&"でエスケープ出来るようにするなら、組み込み関数のReplaceではなく
正規表現で「s/(?<!&)"/"/g」だな。但しVBScript.RegExpでは後読み「(?<!…)」が使えないので
VBScript.RegExpでやるとすれば「s/(^|[^&])"/$1"/g」って感じかな。
引数の中に'が使われないとするなら
 実行:cscript example.vbs "''ARG ARG''"
 変換:WScript.Echo Replace(WScript.Arguments(0), "''", """")
でもいいし。

ただ、WshShellのRunなどで使うだけなら、普通に"ARG ARG"を渡して、
スペースが含まれてたら""で囲う処理を用意した方が良いと思うけど。
476名無し~3.EXE:2007/02/14(水) 22:12:22 ID:R5pO5sAJ
>>475
おおなるほど、別の文字を変換するのですか。
ついダブルクォーテーションを渡すことばかり考えてしまいました。
実体参照では見通しが悪りそうなので、
シングルクォーテーションを重ねる方法を頂きたいと思います。

単純なショートカットを作成するスクリプトを作りたかったのですが、
ショートカット先へ渡すコマンドライン引数にスペースが含まれることがあるので、
それをダブルクォーテーションで囲みたかったため、この文字をそのまま出力する必要がありました。

おかげさまでなんとかなりそうです。
どうもありがとうございました。助かりました。
477名無し~3.EXE:2007/02/15(木) 23:32:27 ID:wVnZTfYP
>>463
JavaScriptでウィンドウズGUIを再現してるのを見たことはあるな。
まあよっぽどJavaScriptでやるメリットが無い限りはわざわざ選ぶモノでもないけど
478名無し~3.EXE:2007/02/19(月) 03:18:56 ID:2jm0n8Yc
質問です。VBSで標準出力に文字列を出力したいのですが、
WScript.StdOut.Write "hoge"
で「ハンドルが無効です」とエラーが出ます。
また WScript.Echo も標準出力にならず、ウィンドウに文字列が表示されます
どうすれば標準出力に出力できるのでしょうか?
479名無し~3.EXE:2007/02/19(月) 03:53:42 ID:Ea8qR7RP
>478
wscript.exeではなくcscript.exeでvbsファイルを実行する。
480478:2007/02/19(月) 03:55:55 ID:2jm0n8Yc
>>479
上手くいきました。
どうもありがとうございます。
481名無し~3.EXE:2007/02/19(月) 23:36:26 ID:J+D6xycq
【正社員募集】ドワンゴ大卒未満限定で技術者採用【学歴重視】
http://pc10.2ch.net/test/read.cgi/prog/1171868043/79
で、「windows script host(Jscript) でがんばっている俺は却下ですか?」
ってカキコしても誰にも相手にされんかったわ。
482名無し~3.EXE:2007/02/23(金) 11:26:09 ID:GFWOF5op
IPアドレスやホスト名リストを読み込んで、nslookupを実行し
その結果を表示させながら、ファイルに書き出すようにしたいのですが
まったく検討がつかないので方法をお教えください。
483名無し~3.EXE:2007/02/23(金) 11:48:25 ID:zLQ4KMwL
>>482
nslookupというものを知ってるなら、あとはWSHのヘルプ(Windows Script 5.6 ドキュメント)を読めば解ることです。
ヘルプ読んでも解らないと言うなら、日本語を理解できないと言うことだからここで日本語の説明をしても無駄だろうし、
コード書いてくれなんてのはスレ違いなので、あとは自分で頑張りましょう。
484名無し~3.EXE:2007/02/23(金) 12:06:25 ID:soUk2p3d
>>483
うつ病に頑張れは禁句
485名無し~3.EXE:2007/02/23(金) 13:58:27 ID:0m+mdoh4
>>483
日本語が理解できない場合はそのレスも理解できないわけだが
486名無し~3.EXE:2007/02/24(土) 15:06:35 ID:wTaW1+v2
>>482
プログラム書けないやつが本も何も読まず、wshを使えばできると
聞きかじり、2chで人に書いてもらおうなんてあさましいな・・
サイテー
487名無し~3.EXE:2007/02/24(土) 21:44:51 ID:M2W6NVuE
>>482
詰まっている段階が分かりにくいのですが、ここが参考になりませんか。
http://www.atmarkit.co.jp/fwin2k/operation/wsh05/wsh05_03.html


#煽るだけの奴は消えろ。
#見苦しい。
488名無し~3.EXE:2007/02/25(日) 00:20:31 ID:EQ4Q9T2k
#のコメントで後書きする人って何なの
489名無し~3.EXE:2007/02/25(日) 05:58:51 ID:pI2XMlMi
煽るだけの奴とか言うけど、

例え質問に答えてもフレームを混ぜる奴は同類です。
490名無し~3.EXE:2007/02/25(日) 15:09:54 ID:xOojygct
>>488
/.er
491名無し~3.EXE:2007/02/25(日) 17:49:13 ID:TzBAKqFp
スラドなんかよりもはるかに古い文化ですけど
492名無し~3.EXE:2007/02/25(日) 20:16:34 ID:Bn9vmEGX
おもしろおかしい
493名無し~3.EXE:2007/02/25(日) 22:09:24 ID:3p3uGprt
/. はたまにのぞくけど、独自の文化(オフトピなのでACとか)が育ってて
2chやってると違和感があるんだよなー

# オフトピなのでAC
494名無し~3.EXE:2007/02/25(日) 22:16:35 ID:d5QT1Xvl
しかし何故コメントが # 開始なんだろう?
WSH と言うとやはりメインは VBS か JScript。
' か // が基本だと思うのだが。PerlScript もあるけどさ。
495名無し~3.EXE:2007/02/25(日) 22:47:15 ID:+XEJRyC1
/*

>>496以降のレスは全てコメントアウトされる。ざまぁカンカンw
496名無し~3.EXE:2007/02/25(日) 22:48:21 ID:H3CLTB50
*/

再開↓
497名無し~3.EXE:2007/02/25(日) 22:51:57 ID:V5hQEo4p
×>>496以降のレスは全てコメントアウトされる。
>>496以降、最初の */ までのレスは全てコメントアウトされる。
だな

>>496
498名無し~3.EXE:2007/02/25(日) 23:43:00 ID:H3CLTB50
>>495だけが見事にコメントアウトされた件
499名無し~3.EXE:2007/02/26(月) 00:07:50 ID:ybuIjVJ6
ワラタ
500名無し~3.EXE:2007/03/01(木) 08:41:46 ID:Snwf3Oai
501名無し~3.EXE:2007/03/02(金) 20:17:06 ID:imQofTdk
こういう流れになると絶対過疎るなw
502名無し~3.EXE:2007/03/05(月) 22:13:49 ID:pkRZSKvF
以下のダイアログで

自動的に送信しない

を選びたいのですが、どうすればいいのでしょうか?

-------------------------------
問題が発生したため、**を終了します。ご不便をおかけして申し訳ありません。


この問題をMicrosoftに報告してください

503名無し~3.EXE:2007/03/05(月) 22:35:25 ID:70huv0vk
俺ならダイアログを出ないようにするな。
504名無し~3.EXE:2007/03/06(火) 19:21:09 ID:jTn4SU/3
JavaScriptスレにて、

40 :Name_Not_Found :sage :2007/03/06(火) 18:53:49 ID:???
指定したURLからhtmlソースを取得して、
その中から指定した文字列を含むlength個の文字列を抽出し
取得順に配列str[i]に格納しWScript.Echoで出力するプログラムを
今日中に作らないと卒業できなくなるんですが
友達いないボクには無理です神様タスケテクダサイ

というのが来たから誘導しましたwwwよろしくwww
505名無し~3.EXE:2007/03/06(火) 19:26:41 ID:7bsQ1z2v
知るかボケ
506名無し~3.EXE:2007/03/06(火) 21:28:29 ID:rVrCV3Y3
そんなんで卒業できるなんてどこの中学だよ
507名無し~3.EXE:2007/03/07(水) 00:18:40 ID:vyb0FCD/
>>506
卒業できなくなるとは書いているが、卒業できるとは書いていない。
508名無し~3.EXE:2007/03/07(水) 00:27:14 ID:mpEBXn45
つまり必要条件であって十分条件ではないと
509名無し~3.EXE:2007/03/07(水) 01:24:08 ID:Dw1HeTg9
今ieで見ているページを、そのアドレスをfirefoxに送って別に起動するようなieのブックマークレットを誰か作ってください。
自分で考えるのが億劫になりました。 あ゙ーー、もちろん普段はieのスクリプトは切ってます。よろです。

510名無し~3.EXE:2007/03/07(水) 01:29:00 ID:mpEBXn45
そんな事がブックマークレットでできたら、とっくにウィルス漬けです。
511名無し~3.EXE:2007/03/07(水) 02:07:24 ID:Dw1HeTg9
えーできねの。
じゃ、ツールボタンで。
512名無し~3.EXE:2007/03/07(水) 02:09:30 ID:kgCU6w5M
513名無し~3.EXE:2007/03/07(水) 03:06:44 ID:Dw1HeTg9
コンテキストメニューかツールバー経由しかない。
しかし、これ以上入れる場所の余裕が無いんぜ。
514名無し~3.EXE:2007/03/07(水) 11:41:39 ID:pUN54nVl
>>502
ダイアログ出さない設定あるよ
515名無し~3.EXE:2007/03/07(水) 19:35:29 ID:duOZYfea
>>509
他人に教えるのが億劫になりました。
516名無し~3.EXE:2007/03/15(木) 16:34:37 ID:WU5+3R9H
初めまして 以下のことはWSHで出来るでしょうか?

とある固定ディレクトリにあるファイルを選ぶダイアログを出す
このときに、相手先(テキストファイルから読み出す)とコメント入力をする
選択されたファイルをLHAに渡し、圧縮作業が行われ
任意のルールで圧縮名をつけて、いつも決まったところに入れる

決まったところに入った圧縮ファイルは、先ほど決めた
相手先にいつも決まったテンプレートとコメントをつけて
添付ファイルとして送り出す。

出来るか出来ないか教えてくださいまし。お時間をくださいませ
よろしくお願いします。こういうのはWSHのはんちゅうを超えているでしょうか?
517名無し~3.EXE:2007/03/15(木) 16:49:19 ID:lKniy2Bp
>とある固定ディレクトリにあるファイルを選ぶダイアログを出す
これがファイル選択ダイアログならこの時点で無理。
518名無し~3.EXE:2007/03/15(木) 19:52:36 ID:gd0AF5kn
「WSHのはんちゅう」が

スクリプトエンジン: VBScript v5.5 / JScript v5.5
スクリプトランライム: Scripting.Dictionary / Scripting.FileSystemObject
Windows Script Host 標準オブジェクト各種

だけなら無理っぽい。

外部プログラムやcomをガンガン使っていいなら話は別だが。
519名無し~3.EXE:2007/03/15(木) 20:11:54 ID:WU5+3R9H
>>517
ええ、ファイル選択ダイアログのつもりでした。仕事は建築でして
選択されたDXFファイルを自動的にルールに従い圧縮ファイルにして
それをOUTLOOKを起動して、添付ファイルとして、最初に指定した相手に送る直前まで
やりたかったんですよ。送信ボタンを押すのみのところぐらいまで。
ちゅうのは、うちの会社、けっこう年寄りの建築業者(60歳前後が最も多い)が多く、CADは覚えたけどWindowsは
とてもじゃないが覚えきれない人が多数いまして。手順をメモに残しても恐ろしいようです。
毎回DXFアウトからあとよろしくと呼ばれて自分の仕事が止まるのでこの辺なんとかならないかなあと。

>>518
レスありがとうございます。コレガできるならWSHに手をつけようかな
と思っていましたが、ちと残念です。自分的にはWSHってのはマクロスクリプト感覚でしたので
できそうかな?と思っていましたが。

社内で外部から派遣されてる人のPCにはCADしか入れられなくて。この間ようやくLHAとDWというファイラーが
入れるように出来たんですよね。
しかも目の前でこんな動きが出来るんですよと説明して許可書を取ってようやく。

今回のこれはCADに必要だということで作ったなら入れてもいいとようやく許可をもらったんですよ。
自分の仕事に差し支えるからと言ったら通りやすくなったみたいですが

長々と書いてすいません
520名無し~3.EXE:2007/03/15(木) 20:14:27 ID:lKniy2Bp
HTAなら頑張ればできるかもしれない。
521名無し~3.EXE:2007/03/15(木) 20:16:14 ID:WU5+3R9H
OUTLOOKは入ってるXPマシンです。

めちゃくちゃ久しぶりにVB5を取り出すかあ(;´Д`) 6年ぶりぐらい?
まずVB5がXPで動くかっちゅうところから調べないと。

正直言いますとWSHは、インタプリンタ型のVBなのかもなあと
思っていました。
522名無し~3.EXE:2007/03/15(木) 20:45:28 ID:N9Eg5QZi
インタプリンタw
523名無し~3.EXE:2007/03/15(木) 20:48:07 ID:jNvzAAvj
> めちゃくちゃ久しぶりにVB5を取り出すかあ
なんでここでVB5が出てくるの?
ソフトを勝手に入れられないんじゃ、VB5を引っ張り出しても意味無いし
VB5で作ったアプリを入れられるなら、ActiveXコンポーネントを入れることで
WSHでも解決できる問題でしょ。
524名無し~3.EXE:2007/03/15(木) 21:37:43 ID:2Y/tNLpI
http://www.microsoft.com/japan/technet/scriptcenter/resources/qanda/jan05/hey0128.mspx
Hey, Scripting Guy!
ファイルを選択するためのダイアログ ボックスを表示する方法はありますか
525名無し~3.EXE:2007/03/15(木) 22:51:43 ID:mA1C3Gzd
outlookが入っているならVBAでできるだろうに。
なくても標準的に入ってるCDO.Message使ってできるんじゃないの。
526名無し~3.EXE:2007/03/15(木) 23:19:34 ID:A7maWzfR
OutlookかOutlook Expressであるフォルダのメール全てに保存されている添付
ファイルを一気にどこかに保存するスクリプトって書けますか?
527名無し~3.EXE:2007/03/15(木) 23:42:19 ID:9FGCV+mK
>>524
どうせならこっち紹介しようぜ
ttp://www.vector.co.jp/soft/win95/util/se398568.html
528名無し~3.EXE:2007/03/17(土) 14:44:09 ID:K8WNJf+j
Y岡か。懐かしいな。今頃どこでどうしてるやら。
529名無し~3.EXE:2007/03/17(土) 14:46:30 ID:K8WNJf+j
たしかExpressは無理だったような気が。
530名無し~3.EXE:2007/03/20(火) 01:22:03 ID:b9ZVd0cO
ADOのStreamを使って
ふつーのファイルを開こうと思ったんですが

オブジェクト作ってOpenしてなんとかfileloadして
さあRead(1)ってやったら (バイナリファイルを読みたいの)

「お前に食わせる担麺は許可がありません」

とか(文面はうろおぼえ)言ってエラーになったなdけど
なんでですかね?

Widows2kSP4, 普通のテキストファイルの読み出しのやつは
うまくいってます
531名無し~3.EXE:2007/03/20(火) 01:25:56 ID:kDerUjCx
お前に食わせるタンメンがないんじゃないですかね
532名無し~3.EXE:2007/03/23(金) 18:16:44 ID:+CYmGPKo
携帯から失礼します。
wshのプロ達に質問があります。
vbsでPOSTかGETを使って、文字列をWEBサーバに送信したいのですが、どうやれば良いのでしょうか?
533名無し~3.EXE:2007/03/23(金) 18:22:58 ID:G1TmW4yG
>>532
Microsoft.XMLHTTP とか MSXML2.XMLHTTP とか使えばいいよ。
使い方はここのログでも何度も出てきてるし、ググれば解説もサンプルもいっぱい転がってるから自分で調べよう。
534名無し~3.EXE:2007/03/23(金) 22:47:00 ID:cFMNGSpo
ttp://www.uploda.org/uporg744079.jpg.html
上の画像のダイアログにユーザー名とパスワードを入力して
OKボタンを押すと動作をしたいのですが、アドバイスをお願いできませんでしょうか?
VBSを使っていて、他の部分は完成しているのですが、ここの部分だけがどうしても解りません。
535名無し~3.EXE:2007/03/23(金) 23:13:34 ID:byjtAjTE
セキュリティがそんなに重要じゃないなら
http://username:[email protected]/
を開くようにする
536名無し~3.EXE:2007/03/23(金) 23:20:01 ID:cFMNGSpo
>>535
ありがとうございます。
入力はそういうやり方もあるのですね。
その後のOKボタンを押す方法はないのでしょうか?
537名無し~3.EXE:2007/03/23(金) 23:22:55 ID:oZiRW3es
WshNetworkについて教えてください。

現在、webサーバーのJscriptを使用して、
クライアントのコンピュータ名を取得するプログラムがあります。
そのプログラム自体は、下記のとおりとなります。
エラーは2行目でおきているようです。

var WshNetwork;
WshNetwork = new AcriveXObject("Wscript.Network");
Com_Name = WshNetwork.ComputerName;

実は、クライアントの権限が今までドメインのadministratorであったものを、
ドメインのDomain Userとしました。
そのDomain Userには、クライアントのadministrator権限を追加してあります。
多分、ActiveXかWshのcomが読めなくなっているのではないかと思うのですが、
どこを調査していいのかわかりません。

使用しているwebサーバーはWindows 2000server、
クライアントはWindows 2000 sp3となります。

どんな小さなことでもいいですので、ご指導いただけないでしょうか?
よろしくお願いします。
538名無し~3.EXE:2007/03/24(土) 00:32:32 ID:jifbJ56b
>>536
>535をやればわかるさ
539名無し~3.EXE:2007/03/24(土) 00:36:34 ID:jjWZ4P7E
>>538
やったんですけど、OK押さないと進みません・・・。
540名無し~3.EXE:2007/03/24(土) 00:57:10 ID:jjWZ4P7E
PostMessage使えばいいのかもしれないのかな
541名無し~3.EXE:2007/03/24(土) 01:03:19 ID:jjWZ4P7E
すみません、SendKeys使うことで解決しました。
542名無し~3.EXE:2007/03/24(土) 17:38:05 ID:YkL2wEfh
CreateObject("Shell.Application").NameSpace("D:\").Items.Item.InvokeVerb "取り出し(&J)"

Win98 でこれを動かそうとすると「メモリが不足しています」とエラーが
出て上手く行きませんでした orz XPだと動いたのですけれども、Win98で
このvbsを動かすのは難しいでしょうか?
543名無し~3.EXE:2007/03/24(土) 17:55:43 ID:ZHR7dm/d
俺はWSHなんて使ったことない中学生だけど最新のWSHにうpだてすればいいんじゃないの?
ttp://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=0A8A18F6-249C-4A72-BFCF-FC6AF26DC390
544名無し~3.EXE:2007/03/24(土) 18:31:13 ID:5S0it1X0
>>537
エラー書けよ

>エラーは2行目でおきているようです。
3行目だろ?
545名無し~3.EXE:2007/03/24(土) 18:57:09 ID:ZyDgRrWX
>>544
うるせーよカス
546名無し~3.EXE:2007/03/24(土) 18:58:49 ID:ZyDgRrWX
>>544
カス
547名無し~3.EXE:2007/03/24(土) 20:41:59 ID:HRUO8j8b
>>542
Items.item.やめて
NameSpace(17).Items().Item("D:\")つかえ
548名無し~3.EXE:2007/03/25(日) 00:01:03 ID:HRUO8j8b
>>530
Typeをバイナリにしたんかい?
549名無し~3.EXE:2007/03/25(日) 01:03:04 ID:eJl21viZ
>>548
「その女が使っていたのはこんな言語じゃねえのか?」
そば売りがエディタをぺろりとなでると、とたんに問題のコードがJavaScriptに。

「うわっ!」
泡を食ったPGは何もかも放り投げて一目散に逃げていきました。
550537:2007/03/25(日) 11:13:07 ID:qiQp0b59
いや、エラーは2行目です。
行の前にメッセージボックスだすよういしたところ、
2行目の前のはでて3行目のはでませんでしたから。
エラーは「object error」とでます。
551名無し~3.EXE:2007/03/25(日) 18:19:59 ID:Tz2Q6Jgg
エラーメッセージをちゃんと書けよ。

俺の環境だと、>>537 を実行すると。

test.js(2, 1) Microsoft JScript 実行時エラー: 'AcriveXObject' は宣言されていません。

になるぞ。

て言うか、このメッセージ見て対応方法がわからんのなら、素直にあきらめろよ。
552名無し~3.EXE:2007/03/25(日) 19:09:11 ID:JJftShQn
>>537
Ac「r」iveXObjectになっとるがな(´・ω・`)
553537:2007/03/25(日) 19:19:34 ID:qiQp0b59
すいません。web系はほとんどわからずにこのプログラムいじらされてるんです…
他にどのような内容をかけばいいのでしょうか?
エラーメッセージはtry catchでひろったExceptionの内容ぐらいしかわかりません。

あと、2行目は下記間違えておりました。
正しくは「WshNetwork = ActiveXObject("WScript.Network");」です。

ど素人の質問だということは重々承知しております。
なんとかお力をおかしねがえないでしょうか?
いじれと命令した奴に「すみません、僕にはできません」と言え。
555537:2007/03/25(日) 20:19:07 ID:qiQp0b59
もうその人はいないんです。>554

普通にadministrator権限なら使えるんで、文法ミスではないと思ってます。
どこかにあるwsh等にパスが通ってないか、
それにアクセス権限がついてないかだと思います。
ただ、それがどのファイルかフォルダかわからないんです…

ちなみに、try catchは前からついてたのに、エラー表示するように修正しただけです。
htmlやjavaならまだわかるんですが、wshは全然使ったことないもんで。

ご不快はわかりますが、何らかのヒントはいただけないでしょうか?
556名無し~3.EXE:2007/03/25(日) 20:43:54 ID:ImjS/GXy
> もうその人はいないんです。
だったらやらなきゃいいじゃん。
その人が居なくなったのに、やらなきゃならないってことなら
結局誰かに押しつけられてることなんだから、その誰かに言え。

実力以上のことをカッコ良くこなしてるフリをするためにここを使うな。
ということで不快だからヒントはあげない。
                            - 終了 -
557名無し~3.EXE:2007/03/25(日) 21:02:24 ID:woCthK/z
単にIEのセキュリティ設定の問題だったりして、、、
そもそも単純なWScriptが動くのかどうかを確かめたら?
WScriptってローカル(クライアント)のPCにインストールされてないと
だめだからバスが同のって関係ないっしょ。
558名無し~3.EXE:2007/03/25(日) 22:01:46 ID:Tz2Q6Jgg
> try〜catch なんか (* 使わなきゃ *) いいのに...。
559名無し~3.EXE:2007/03/25(日) 22:38:31 ID:RtcpckhP
切り捨てはfixだけど、切り上げって関数ないよな?
560Adrienne ◆HI8ebVe8lo :2007/03/25(日) 22:50:53 ID:MGTeqA1Y
>>559
JScriptならMath.ceil()が切り上げだけどね。
561名無し~3.EXE:2007/03/25(日) 22:52:25 ID:rws3m5kX
取りあえず負の数にして Int して正の数にという手を思いついた
でもまあ JScriptor には Math.ceil/floor があるからどうでもいいや
562559:2007/03/25(日) 23:13:50 ID:RtcpckhP
0.9足してintでいいみたいです。
563名無し~3.EXE:2007/03/25(日) 23:16:54 ID:+IWPGL+l
すみません質問です。
Set fso = CreateObject("Scripting.FileSystemObject")
fso.CopyFile "C:\test\test.txt", "D:\test\"
みたいな感じで単純にファイルをコピーするスクリプトなのですが
C:\Program Files\NetTransport\username' NetTransport.database
と言うファイルのコピーに失敗します(ファイル名に ' が含まれるとダメ)
コピーさせる方法はありますでしょうか
564名無し~3.EXE:2007/03/25(日) 23:28:46 ID:rws3m5kX
>>562
いや良くないだろ。
Int(0.05 + 0.9) だと 0 になるぜ。

>>563
ふつーにできたけどなぁ。
単に読み込み禁止でロックされてただけじゃね?
565名無し~3.EXE:2007/03/25(日) 23:37:08 ID:+IWPGL+l
>>564
レスどうもです
今やり直したら確かに普通に成功しました
仰るとおりロックされてただけかもしれません
スレ汚し失礼しました
566名無し~3.EXE:2007/03/25(日) 23:44:09 ID:ImjS/GXy
>>564
扱う数値が少数第一位精度なら問題ないよ。
きっと>>559が扱うのは少数第一位精度なんだろう。
全ての条件で>>562のやり方が正しいとは言えないけど
頭ごなしにダメって言うのもどうかと。
567名無し~3.EXE:2007/03/26(月) 00:23:53 ID:PEHg0u9B
あと付けで条件つけてどうのこうの言うやつって...。
568名無し~3.EXE:2007/03/26(月) 00:46:17 ID:gncrFpqS
どうしようもないよね。
先に詳しい条件書かなかった559も559だが
その条件が解ってる559自身が、その条件に合う方法を見つけられたのに
後からこういう条件ではダメだのなんだの言っても仕方なかろうに。
569名無し~3.EXE:2007/03/26(月) 03:15:27 ID:N7Ok9Hes
>>566
そういうのは後々他のスクリプトに流用してバグの温床になったりするからなぁ・・・。
570537:2007/03/26(月) 06:38:05 ID:vTpT+SIA
やらなきゃいいんならやらないし、出来ないって上司にはちゃんといってる。
でも、仕事だからそのままにはできないんだよ。
別に実力以上のことやってかっこつけたいと思わないし、
出来ないならできないままにしときたいよ。
WSHのこと質問できるところには全部質問してるんだよ…

ちょっときいてみたいんだが、仕事で「出来ない」っていえる環境って、
どこら辺りにあるんだ?そのままにできるところにいきたいよ…
571名無し~3.EXE:2007/03/26(月) 06:45:21 ID:RmbsiKtv
>>570
お前は「空を飛べ」と言われたらどうする?
また2chに「教えてください」と書き込むのか?
572名無し~3.EXE:2007/03/26(月) 06:46:32 ID:OkIlf65J
空を飛べと言われたら、空を飛ぶに決まってるじゃないか!
573名無し~3.EXE:2007/03/26(月) 07:54:27 ID:N7Ok9Hes
>>570
金出して外注に投げるという手もあるぞ。
574名無し~3.EXE:2007/03/26(月) 11:04:38 ID:4cg/SX7J


                         ハ_ハ
                 ハ_ハ    (^( ゚∀゚)^)   
               ('(゚∀゚∩    )  /
                ヽ  〈   (_ノ_ノ
                 ヽヽ_)
575名無し~3.EXE:2007/03/26(月) 11:19:21 ID:7F+Cl6xg
>>569
関数としてライブラリ化したり、コメントも入れずに使い回したりすればの話ね
少数一桁限定じゃ使いどころは少ないだろうが、内部関数として流用する場合は
その限定条件をコメントとして書いておくだけでバグの温床になるのは防げる

「汎用的に使えるようにした方がいい」というのはもっともだが、そうしてない状態を
「間違い」「バグの温床」と決めつけるのは、それ自体が間違いだ
もっと柔軟になろう
576名無し~3.EXE:2007/03/26(月) 12:06:04 ID:AD+rej51
確かに
577名無し~3.EXE:2007/03/26(月) 12:45:00 ID:R83/Lndf
- Sgn(number) * Int(-Abs(number))
578名無し~3.EXE:2007/03/26(月) 13:15:01 ID:R83/Lndf
>>553
>あと、2行目は下記間違えておりました。
>正しくは「WshNetwork = ActiveXObject("WScript.Network");」です。
それが間違い
579名無し~3.EXE:2007/03/26(月) 13:23:00 ID:tJ7Fxl2K
切り上げには切り上げ桁って要素もあるからな。
例えば0.05を1ではなく0.1に切り上げるということもある。
又は0.05を10に切り上げることだってある。
これだってまだ切り上げの中でも更に十進桁切り上げの中だけの話だし。
有る程度条件が決まってるなら、決め打ち処理するのも悪くないよ。
580名無し~3.EXE:2007/03/26(月) 22:31:40 ID:PEHg0u9B
>>570
なんでお前ができない ≡ そのままにしておく なんだ?

できる奴に代わってもらえばいいだけだろ。社内にいなければ、
>>573 の言うように外注に投げればいいだろ。

> 出来ないって上司にはちゃんといってる。

ホントか? 上司はそれに対してどう言ってるんだ?

>>579
そういうのは、10倍するなり、10で割るなりすればいいだけの話。

「扱う数値が少数第一位精度」等の入力データの条件はプログラマ
側ではどうしようもないケースも多いので、使えるケースはかなり
限られるよ。
581名無し~3.EXE:2007/03/26(月) 22:35:31 ID:72wywYVt
┐(゚〜゚)┌
582名無し~3.EXE:2007/03/27(火) 01:01:27 ID:V+GQ+2Bi
>>575
うん。それはわかる。
ただ、このスレで質問する人間がその辺考えてコメント入れるかといえばかなり疑問。
だから、なるべく汎用的な回答をするか、駄目な条件は出してやる方が親切かなと思う。
583名無し~3.EXE:2007/03/27(火) 21:19:51 ID:NPBcdEuP
なんつーか・・・どうでもいいことのバランス感覚がバロスww
584名無し~3.EXE:2007/03/29(木) 14:20:22 ID:tN2jzjyY
585名無し~3.EXE:2007/04/03(火) 07:47:55 ID:1Q99NK3W
特定のフォルダやファイルを右クリックしたときに出るポップアップを
スクリプトから表示させることって出来ないでしょうか?
586名無し~3.EXE:2007/04/03(火) 11:28:39 ID:22l3N1/7
PopupItemMenu()があるけど使えん
SelectItem()してSendKeys "+{f10}"
587名無し~3.EXE:2007/04/04(水) 05:35:39 ID:ssJ5F2b9
>>586
レスどもでした。
調べてみます。
588名無し~3.EXE:2007/04/05(木) 23:47:56 ID:9bAQcwbY
ie.DocumentからHTMLテキストを得るのには
どれを使うのがいいんでしょうか?
ie.Document.parentElement.outerHtml
を使っていたんですが、最近これだと
ちゃんと取得できないページがある事に気づきました。

Set ie = CreateObject("InternetExplorer.Application")
ie.Navigate "http://www.nicovideo.jp/"
Do While ie.Busy Or ie.ReadyState <> 4
Loop
MsgBox ie.Document.body.parentElement.outerHtml
589名無し~3.EXE:2007/04/05(木) 23:55:50 ID:C+XbpQJO
生のソースは普通には無理だったんじゃないかな
XMLHTTP とか使った方が良い

// IPersistFile::Save なんだが、IPersistFile は IUnknown だから……。
590名無し~3.EXE:2007/04/06(金) 01:24:27 ID:qN1BBhr8
document.documentElement.outerHTML
591名無し~3.EXE:2007/04/06(金) 01:48:49 ID:qN1BBhr8
URL="http://www.nicovideo.jp/"
Path="C:\hoge.html"
Set Application=CreateObject("Excel.Application")
RC=Application.ExecuteExcel4Macro("CALL(""urlmon"",""URLDownloadToFileA"",""JJCCJJ"",0,"""&URL&""","""&Path&""",0,0)")
MsgBox RC
はどうだろ?
592名無し~3.EXE:2007/04/06(金) 02:04:55 ID:blYi0hD7
>>589 >>590 >>591
みなさんどうもありがとうございました。
とりあえず上のURLだと
>document.documentElement.outerHTML
でできるようです。
ie.Document.all.tags("html")(0).outerHtml
という頭の悪い方法も考え出し、これでもできました。
590さんありがとうございました

>>589
完全な生はやっぱ無理ですよね・・・

>IPersistFile::Save
純粋なオートメーション以外は無理ですからね・・・
でもIPersistFile::Saveでもできるんですか?
今度使ってみようかな・・・

>>591
Excelは持ってないわけですが入手の暁には
試させていただきますm(_ _)m
593名無し~3.EXE:2007/04/11(水) 02:06:10 ID:g68mpwXM
IEで表示された画像のキャッシュ(ローカルパス)を取得する方法はないでしょうか?
594名無し~3.EXE:2007/04/11(水) 11:27:29 ID:iUttHWVD
> IEで表示された
スレ違い。
実行ホストがWSH(Windows Script Host)ではなくIE(Internet Explorer)なので。
ここはVBScriptやJScriptのスレではなくWSHのスレだから。
595名無し~3.EXE:2007/04/11(水) 14:39:32 ID:4FX0lSeC
596名無し~3.EXE:2007/04/11(水) 15:06:25 ID:3IvfKlfV
>>594
WSHで起動したIEまたはすでに起動済みのIEから
強引に持ってくるという話だと思うよ。

スクリーンショットを取ってアドレスバーの画像を切り取り
表示されている文字を解析してURLを取得すればいいんじゃないか?
もしくはアドレスバーにカーソルをあわせて文字列をコピーし
クリップボードから取り出す
597名無し~3.EXE:2007/04/11(水) 15:13:22 ID:gY213RNS
>>595
レスどうもです。
言葉足らずでしたが、URLを与えてキャッシュパスを取得する、という
方法を知りたかったのです。
>マルチ
こちらで答えて頂けなかったので別の掲示板で聞いたものです。
(日時を見ていただければ分かるかと。
IEでもWSHでも、使用しているスクリプトエンジンは同じですし、こちらで聞いても
問題ないかと思ったのです。
IEのオブジェクトモデルに関する質問ともとれるのでグレーだとも思っていました。
失礼致しました。
598名無し~3.EXE:2007/04/11(水) 15:15:40 ID:gY213RNS
>>596
レスどうもでした。
上でレスしたとおり、言葉足らずでした。
失礼致しました。
599名無し~3.EXE:2007/04/11(水) 16:12:37 ID:4FX0lSeC
>>597
>こちらで答えて頂けなかったので別の掲示板で聞いたものです。
だからそれがマルチ。断ってから行くのが礼儀

>言葉足らずでしたが、URLを与えてキャッシュパスを取得する、という
>方法を知りたかったのです。
だから
|http://pc11.2ch.net/test/read.cgi/tech/1055075469/951
|http://pc11.2ch.net/test/read.cgi/tech/1055075469/953
に、Drag&Dropの代替をWSHでCOPY&PASTEしてやればよいだけ
600名無し~3.EXE:2007/04/11(水) 16:18:22 ID:4FX0lSeC
こっちで聞くならあっちを断って来い
601名無し~3.EXE:2007/04/12(木) 07:22:13 ID:3CusierK
久々にオレ様がきましたよ〜

>>593
キャッシュをエクスプローラで開けばできるよ。
ie.Document(この場合のieはエクスプローラ)
からドキュメントオブジェクトを取得して中の要素を操作すればできる

>>594
おまいは勘違いし杉。
でもIEホストスクリプト(クライアントサイド)のスレが無い罠・・・

>>595
別にマルチでも目に余る失礼な態度でなければおkと思う。
つか返事が無ければ他にどうしようもない
602名無し~3.EXE:2007/04/12(木) 21:54:42 ID:G96tqkzp
NameSpace(32)では駄目なのか?
603名無し~3.EXE:2007/04/14(土) 12:14:21 ID:G3PWtnXe
そもそもVBScriptうんぬんじゃなくてIEのAPIの話なんだろ?
キャッシュへのアクセスなんてDOMと関係ないし。
で、>>594もまあちょっとあれだが、スレ違いだと思ったわけだろ
InternetExplorerオブジェクトにはそういう機能はない、で終わりだ。
代替案とかいいけどまずそれを確認してからやってくれな
604名無し~3.EXE:2007/04/14(土) 15:41:56 ID:YRhG6sRI
| お前ら、WindowsScripting使ってますか? Part3
| 733 名前:名無し~3.EXE :04/07/23 16:26 ID:7v/exN2o
| IE CacheR
| http://www.vector.co.jp/soft/win95/net/se238516.html
605名無し~3.EXE:2007/04/15(日) 07:00:23 ID:4O+j/UhS
WSHで一意のテンポラリファイルを作るには
どうすればいいのでしょうか?
万一の既存ファイルの破壊を避けたいのです
606名無し~3.EXE:2007/04/15(日) 07:24:33 ID:C65AQ6We
FSO使えばいいじゃん。GetTempNameで名前を得ても良いし
FileExistsでファイルが無いことを確認して、有ったら連番でも付加して
再確認するようなループを作ってもいいし。
607名無し~3.EXE:2007/04/15(日) 08:13:06 ID:/KjjB8H6
IEのリンク上の右クリックメニューからVBSにリンクを送ってあげたいのですが、
WSHでIEのリンクを習得してあげるにはどうすればいいのでしょうか?

external.menuArguments.document.selection.createRange().text

とすることで、選択されているドキュメントを習得することはできたのですが、リンクを習得する方法がわかりません。
よろしくお願いします。
608名無し~3.EXE:2007/04/15(日) 08:59:13 ID:uT1NWWKf
今度こそ>>594だね。
external.menuArgumentsが使える時点で、間違いなくWSH実行ではなくIE実行だから。

とはいえ「external.menuArguments」でググった先見れば解決するけどね。
これでググって1件目のサイトは、俺もIEの拡張メニュースクリプトの勉強で利用させて貰った。
あとはサンプルとかも結構引っかかるので、暇があれば眺めるだけでも勉強になる。
609名無し~3.EXE:2007/04/15(日) 09:31:31 ID:/KjjB8H6
>>608
スレ違いなうえ親切に教えていただきありがとうございました。
これから精進します!
610名無し~3.EXE:2007/04/15(日) 20:55:26 ID:73Fg1OlE
私は Irvine のサンプルで学んだなー……。
611名無し~3.EXE:2007/04/15(日) 21:49:44 ID:j9mRoUTG
>>608
だから該当スレが無い。
Web制作板はサーバーサイドしか無い。
近いのはム板のHTAスレと思うが、
あそこには質問に答える回答者は殆ど居ないし、
HTAとIEは違うと言えば違う。

わざわざスレ立てるのもどうかと思うので
ここでいいんじゃねか?

唯一心配なのは質問者がWSHなのかIEの話なのかを
完全省略して質問してきて話が全然合わなかった場合だけど
612名無し~3.EXE:2007/04/16(月) 11:53:08 ID:j/Qm3ZvY
>>595
おまえ暇人だな
613名無し~3.EXE:2007/04/17(火) 11:42:31 ID:2Ck6Cllg
/////////////////Object.js
Object.prototype.x = 2;

////////////////test.wsf
<job>
<script type="text/javascript" src="Object.js" />
<script type="text/javascript">
to ={};
WScript.Echo(to.x);
</script>
</job>

先生っ、これだと組み込みオブジェクトの拡張が出来ません。
でも、test.wsfのJScriptのコード部分を切り出して、
<script type="text/javascript" src="hoge.js" />
みたいにすると、上手く行きます。

この違いって何?
614名無し~3.EXE:2007/04/17(火) 11:58:03 ID:2Ck6Cllg
おーいえーなんてこったい自己解決。

wsfのタグでこけてたらしい。
駄目だったtest.wsfのコード部分が
<script language="javaScript" /> になってた。

<script type="text/javascript" />にしたら大丈夫だった。

だから>>613は大丈夫ですね。なんという落とし穴。
615名無し~3.EXE:2007/04/17(火) 12:08:43 ID:2Ck6Cllg
もっかいレス。languageで揃えても大丈夫でした。
てかwsfだとlanguageの方が正しい感じなんですね。
616名無し~3.EXE:2007/04/17(火) 20:57:29 ID:khmIvrix
>>608>>611の意見を考えた上で
スクリプトファイルをについてどうしてもわからないことがあるので質問させてください。

IEの右クリックメニューに登録してURLを特定のソフトウェアに貼り付けるスクリプトを書いているのですが、
ウェイトをかけるところがどうがんばっても動いてくれません。

<SCRIPT LANGUAGE="VBScript">
<!--
Set 111= external.menuArguments.event
222= external.menuArguments.document.elementFromPoint(111.clientX, 111.clientY)
Set 333= CreateObject("WScript.Shell")
333.Run "Notepad"
WScript.Sleep 1000
333.SendKeys 222
-->
</SCRIPT>

これを.htmlで保存後、MenuextでURLを送っているのですが、
7行目の一文字目で「オブジェクトがありません:WShost」となってしまいます。
ウェイトをかけないとまともに動いてくれないのですが、
この場合どのようにウェイトをかけてあげればいいのでしょう?

どなたかお力を貸していただけませんでしょうか?
617名無し~3.EXE:2007/04/17(火) 22:01:20 ID:QX125b/X
WSH実行でなければWScriptオブジェクトは無いので
WScript.〜は使えないし、WScriptオブジェクトが無いような状況はスレ違いだってば。

変わりにIEの機能でウェイトを置くことは出来る。WScript.Sleepほど直感的なものではないけどね。
Web制作やHTAで使われる手法だから、そっち系の解説サイト回って、それでも解らなかったら
そっち系のスレで聞け。「該当スレが無い」とか言ってる奴も居るが、そんなことは全然ないから。

> >>608>>611の意見を考えた上で
とか言い訳しても、スレ違いの事実は変わらない。
「マルチ失礼しますが」とか前置きしても、マルチすれば叩かれるのと同じ。
618名無し~3.EXE:2007/04/17(火) 22:03:40 ID:khmIvrix
>>617
わかりました。
ありがとうございます。
619名無し~3.EXE:2007/04/17(火) 22:08:32 ID:tkBKDmqU
スクリプトごと気で威張ってる自称上級者って痛いよね。
自分はどうせコピペぐらいしかやってないくせに。
620名無し~3.EXE:2007/04/17(火) 22:39:11 ID:pianEbMs
>>616
メニュー拡張で待つのは難しかったような
待たないでやる方法を模索したほうがいいんちゃうか
621名無し~3.EXE:2007/04/17(火) 22:48:18 ID:pianEbMs
622名無し~3.EXE:2007/04/18(水) 01:44:18 ID:EcPUf9dE
> 「該当スレが無い」とか言ってる奴も居るが、そんなことは全然ないから
ではどこのスレでそういう事を教えてくれるのか
具体的に教えていただけますかね?
誘導するのならちゃんと具体的に示すべきだと思いますが?

あと、マルチ叩きとか、WScriptが無いからスレ違いとか
くだらな杉。
ムダにレス消費するだけだからお前が答えたくなければ黙っとけ

つか>>617は本当にゴミレスだね。何の情報も無い
ちなみにこれもゴミレスです〜
623名無し~3.EXE:2007/04/18(水) 03:57:31 ID:GjzdXx90
ちなみにこれもゴミレスです〜
624名無し~3.EXE:2007/04/18(水) 11:17:22 ID:liUfKfa9
書き込んだ奴そのものがゴミだからしょうがないね
m9
625名無し~3.EXE:2007/04/18(水) 11:43:19 ID:fiFeCVqu
WScript.もCOMオブジェクトなので
それをIEなどに渡してやればWScript.Sleepなども使えるよ
面倒さを超えるメリットがないのでしないだけ
626名無し~3.EXE:2007/04/18(水) 13:16:27 ID:fiFeCVqu
wscript.vbs
---
set shell=createobject("shell.application")
shell.windows().Item(0).putproperty "WScript",WScript
MsgBox "Waiting...",,WScript.ScriptName
---

hoge.hta
---
<script language=vbscript>
set wshell=createobject("wscript.shell")
wshell.run "cscript wscript.vbs"
do while not wshell.appactivate("wscript.vbs")
wshell.run "ping localhost -n 1",0,true
loop
set shell=createobject("shell.application")
set W=shell.windows().Item(0).getproperty("WScript")
W.Echo "hoge"
</script>
627名無し~3.EXE:2007/04/18(水) 15:31:38 ID:DNW4VSpp
こいつ、バカだw
628名無し~3.EXE:2007/04/18(水) 16:48:45 ID:Lu/hjP0v
また何か訳わからんのが沸いた >>627
629名無し~3.EXE:2007/04/18(水) 18:01:04 ID:v/cHbh3Z
何ムキになってるの?
630名無し~3.EXE:2007/04/18(水) 21:59:46 ID:2KIA1Ng+
>>625
一回自分でやって、アホさに気づけ。
631名無し~3.EXE:2007/04/18(水) 23:28:47 ID:B4mHvh80
しかし何だかなこのスレは・・・

だからどう見ても>>625
こんな事やるのはアホくさいからやらない、
と言ってると思うんだが・・・
632名無し~3.EXE:2007/04/18(水) 23:33:59 ID:B4mHvh80
多分知らなかった、という事なのだろうが
あんまり悔し紛れに変な事言わない方がいいぞ?
せっかくお前らの知らない事書いてくれてるのに・・・

つかこのスレもダメだな・・・
633名無し~3.EXE:2007/04/19(木) 00:08:31 ID:/faBWwVN
たとえばアプリを制御するのにちゃんと経路が用意されてるけど
面倒だから全部SendKeyで操作しちゃうとかよくやるだろ。

で、納品先で処理中にキー叩くバカがいたりして
ロールバックかかって全データパァになって
サービスセンターから夜中にたたき起こされて
634名無し~3.EXE:2007/04/19(木) 01:23:10 ID:/BqK3ADX
>>633
いや、それは設計者が悪いだろ。
客は常に最悪の操作をする前提で設計しなけりゃ。
「処理中のキー操作については保証外」って議事録でも作ってあるならともかく。
635名無し~3.EXE:2007/04/19(木) 02:42:12 ID:p7ByV6U7
>>634
大丈夫。その後の運用マニュアルには
「不要時はキーボード・マウスを取り外す」
という条項が追加されましたから!

さすがに転職を考えたよ
636名無し~3.EXE:2007/04/19(木) 10:58:04 ID:fJ+0DaBe
馬鹿は同じミスを何度もするからまた転職かな
637名無し~3.EXE:2007/04/19(木) 18:46:05 ID:cXVbURLh
素直にスクリプトしか書けない、って事白状しろよ。
VBやCなら普通にメッセージ送ればいいだろうさ。
あとまあ処理中はキーボードをロックしちまうとかな
638名無し~3.EXE:2007/04/19(木) 23:21:07 ID:p7ByV6U7
別にそんなことわざわざいう必要も無いよ。
全部キーボード操作した、納品先の会社の新人のせいにしたから。
639名無し~3.EXE:2007/04/19(木) 23:25:49 ID:rvvht0fD
さすが能無し。言い訳と自己弁護だけは一人前。
640名無し~3.EXE:2007/04/20(金) 00:25:35 ID:JAWrAlO6
>>639
お前少しきつ過ぎね?

>>638
いや
これの事言ったのよ
>たとえばアプリを制御するのにちゃんと経路が用意されてるけど
>面倒だから
と言ってるのが言い訳で
実はSendMessageを使った事がねーんだろーと
641名無し~3.EXE:2007/04/20(金) 00:27:12 ID:NBN5PLNf
つか、それは納品先もアホすぎる。
俺なら要求仕様を満たしてないって言って納品書を突っぱねるが。
642名無し~3.EXE:2007/04/20(金) 00:48:41 ID:JAWrAlO6
相手先にスクリプトキディ程度のスキル持ってるのが
一人もいないからじゃね?
643名無し~3.EXE:2007/04/20(金) 01:03:02 ID:RNda4icP
おまいら良くそんな他人ごとに熱くなれるな
644名無し~3.EXE:2007/04/20(金) 02:37:58 ID:P4B3OPLJ
>>640
そ、そのくらい使ったことくらいあるわよ!
予算10万でやってって言われたから 手を抜いただけなんだからね
勘違いしないでよ!
645名無し~3.EXE:2007/04/20(金) 15:19:57 ID:4KZDDhdu
どの位の規模はしらんが、
スクリプトで10万もとるのかよ・・・
646名無し~3.EXE:2007/04/21(土) 01:51:08 ID:7KTLSfod
ヘタに手を抜くと後でガチャガチャ言われてかえって面倒なんで
どんなバカでも使えるようにしとくもんだけどな。普通。
・・・まあVBSでなく最低VBが使えて、の話だが。
647名無し~3.EXE:2007/04/21(土) 08:49:29 ID:mN72ojZl
>>646
それやってると赤字になりかねんし。
でも相手の現場に責任かぶせると、次からやりにくくなるからお勧めしない。
基本は制限事項を議事録にとっとくことだね。
648名無し~3.EXE:2007/04/21(土) 10:45:52 ID:evmfqMJZ
> それやってると赤字になりかねんし。

どんだけへたれの会社なんだよ。

て言うか、納品するんならもっとちゃんと見積もれよ。

自分の見積もり能力のなさを、赤字になるからって手抜きするなんて
最低の会社だな。
649647:2007/04/21(土) 12:10:15 ID:mN72ojZl
>>648
いや、俺は>>633ではないので・・・。

営業が既設品の流用とか、簡単でいいとかって条件で安くとってくることはある。
設計積めている段階で、安く作るとまずい条件が見つかることもよくある。
そういう場合は
「これこれこういう場合はまずいんで、そこは運用で回避してくださいね」
「それが駄目なら受注仕様書の変更になるので見積もりからやり直しますよ」
と提案すればだいたいは運用で回避してくれる。

明らかにこっちの落ち度なら、赤字でやるけどね。
受注仕様書は客のサイン貰ってるんだから、それの範囲外は金が出ないならやらない。
650633:2007/04/21(土) 13:12:06 ID:uI3/X9aK
>>649
そうそう!

安く請け負ったときは、ぜーんぶ運用で回避!
これが基本だよね〜。
自慢じゃないが、赤字でなんかやったことなんか無いよ
651名無し~3.EXE:2007/04/21(土) 18:21:38 ID:biPPlYdx
短期的にはそれでいいかも知らんが
その内仕事来なくなるよ
特別なコネクションでもないと
652名無し~3.EXE:2007/04/21(土) 20:43:06 ID:mN72ojZl
>>651
そうならないために事前に仕様書だして、議事録とって、客のサイン貰うわけで。
(1次仕様書と2次仕様書で矛盾してるってのならこっちのミスだが)
自分がサインする書類くらい責任持ってくれないと困る。

「とにかく安く」連呼するだけでろくに書類読まない客は
どーせ赤字仕事しかよこさないので切れてもかまわない。
653名無し~3.EXE:2007/04/21(土) 20:54:41 ID:biPPlYdx
結果に不満、って言う客に
お前がサインしたんだろが、って言うって事?
客満足度を言ってるのであって
契約トラブルの事言ってるのではないよ
654名無し~3.EXE:2007/04/21(土) 20:57:17 ID:VyvL4bCk
保険屋か!
655名無し~3.EXE:2007/04/21(土) 21:09:40 ID:PBYnEjCb
まあ、安ければよくてトラブルが以前に有っても他を検討する気配の無い
アホな客ならそれでも良いだろうな。
656名無し~3.EXE:2007/04/21(土) 21:10:44 ID:mN72ojZl
>>653
だから、事前に「この値段で実現するとこういう結果になりますがいいですね?」って了承とる訳よ。
事前に了承とっておけばほとんどの客は納得してくれるよ。

どうしても納得できない客とはそこから改修方法について協議するよ。
相手もまともな社会人ならほとんどは追加コストが発生することは納得してくれる。

処理中にハードウェアの特定のボタン押すと不具合が出るってのは実際に経験あって、
そんときは警告マーク入りのアクリルカバーをボタンにかぶせるのと、
画面に警告表示を追加するのを数万円で受注して決着した。
最初は相手側の担当者も「滅多に押さないボタンだからいいよ」って言ってたのに
現場に持って行ったら初日にその問題が発生したもんで。
657名無し~3.EXE:2007/04/21(土) 22:47:01 ID:evmfqMJZ
> 最初は相手側の担当者も「滅多に押さないボタンだからいいよ」って言ってたのに

要するに双方ともにろくろく検討してないってことだろ。

DQN どうし仲良くていいじゃないか。

だから、君には「数万円」の仕事しか任されないんだろうけどな。(w
658名無し~3.EXE:2007/04/21(土) 23:03:23 ID:e3sgWE04
いい加減スレ違いってことに気づけよ、おまえら。
659名無し~3.EXE:2007/04/21(土) 23:06:33 ID:mN72ojZl
>>657
相手の現場の細かいところなんてわからんもの。
だから判断を客先の担当者に投げておいたわけ。

あと、装置としては百数十万ね。
数万円なんて誤差範囲だからサービスしても良かったんだけど
発注側の都合による変更は少額でも有償で受けとかないと
「前回アレをサービスしてくれたんだから〜」とかってどんどん要求がエスカレートすることがあるから。
(もちろん、詳細設計前の仕様変更なら無償でやることもあるけど)
660名無し~3.EXE:2007/04/21(土) 23:16:18 ID:mN72ojZl
あー、と。
金額に関する判断は実際には営業を通すので、俺の見積もり通りには成らないこともよくある。
だから、上にかいたことは全部うちの会社としての方針。
661名無し~3.EXE:2007/04/21(土) 23:45:11 ID:evmfqMJZ
> だから判断を客先の担当者に投げておいたわけ。

無能なSEの典型

そんな奴がいる会社ならそりゃ全体で百数十万の仕事しかこないわな。(w
662名無し~3.EXE:2007/04/21(土) 23:57:42 ID:mN72ojZl
>>661
現場の人間から聞き取りさせてもらえる窓口があればそっちからも確認とるけどー。
業種的に相手の担当者以外に直接連絡とれる窓口を用意してもらえないもんでー。
だから相手担当者経由での確認以外にこっちの確認はできませんー。
663名無し~3.EXE:2007/04/21(土) 23:58:43 ID:HaLeI3qs
メッセでやってろ。
664名無し~3.EXE:2007/04/22(日) 00:46:43 ID:SAYu4htl
他所でやれ。
665名無し~3.EXE:2007/04/22(日) 01:43:57 ID:ROVJktfw
evmfqMJZが最初は
>君には「数万円」の仕事しか
って言ってたのに次には
>全体で百数十万の仕事しかこないわな
って言ってるのには何だろなこりゃ、って思った。

次は日本人がバカだから
日本全体で数十兆の仕事しかこないんだよな、
って言ったりして・・・
666名無し~3.EXE:2007/04/22(日) 03:07:06 ID:STLmzq4K
>>665
いや、そこはさすがに労働人口を基準に考えようよ。
667名無し~3.EXE:2007/04/22(日) 14:15:39 ID:LWZyWhe/
>>662
だから「責任は全部お客さんの方です」ってか?

言い訳乙。

>>665
わかってない無能SEが何か発言しないといけないと思って
よくこう言う意味不明なこと言うよな。(w
668名無し~3.EXE:2007/04/22(日) 15:45:30 ID:HXxtiC+Y
>>667
>だから「責任は全部お客さんの方です」ってか?
そうだよ。仕事だからね。

自分で仕様を決められないお客さんなら、
間に商社なりコンサルなり通して発注すればいいわけで。
こっちは自分で仕様を把握してる客を前提に対応してるから。
669名無し~3.EXE:2007/04/22(日) 16:07:54 ID:nmEkOEz8
まあまあ、そんなに自分の無能ぶりを自慢しなくても
キミがオシコトできるのは判ったからさ
670名無し~3.EXE:2007/04/22(日) 16:22:54 ID:WSHjDKMI
オナニーとセックスの話はヨソでやれ。
671名無し~3.EXE:2007/04/22(日) 18:13:01 ID:STLmzq4K
>>668
まあそこでおろおろする客にはうちでコンサル紹介するよ。
実体はオレなんだけど。
672名無し~3.EXE:2007/04/22(日) 19:42:46 ID:JybLxewW
Set objWsh = CreateObject("WScript.Shell")
Set objExec = objWsh.Exec("cmd /c dir c:\temp")

Do While objExec.Status = 0
    WScript.Sleep 100
Loop

...

上記のようなコードで、「c:\temp」フォルダにファイルを80個ほど置いておくと、
Status確認のループが無限ループに入ります。
閾値があるらしくて、それ以下では一瞬でループを抜け、それ以上ではまったく返ってこなくなり……
という感じ。
673名無し~3.EXE:2007/04/22(日) 20:57:31 ID:ivWOgg9X
便秘にはこーラック
674名無し~3.EXE:2007/04/22(日) 21:08:36 ID:evAQ2yKS
こうらくさんの座布団もっていきなさい。歌丸です
675名無し~3.EXE:2007/04/22(日) 22:01:38 ID:k8ZwHNGh
evmfqMJZ
LWZyWhe/
お前しつこくね?
つっこみが言い訳とか無能とかたいして面白くねーし
もう少しなんつーか思わずつっこまれた相手自身が
笑うような事書けねーのかよ
676名無し~3.EXE:2007/04/22(日) 23:09:41 ID:sK80uPQR
空気読めない奴らが客を満足させるとか語るなよw
677名無し~3.EXE:2007/04/22(日) 23:28:16 ID:STLmzq4K
ひとつひとつは小さな案件だが、100集まればすぐ1億だ!
はっはっは!

実際には半分の半分くらいしかこなせてないけどね〜
今年度も黒字だったので、ヨシだ。
納期が2年延びたのもあるけど、客のせいにした!
678名無し~3.EXE:2007/04/23(月) 00:30:44 ID:Bhk5cVuF
>>668
指摘されると開き直り。

流石アホSEだな。(w

>>672
標準出力のバッファは 4KB ぐらいしかないから、objExec.StdOut.ReadLine
とかで読み取ってやんないと駄目。

どんなことやりたいのかわからんけど、例えば下記のようにすれば全行表示できる。

Set objWsh = CreateObject("WScript.Shell")
Set objExec = objWsh.Exec("cmd /c dir c:\temp")

Do Until objExec.StdOut.AtEndOfStream
  WScript.Sleep 100
  WScript.StdOut.WriteLine objExec.StdOut.ReadLine
Loop

ただし vbs は、ストリームにデータが入っているかをチェックする方法がないから、
上記の方法でも標準エラー出力に 4KB 以上のデータを吐くプログラムだと、無限
ループになる。この、回避方法は俺は知らない。

>>675
> もう少しなんつーか思わずつっこまれた相手自身が笑うような事書けねーのかよ

つ 鏡
679678:2007/04/23(月) 00:43:30 ID:Bhk5cVuF
忘れてた、ちょっと訂正

× この、回避方法は俺は知らない。
○ 標準出力もしくは標準エラー出力をファイルに吐き出す以外の回避方法を、俺は知らない。
680名無し~3.EXE:2007/04/23(月) 02:16:09 ID:AnLMhu/8
Set objExec = objWsh.Exec("cmd /c dir c:\temp 2>&1")
681名無し~3.EXE:2007/04/23(月) 07:51:09 ID:vCdmUApF
どうも有難う勉強になったわ。

この話ここまで長く書けるのか・・・
682名無し~3.EXE:2007/04/23(月) 14:23:16 ID:XYh3oPaX
wshってしろうとようかと思っていたが、プロも使うのか?
683名無し~3.EXE:2007/04/23(月) 15:19:25 ID:ql3ESscK
使える物はなんでも使うのがプロ
684名無し~3.EXE:2007/04/24(火) 01:08:13 ID:SJLA9t83
ふ〜ん
685名無し~3.EXE:2007/04/24(火) 02:02:58 ID:B8ZPPHeZ
納品はしなくても、デバッグとかにあると便利。
ログデータの整理とか、ダミーデータ作るのとか。

頻度高いなら専用ソフト作るが。
686名無し~3.EXE:2007/04/24(火) 09:02:49 ID:uawi901y
親切な方、D&Dしたファイルを削除してくれるだけのスクリプトをいただけますでしょうか……。
687名無し~3.EXE:2007/04/24(火) 09:11:53 ID:maqUL7OV
実行しているscriptのファイル名は、WScript.ScriptFullName(or ScriptName)で取れるけど、
wsfの<script src="hoge.vbs"/>でインクルードされた側のファイル名って取れるのかな?

上の例で行くと、インクルードされてるhoge.vbsの中で"hoge.vbs"(もしくはフルパス)と言うファイル名を取りたい。
単純にhoge.vbs内でWScript.ScriptFullNameとやると、wsfからインクルードした場合は、
呼び出し元のwsfのファイル名が帰ってきちゃう。
688名無し~3.EXE:2007/04/24(火) 09:18:13 ID:maqUL7OV
>>686

CreateObject("Scripting.FileSystemObject").DeleteFile WScript.Arguments(0), True

1行でおk
689686:2007/04/24(火) 09:57:43 ID:uawi901y
>>688
シンプルで美しいスクリプトです、ありがとうございます!
690名無し~3.EXE:2007/04/24(火) 10:07:50 ID:uawi901y
>>688
応用して、

Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set objArgs = WScript.Arguments
For I = 0 to objArgs.Count - 1
objFSO.DeleteFile WScript.Arguments(I), True
Next

と書いたら複数ファイルに対応できました。ありがとうございます。
691名無し~3.EXE:2007/04/24(火) 10:08:56 ID:uawi901y
2行目いらなかったです。
692名無し~3.EXE:2007/04/24(火) 10:14:15 ID:uawi901y
改変して、

For I = 0 to WScript.Arguments.Count - 1
WScript.CreateObject("Scripting.FileSystemObject").DeleteFile WScript.Arguments(I), True
Next

としました。ありがとございます。
693名無し~3.EXE:2007/04/24(火) 10:20:17 ID:9IeWnjrK
なんでわざわざVBSで書くんだよwwwいじわるだなwww
694名無し~3.EXE:2007/04/24(火) 11:08:22 ID:AOYlXD1I
画像掲示板の自動巡回として使ってる
wsh便利
695名無し~3.EXE:2007/04/24(火) 13:59:30 ID:MVyPALf6
ソースplz
696名無し~3.EXE:2007/04/24(火) 14:07:14 ID:fTTIq8yW
diy
697名無し~3.EXE:2007/04/24(火) 14:34:08 ID:Jm4E73d+
>>694
みんなそういうことはやってるだろうけど、そういうことは人に言わずにひっそりやるものだぞ。
「俺ってこんなことできるんだぞ」と自己主張したい年頃なのかも知れないがw
698名無し~3.EXE:2007/04/24(火) 15:36:22 ID:uFNbu+9H
手段を問わなければ出来るよ
699698:2007/04/24(火) 15:38:09 ID:uFNbu+9H
700名無し~3.EXE:2007/04/24(火) 19:22:32 ID:r8k6oIAv
専用ブラのジェーンのステータスバーの完了ってのを
取得したいのですがどうすればいいですか?
701名無し~3.EXE:2007/04/24(火) 22:10:20 ID:zsYD+HSB
はぁ?
702名無し~3.EXE:2007/04/24(火) 22:24:38 ID:9IeWnjrK
>>700
他プロセスのウィンドウのステータスバー内の文字列を取得したい。

と言っているんです?
703700:2007/04/24(火) 22:56:43 ID:6tTUt89Z
そうです。
704名無し~3.EXE:2007/04/25(水) 08:16:56 ID:JhQaRiIx
では
「他プロセスのウィンドウのステータスバー内の文字列を取得できるCOM」
を使ってください。WSH本体(WScript.exe、cscript.exe)にはそういう機能は無いので。
COMを探すか作るかはお好きなように。探すことも作ることも出来ないなら君には無理ってことになるね。

因みにそれを取得したあと何をするかにも因るが、こういうことはAutoHotkeyの方が得意だよ。
705名無し~3.EXE:2007/04/25(水) 09:13:06 ID:qvPjG5g/
>>704
このスレでは、WSH本体に無い機能について語ることはNGなのか?

というか、それ以前に、これ普通に出来るだろ。
ちょっとサンプル持ってくる。正座して待ってろ。
706名無し~3.EXE:2007/04/25(水) 11:50:54 ID:eKTc1S97
普通のEXEにして標準出力から受け取ればいいだけの話なのに
わざわざオートメーションサーバー
作らなければならないと言い出す704は
当然COMが何なのかも知らないし普通のEXEも作れない知ったかのアホ
707名無し~3.EXE:2007/04/25(水) 13:33:11 ID:4evyIg1O
> 普通のEXEにして標準出力から受け取ればいいだけの話なのに
ここ、笑うところ?
708名無し~3.EXE:2007/04/25(水) 15:29:12 ID:C7A55gUG
ファイルのdropで起動されたか、ファイルを指定されて起動されたか
区別する方法はないでしょうか?
709名無し~3.EXE:2007/04/25(水) 17:10:55 ID:9g5HSWSr
>>705
足が大変なことになってますが、まだですか?
710名無し~3.EXE:2007/04/25(水) 19:37:49 ID:BPvwMLAd
> 707 :名無し~3.EXE:2007/04/25(水) 13:33:11 ID:4evyIg1O
> > 普通のEXEにして標準出力から受け取ればいいだけの話なのに
> ここ、笑うところ?
やっぱり意味わからなかったみたいねw
711名無し~3.EXE:2007/04/25(水) 22:08:25 ID:XeOH9w0p
そうでもないか

むしろ706のほうが解ってな(ry
712名無し~3.EXE:2007/04/25(水) 22:45:02 ID:qRvMc+BJ
「他プロセスのウィンドウのステータスバー内の文字列を標準出力」するexeを作って
それをwshから呼べば、stdoutから文字が取得できるってことじゃないの?

>>705
足が・・・
713名無し~3.EXE:2007/04/25(水) 23:04:36 ID:/zJ5vBV1
済まぬ・・・
他の事はかなり出来るようになったのだが
なぜかステータスバーだけ取得できぬ・・・
こうなったら画像処理か・・・いやアホだ・・・
714名無し~3.EXE:2007/04/26(木) 01:32:30 ID:1rUsauG4
           / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    ○y-~~ <     ステータスバーと一口にいっても、
    |\     \   コモンコントロールのやつもあれば独自実装っぽいのもあるし
_| ̄|○ ̄|      \  子にtoolbarとかもってるやつもあるし、まあ一発で取るのは難しいよね。
 ↑            \____________________
>>713
715名無し~3.EXE:2007/04/26(木) 01:38:12 ID:sxwmgrUM
Jane使ってないけど
画像処理するぐらいならメッセージでもフックしてみたら?
たぶんメッセージでテキストやり取りしてるでしょ。
716名無し~3.EXE:2007/04/26(木) 12:30:57 ID:C1h0Mixs
>>686
削除でなくごみ箱送りは?
717名無し~3.EXE:2007/04/27(金) 03:18:12 ID:LcwkbNjt
http://111.111.111.111:8888/
http://22.2.22.2:8080

このようなURL文字列のhttp://の部分とポート番号を削り、IPのみに置換するスクリプトを作っています。
具体的には上記の例だと「111.111.111.111」「22.2.22.2」こんな感じです。

先頭部分のhttp://の部分に限っては

Replace(http://111.111.111.111:8888/,"http://","")

このように指定してあげることで、削ってあげることができたのですが、
コロン部分、ポート番号、最後のスラッシュを削ってあげるにはどのように記述してあげればいいのでしょう?
コロン以降を削るにも、httpの直後にコロンがありますし、ポート番号は千差万別、最後のスラッシュはあるかわからない。

このような状態でどうしたらいいのかまったくわかりません。
また、IPのみの場合はそのまま送れるようにしたいのですが、皆さんのお力を貸していただけないでしょうか?
718名無し~3.EXE:2007/04/27(金) 03:42:45 ID:aQRmZHIa
普通そういう場合正規表現を使うか、
InStr()で位置を調べMid()を使って分解する。
719名無し~3.EXE:2007/04/27(金) 04:26:17 ID:2JiNl1j3
str.match(/[\d.]+/);
720名無し~3.EXE:2007/04/27(金) 04:41:31 ID:LcwkbNjt
>>718
>>719

aaa = "http://111.111.111.111:8888/"
bbb = Replace(aaa,"http://","")
WScript.Echo bbb



現状この状態で行き詰ってます・・・orz
ググっていろいろ試しているのですが、頭が足りないせいかどうも上手くいきません。
もう少し詳しくお願いできませんでしょうか?
721名無し~3.EXE:2007/04/27(金) 05:06:19 ID:aQRmZHIa
2
> Windows Script 5.6 ドキュメント ダウンロード (exe 形式; 1.67 MB)
722Adrienne ◆HI8ebVe8lo :2007/04/27(金) 05:11:38 ID:kn/mZrfu
>>720
基本的に>>719のでいけるはずだけど、
ポート番号も削るとすると、↓みたいな感じかな。

var aaa = "http://111.111.111.111:8888/"
var re = new RegExp("https?://(([0-9]{1,4}\.){3}[0-9]{1,4})[:0-9]*/","ig");
WScript.echo(aaa.replace(re, "$1"));

JScriptで悪い。
723Adrienne ◆HI8ebVe8lo :2007/04/27(金) 05:34:17 ID:kn/mZrfu
連投スマソ。慣れないがVBSでも書いてみた。

Dim regEx, aaa
  aaa = "http://111.111.111.111:8888/"
Set regEx = New RegExp
regEx.Pattern = "https?://(([0-9]{1,3}\.){3}[0-9]{1,3})[:0-9]*/"
WScript.Echo regEx.Replace(aaa,"$1")
724名無し~3.EXE:2007/04/27(金) 05:46:54 ID:LcwkbNjt
>>722>>723
ご親切にありがとうございます。
ただこれでは、最後にスラッシュの無いURLですと、上手く置換できないのですが、
ある場合、無い場合に両方とも対応させるにはどうしたらよいのでしょうか?
725Adrienne ◆HI8ebVe8lo :2007/04/27(金) 05:50:48 ID:kn/mZrfu
>>724
regEx.Pattern = "https?://(([0-9]{1,3}\.){3}[0-9]{1,3})[:0-9]*/?"
726名無し~3.EXE:2007/04/27(金) 05:55:45 ID:LcwkbNjt
>>725
即レスありがとうございます。

文字でしか感謝の気持ちを表せないことが非常に残念ですが、
このように親切に教えていただいたことを心より感謝します。
727名無し~3.EXE:2007/04/27(金) 08:53:53 ID:/IsUTm2t
> 基本的に>>719のでいけるはずだけど、
> ポート番号も削るとすると、
719のでポート番号も削れるよ。数字と .の連続にマッチするので、http://111.111.111.111:8888/の場合なら
8文字目の1から、最初に出てくる数字と .以外の文字である23文字目の:の前までが一つ目のマッチになるから。
あとはマッチ全体ではなく、一つ目のマッチ部分のみを参照すればいいだけだから。

きちんとやるなら↓ね。
△ "https?://(([0-9]{1,3}\.){3}[0-9]{1,3})[:0-9]*/?"
○ "https?://((?:\d{1,3}\.){3}\d{1,3})(?::\d{1,5})?/?"
728名無し~3.EXE:2007/04/27(金) 12:21:11 ID:BhprWh5I
なぜ>>719のを見てすぐに
完全な正答である事に気づかないのか
毎度毎度・・・

初心者が初心者に嘘を教えるスレ。

(727の事は言っていない)
729名無し~3.EXE:2007/04/27(金) 16:44:00 ID:kn/mZrfu
>>728
>>719は完全な誤答。
730Adrienne ◆HI8ebVe8lo :2007/04/27(金) 16:49:19 ID:kn/mZrfu
もとい、正答(;´Д`)
正答なんだけど、IPじゃない数字の羅列にもマッチすると思ったわけ。
731名無し~3.EXE:2007/04/27(金) 18:00:12 ID:BhprWh5I
もうIP変わったと思って荒らそうとしたら
変わってなくて慌ててフォロー

何だかな・・・
732Adrienne ◆HI8ebVe8lo :2007/04/27(金) 18:21:09 ID:kn/mZrfu
>>731
いや、違うってw
つーか、ケーブルだからIPずっと同じなんだよ(´ω`;)

正規表現に話を戻すと、\dじゃなく[0-9]を使っているのは
>>719をそのまま動かしてみてうまくいかないので、
JScriptでは\dが使えないと勘違いしたから。
よく考えると、\\dとエスケープすれば使えたわ。
733名無し~3.EXE:2007/04/28(土) 00:42:00 ID:gbEJE2Wr
>>732
>正規表現に話を戻すと、\dじゃなく[0-9]を使っているのは
>>>719をそのまま動かしてみてうまくいかないので、
>JScriptでは\dが使えないと勘違いしたから。
>よく考えると、\\dとエスケープすれば使えたわ。
???
>>719はJScriptで、\dが使えてますが?
734名無し~3.EXE:2007/04/28(土) 00:54:42 ID:DGfeoJja
なぜか/../でなく"..."の話をしてるみたい。
荒らしてるのこの人?
735名無し~3.EXE:2007/04/28(土) 20:13:38 ID:nWx8uwlB
置換がしたいっつってんのに>>719はマッチしてるだけだし。
736名無し~3.EXE:2007/04/28(土) 20:28:19 ID:nWx8uwlB
>>732
ちなみに>>722の書き方だと"\."も"\\."にしとかないとね。
前者だと改行文字以外の任意の1文字にマッチするメタキャラクタになってしまう。
737名無し~3.EXE:2007/04/28(土) 20:29:25 ID:QKMYYFHO
じゃあ>>719のコードでどんな不都合があるか指摘してみなよ
不要な部分を削るだけならreplaceする必要はなくってmatchで十分

あと指摘しておくと、>>722のコードは「完全な」間違いね

// var aaa = "http://111.111.111.111:8888/";
var aaa = "http://1234567890:8888/";
var re = new RegExp("https?://(([0-9]{1,4}\.){3}[0-9]{1,4})[:0-9]*/","ig");
WScript.echo(aaa.replace(re, "$1")); // 1234567890:8888

単なるドットのつもりで \. としてるけど、あれはメタ文字。


738737:2007/04/28(土) 20:33:17 ID:QKMYYFHO
ああかぶった・・・

>>735
最近荒らしてる人と勘違いした。ごめん
>>737 の前段はスルーして
739名無し~3.EXE:2007/04/28(土) 21:19:15 ID:gbEJE2Wr
>>735
>置換がしたいっつってんのに>>719はマッチしてるだけだし。
まだわかんないのかねぇ。。。
740名無し~3.EXE:2007/04/28(土) 21:47:26 ID:hpQQWhuy
>>735
実際は置換ではなく部分抽出なので、抽出する部分にマッチさせるだけでOKなんだよ。
JScriptのmatchメソッドは結果を配列で返すから、インデックス与えるだけでお望みの結果が得られるし。
var str = 'http://111.111.111.111:8888/';
WScript.Echo(str.match(/[\d.]+/)[0]);

どちらかというと、(間違いではないけど)置換する必要ないのに置換メソッド使ってる>>723の方に突っ込むべきでしょ。
あそこは$1にReplaceするべきところではなく、Testした上でExecute(aaa)(0).SubMatches(0)を参照すべきところだ。
因みにPatternが"[\d.]+"なら、Execute(aaa)(0).Valueを参照。置換と抽出は使い分けられるようにならなくちゃね。
741名無し~3.EXE:2007/04/28(土) 22:00:47 ID:gbEJE2Wr
あと>>735はJScriptで
"abc";
のような記述の意味を理解してないみたい
742名無し~3.EXE:2007/04/28(土) 22:08:57 ID:4ZNe92js
関係ないけど個人的には
JScriptの /abc/ のような記述は気に入らない。
743名無し~3.EXE:2007/04/28(土) 22:48:50 ID:v4oX2IOi
誤答を取り消して正答って書いたまでは
間違いという事にしてやっても良かったが
その後また719がマッチしてるだけとか、
別人を装って自分のレスに突っ込み入れる自演・・・

大丈夫この人?
744名無し~3.EXE:2007/04/28(土) 23:24:56 ID:nWx8uwlB
正直>>717
> このようなURL文字列のhttp://の部分とポート番号を削り、IPのみに置換するスクリプトを作っています。

からどうして目的が「置換じゃなく抽出」となるのかが理解できんのだが
(もしかして>>720の「WScript.Echo bbb」からそう判断?)、
そうだとして、>>719の表現はいくら何でも乱暴過ぎて
(単独の"0"や"."も拾いまくる。ってかその前にgオプションが要るだろこれ)
少なくとも私にはこれを「完全な正答」と自信満々に言い切る>>728のほうが
ピント外れに思えるんだが。

matchメソッドでの戻り値の配列から抽出するならせめて
(JScriptの正規表現で肯定後読みができるとの前提で)

str.match(/(?<=https?:\/\/)(?:\d{1,3}\.){3}\d{1,3}(?=(?::\d{1,5})?\/?)/g);

とすべきでは?「完全な正答」と言い切るならね。

# 悲しいかな、JScriptの正規表現は肯定/否定後読みをサポートしていない。
745名無し~3.EXE:2007/04/28(土) 23:28:05 ID:nWx8uwlB
あああああああ

もしかして今検索対象文字列は「URLそのもの」なのか?

だとしたらなるほど>>719は「完全な正答」だ。すまん。
俺は勝手に検索対象として一般的な文字列を仮定していた。
746名無し~3.EXE:2007/04/28(土) 23:32:44 ID:nWx8uwlB
ん?何なに?
もしかして俺>>730と勘違いされてるわけ?

証明する手段はないけど、違うとだけは言っておこう。
どうでもいいけど。
747名無し~3.EXE:2007/04/28(土) 23:40:41 ID:pMakl6sH
質問した人ですが、もはや何がどう進んでいるのか理解の範囲を超えました。
お願い!私のために争わ(ry

とりあえずhttpから始まるアドレスを送ると変換するスクリプトとして

wwww = WScript.Arguments.Item(0)
Set dddd = New RegExp
dddd.Pattern = "https?://((?:\d{1,3}\.){3}\d{1,3})(?::\d{1,5})?/?"
WScript.Echo dddd.Replace(wwww,"$1")

本来なら別のアプリケーションに送る作業をしていますが、
こんな感じで書いてあるのですが間違っていませんよね?

ちなみに置換する文字列はURLそのものではないでしょうか?
IPのみが送られることもありますが、その場合は置換する必要がありません。
748名無し~3.EXE:2007/04/28(土) 23:42:51 ID:LcYBLA0G
明らかに別人でしょ

ああいうのは放っおいていいから
749748:2007/04/28(土) 23:45:04 ID:LcYBLA0G
「ああいうのは」って>>743のことな
750名無し~3.EXE:2007/04/29(日) 00:03:58 ID:ahTiRjDP
こういうライブラリで処理したら?
ttp://lukewarm.s151.xrea.com/test/read.cgi/b/1163165308/28
751名無し~3.EXE:2007/04/29(日) 01:01:48 ID:IvFkw0Il
>>728
>初心者が初心者に嘘を教えるスレ。
初心者が自問に自答して自分に感謝と突っ込みを入れるスレ。 みたい
752名無し~3.EXE:2007/04/29(日) 02:57:20 ID:fjLqhoab
他のScript関係のスレの荒らしにウンザリして
逃げてきたんだけど
ダメだこりゃ
753名無し~3.EXE:2007/04/29(日) 03:07:14 ID:fjLqhoab
漏れは710なんだけど
711がID違うのも平気で
勝手にレス継続してるの見て
ああ、ここにもいたのか、こういう手合
と思った。

しかし荒らすのはまあいいとして(笑)
初心者過ぎるのはどうにかしろ。
一人だけ余りに初心者過ぎて誰が書いてるかバレバレ
754名無し~3.EXE:2007/04/29(日) 03:33:10 ID:NcM4uAaB
>一人だけ余りに初心者過ぎて誰が書いてるかバレバレ

試しに直近50件からその「バレバレな一人」のレス全部挙げてみてくれ
755名無し~3.EXE:2007/04/29(日) 03:40:35 ID:2wYUlGKh
たとえば、こんな荒れる質問をしてしまった俺とか。
ブツは無事に完成してるんですよ?
756名無し~3.EXE:2007/04/29(日) 05:35:44 ID:uQG0bLUr
まぁ君は何も悪くないから気にするな。
引き続き>>753の回答を待つとしますか。
なにしろ

>一人だけ余りに初心者過ぎて誰が書いてるかバレバレ

というくらいなのだから
どうってことない実に簡単な作業だろうし。

しかし

>他のScript関係のスレの荒らしにウンザリして
>逃げてきたんだけど

なんて言っているわりには、次の投稿で

>初心者過ぎるのはどうにかしろ。
>一人だけ余りに初心者過ぎて誰が書いてるかバレバレ

ってな荒れる要因を積極的に投下して、
一体どういう神経してんのかね。やれやれ。
757678:2007/04/29(日) 11:52:35 ID:pw3YevD6
荒らしはスルーで
758名無し~3.EXE:2007/04/29(日) 18:48:32 ID:etPQI3Tt
いちいちID切り替えてご苦労な事で・・・
759名無し~3.EXE:2007/04/29(日) 18:55:36 ID:rUMvvbLJ
と、荒らしID:fjLqhoabが申しております
760名無し~3.EXE:2007/04/29(日) 19:04:08 ID:38gusqza
とりあえず>>747の変数名に突っ込みを入れる勇者はいないのですか
761名無し~3.EXE:2007/04/29(日) 20:15:43 ID:IvFkw0Il
>>747>>719をVBScriptに翻訳できんのかね?
>>740を見てもまだ分らんの?こりゃ重度の‥‥
762名無し~3.EXE:2007/04/30(月) 14:53:55 ID:ACMQHVEa
ところで、正規表現など使わなくても
InternetCrackUrlとか
hrefに入れてhostnameを取り出すとかすれば
763名無し~3.EXE:2007/04/30(月) 18:02:49 ID:rfORYBWQ
逆も言えるね。

InternetCrackUrlなんて使わなくても、正規表現使えば簡単に…

ってな。
764名無し~3.EXE:2007/05/01(火) 13:14:05 ID:yT4xCCv9
LAN内にpingを打って返ってくるかこないかで処理を分けるにはどうすればいいのでしょう。
以下のようなのを書いてみて、一応は事足りてはいるのですが、もっといいやり方がありそうな気がします。

var WshShell = new ActiveXObject("WScript.Shell");
var oExec = WshShell.Exec("%comspec% /c \"ping.exe -w 10 192.168.0.6 | find.exe \"Reply\"\"");

if (oExec.StdOut.Read(1)) {
WScript.Echo("aru");
}else{
WScript.Echo("nai");
}
765名無し~3.EXE:2007/05/01(火) 14:10:36 ID:6oHOJlSu
> もっといいやり方がありそうな気がします。
どうしてそう思うのか、15文字以内で理由を述べよ
766名無し~3.EXE:2007/05/01(火) 15:50:57 ID:G+ZKU8gW
>>764
いい勘してるな。うまいやり方は確かにある。
767名無し~3.EXE:2007/05/01(火) 16:40:31 ID:8m0EqL9y
768名無し~3.EXE:2007/05/01(火) 16:50:20 ID:rxCuFFZB
しかし台詞の一言一言に大分恥ずかしいものがあるな・・・
769678:2007/05/01(火) 18:47:06 ID:3MRBko9y
>>764
使ってるOSが Windows XP / Windows Server 2003 以降なら、
WMI ping あたりでググってみ。
770名無し~3.EXE:2007/05/03(木) 17:41:34 ID:+AKTZjlP
XP Home Editionでlogoff/shutdown scriptを使えるようにできない?
771名無し~3.EXE:2007/05/08(火) 19:53:37 ID:bJAyYqFQ
Wscript.Echo("ほしゅ");
Wscript.Echo("ほしゅ");
772名無し~3.EXE:2007/05/08(火) 20:08:51 ID:ixPnD11N
>>771
WScript
773名無し~3.EXE:2007/05/09(水) 06:19:38 ID:iQjYX/E4
JScript5.7(IE7やVistaに同梱)の不具合修正パッチ

ttp://support.microsoft.com/?kbid=933812
 夏時間を無視。
ttp://support.microsoft.com/?kbid=933873
 32kB以上? 32k命令? を無視。

パッチは同じなのでお好きな方を。
774名無し~3.EXE:2007/05/18(金) 23:14:45 ID:lCUQX7nR
>>772 失礼




WScript.Echo("ほしゅ");
WScript.Echo("ほしゅ");
775名無し~3.EXE:2007/05/18(金) 23:50:02 ID:KXgJnFbG
WScript.echo
776名無し~3.EXE:2007/05/19(土) 17:46:31 ID:MEXVxhB1
InputBox "お前ら、wsh使ってますか?"
777名無し~3.EXE:2007/05/19(土) 18:27:30 ID:WP3h4HZ7
Dim Wsh
set Wsh = WScript.CreateObject("WScript.Shell")
Wsh.Popup "ウィンドゥズから2文字とってウィッシュにすれば良かったのに", 3, "WISH", 32
778名無し~3.EXE:2007/05/19(土) 21:01:27 ID:wfuQjMOY
Dim Wish
set Wish = WScript.CreateObject("WScript.Shell")
Wish.Popup "こうですか?", 3, "WISH", 32
779名無し~3.EXE:2007/05/19(土) 21:44:55 ID:WP3h4HZ7
そうか!

Dim Wish
set Wish = WScript.CreateObject("WScript.Shell")
Wish.Popup "I wish wsh becomes wish. (・∀・)ウィッシュ!ウィッシュ!", 3, "WISH", 32
780名無し~3.EXE:2007/05/20(日) 10:08:43 ID:47BhqPae
エクスプローラの「アイコンの整列」で時系列順と名前順を頻繁に切り替えるので、
そのふたつの状態をトグルで切り替えられるスクリプトを書きたい。
「アイコンの整列」の状態を取得・更新するためのプロパティって、どうやったら見れるのでしょうか。
どうかえらい人教えてください。
781名無し~3.EXE:2007/05/20(日) 14:00:04 ID:dUIRo6AY
WebブラウザのInternetExplorerはActiveX化されてるけど
ファイラーのExplorerはActiveX化されてなかったと思うが。

WSHはActiveXじゃないと外部ソフトの操作はSendKeysくらいでしか出来ないよ。
外部ソフトを操作するActiveX.dll(COM)を自作するとか
DynaCallでWin32API使うというなら話は別だけど。

というかWin32API使える無料の開発環境でも落としてきて作った方が早そうだな。
782名無し~3.EXE:2007/05/20(日) 15:13:07 ID:nSmIDUa9
ExplorerもActiveXコンポーネントになっている
ただ、780のようなことはできなかったと思うけど
783名無し~3.EXE:2007/05/20(日) 23:38:28 ID:1oxHueti
またお前か。アホ杉
784名無し~3.EXE:2007/05/21(月) 19:39:11 ID:A1hLc1nS
>>780
sendkeys
785780:2007/05/22(火) 00:15:01 ID:AyEAbPGp
そうか……できないのかー。
WSHってなんでもできるんだと感動していた初心者だったけど、
やっぱりWSHにも壁はあったんだね。そうだったんだね。
皆教えてくれてありがとう!

結局、X-Finderに乗り換えることにしました。
処理も軽くて機能も多いのでオーライ。
WSHぜんぜん関係なくなったけど。

>>784
現在の状態が取得できないとトグルにできないのが残念なところ。
786名無し~3.EXE:2007/05/22(火) 02:48:45 ID:JlY1xoAR
sendkeysしてみて、Class ShellFolderViewのEvent EnumDone()が
起きれば変更されたと分るんじゃないかな
787名無し~3.EXE:2007/05/22(火) 14:43:14 ID:JlY1xoAR
昇順降順のtoggleになってるからだめだね
Folder.Items().Item(0)〜を見れば大体の見当は付くのでは
788名無し~3.EXE:2007/05/27(日) 07:49:11 ID:35trjwIR
UTF-8 のテキストファイルを読み込んで、
一部を変更して、また UTF-8 で出力させたいのですが、
どんな作戦で行けばよろしいでしょうか。

練習として以下のように、読んだものをそのまま書き出そうとしてみましたが、
それすら文字化けしてしまいます。どうすればよいですか?
( ADODB.Stream というものを使えばできるらしいのですが、よく分かりません )

-------------------------------------------------------------------
Option Explicit
Const ForReading =1, ForWriting = 2, ForAppending =8

Dim FSO, Input, Output, CurrentLine
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Input = FSO.OpenTextFile( "Input.txt", ForReading )
Set Output = FSO.OpenTextFile( "Output.txt", ForWriting, True )

While Not Input.AtEndOfStream
  CurrentLine = Input.ReadLine
  Output.WriteLine CurrentLine
WEnd

Input.Close
Output.Close
-------------------------------------------------------------------
789名無し~3.EXE:2007/05/27(日) 08:29:02 ID:d7qwcdZx
>>788
> ( ADODB.Stream というものを使えばできるらしいのですが、よく分かりません )
いや、調べろよ。ネットにいくらでもサンプル転がってんだからさ。
一つ言っとくと、FileSystemObject じゃ無理。
790678:2007/05/27(日) 16:08:11 ID:q00Zzyug
FileSystemObject にバイナリモードがあればなぁ...。
791名無し~3.EXE:2007/05/28(月) 01:33:36 ID:XjJA1/p+
OpenTextFile や CreateTextFile といったメソッド名は
OpenBinaryFile や CreateBinaryFile といった将来的な拡張を期待させるんだが。


> FSO オブジェクト モデルは、スクリプティング タイプ ライブラリ (Scrrun.dll) に格納されており、
> TextStream オブジェクトによってテキスト ファイルの作成および操作をサポートします。
> バイナリ ファイルの作成および操作については、まだサポートしていませんが、将来サポートする予定です。

どんだけ待たせんだよ。
ADODB.Stream オブジェクトの操作で代用出来るからって
事実上放置状態なの?

まぁバイナリファイルの操作はBASP21で事足りてるが。
やはり標準でサポートしてもらいたいところ。
792名無し~3.EXE:2007/05/28(月) 07:09:46 ID:GVz6b+cG
PowerShell 及び .NET Framework に移行してってことじゃね
793名無し~3.EXE:2007/05/28(月) 12:31:38 ID:JxdXlebb
>>791
Windows PowerShellが出たからもうWSHはメンテのみで機能強化はない
不満なら↑で.NET Frameworkのクラスライブラリを呼び出せばいい
794名無し~3.EXE:2007/06/01(金) 01:27:36 ID:bJQTtEuK
バイナリファイルの書き換えとかは.NETなんか使わなくとも
XPとかでは普通にできる訳だが、多少面倒だわな

つか何言ってんだよw
WSHはもう何年も前からウィルス扱いなんで
まともな機能が追加されるはずがないだろ。
使えるコンポーネントはゴミばかりだっつーの
795名無し~3.EXE:2007/06/01(金) 10:04:36 ID:tTkE71Pg
>>794
WSHに代わるスクリプト言語で、最近の流行は何?
実行エンジンはWindows標準でついてるもので。
796名無し~3.EXE:2007/06/01(金) 19:30:05 ID:hBq+oeU8
WSHが言語ですって・・・

( ´д)ヒソ(´д`)ヒソ(д` )ヒソ
797名無し~3.EXE:2007/06/01(金) 23:24:16 ID:9i7Jo/Z3
bat
798名無し~3.EXE:2007/06/01(金) 23:33:46 ID:NRR7s1fy
Windows標準ってったら限られるでしょう。
VistaですらPowerShell標準で入ってないし。
そういやIronPythonってのもあったな。
799名無し~3.EXE:2007/06/02(土) 02:06:08 ID:t0/jh1TP
>>795
もはやスクリプトやバッチの存在そのものが危険要素だし。

2chとか見れば掲示板にrdとか貼り付けるの続出だし
まともで使いやすい機能つけたら何しでかされるやら・・・

従って標準でそういう便利なものが入る事はこれからも多分有り得ない。
間違えてIEで使えるようにしてしまったADODBもすぐブロックされた訳だし、
folder.httのように無かった事にされたのもあるし(涙)

WSHで色々な事ができる、と言っても馬鹿みたいなコーディングになったり
全然使えない仕様のが出来たりするばかり。

WSHだけで何でもやろうとする人いるみたいだけど
遊びならともかく仕事で使うにはとてもとても・・・

>>796
言語でも別に問題ないだろ
800678:2007/06/02(土) 12:48:32 ID:Tox5gCCd
自分が使えないからって、そこまで嫌悪しなくてもいいのにね。(w

まあ、

> 言語でも別に問題ないだろ

なんて言ってるぐらいだから、何も理解できてないんだろうな。
801795:2007/06/02(土) 15:38:31 ID:sJzH3K8W
>>796
ごめんなさい

でも、Unix系ならperlは準標準みたいなもんだし
それに代わる何かはやっぱり欲しいよ
802名無し~3.EXE:2007/06/02(土) 21:14:09 ID:V+wqZ1WK
795のことじゃないが、
大したことも言ってないレス番をコテハンにして無駄に自己主張するのって流行ってるん?
803名無し~3.EXE:2007/06/02(土) 21:22:05 ID:HpzWdFlY
>>802
後々まで読み返してもらいたい会心のレス(のつもり)だったんだったりしてなw
804名無し~3.EXE:2007/06/03(日) 04:08:45 ID:IWupGHOH
だったんだったり?
805名無し~3.EXE:2007/06/03(日) 04:51:34 ID:ZxizyGM/
だったん人の踊り
806名無し~3.EXE:2007/06/03(日) 10:26:35 ID:V6O5Vhs0
ダダ星人 「<<807」
807名無し~3.EXE:2007/06/03(日) 14:48:45 ID:M7V2Ms+i
UNIX系は基本的にユーザー自身に
Cが使える事が前提みたいな物だからな。
WindowsでもC使えれば問題ないし
808名無し~3.EXE:2007/06/03(日) 15:35:21 ID:r5V6kpWr
C くらい誰でも書けるだろ。いや煽りとかじゃなくて、
wsh 使うようなやつならなおさら。
809名無し~3.EXE:2007/06/03(日) 16:32:07 ID:b/QnnZbo
正直ソース拾ってきてBCCでコンパイルするぐらいにしか使ってない
810名無し~3.EXE:2007/06/03(日) 19:56:39 ID:M7V2Ms+i
誰でも書けるはずないだろw
WSH使うような奴ならなおさらw
811名無し~3.EXE:2007/06/03(日) 20:43:57 ID:2mijn1fZ
日本人の8割は書けない
812名無し~3.EXE:2007/06/03(日) 23:50:59 ID:b/QnnZbo
仮性包茎とCを一緒くたにするのはどうかと思うんだ うん
813名無し~3.EXE:2007/06/04(月) 05:28:55 ID:joPUDTqQ
だったら男の8割だろ?日本人全体なら4割だろ。
もっとも女でも○ケてる○ケてないで
判断できるかもしれんがwww
814名無し~3.EXE:2007/06/04(月) 05:35:39 ID:hG9jg+BN
でもWinって標準でCコンパイラ入ってないよな?
>>795が言いたかったのはそういうことなんじゃ
815名無し~3.EXE:2007/06/04(月) 22:39:30 ID:LmzJEMQb
オフィス2003にしたらscript editorとかいうのがあるのに気付いたんですが、これでスクリプトのデバッグができるんでしょうか?
やさしい解説サイトとかないですかね?
816名無し~3.EXE:2007/06/05(火) 20:26:19 ID:u/nTCPgP
確かWSHのデバッガもあったはず。
全く使った事ないけど。
817名無し~3.EXE:2007/06/05(火) 21:00:49 ID:sFfY/O22
漢ならmsgboxだけでデバッグしる!
818名無し~3.EXE:2007/06/05(火) 22:12:29 ID:EKSzdYna
デバッガ使わずに実行デバッグやるならcscript+WScript.Echoの方がいいよ。

結果が残るし、MsgBoxと違って部分コピペ楽だし、WScript.Echoの後に
WScript.Stdin.ReadLineを入れればEnter押すまで停止
WScript.Sleep入れれば任意時間停止
入れなければ出力のみで停止無し、と使い分けられし入力も出来る。

MsgBoxだと「Enter押すまで停止」しか出来ない。
WshShellのPopupなら「任意時間停止」も出来るけどね。
だからこそ、そういう不便な物でデバッグやるのが漢だと言うのかも知れないが。
819名無し~3.EXE:2007/06/06(水) 03:36:13 ID:FCaZ9cio
でOffice 2003の話は?
820名無し~3.EXE:2007/06/06(水) 07:15:29 ID:dT8F868I
シラネーヨ
821名無し~3.EXE:2007/06/06(水) 23:42:31 ID:UPeqzG+/
昔々、ここのスレの方に手伝ってもらってできたもの。還元。
http://www.geocities.jp/madly_aloe/imjs.zip

なんとなく放置気味で落とせなくなっていたので。
微妙に自動インデント機能追加した。デバッグにもどうぞ。
cscript imjs.js [デバッグしたいファイル。]
って感じ。動作確認にも便利。
822名無し~3.EXE:2007/06/07(木) 23:18:18 ID:Ejm52VK9
デバッグってあんまり話題にならないから参考になりました
感謝
823名無し~3.EXE:2007/06/07(木) 23:37:53 ID:YWbfCbJY
ぶっちゃけRhinoだな。
824名無し~3.EXE:2007/06/10(日) 15:34:00 ID:DAdn2QUR
ファイルの行数を数えようとAtEndOfStreamでカウント取ろうとしたら無限ループに陥った

空読みしないとポインタが進まないのね・・・
825678:2007/06/10(日) 17:28:54 ID:fWS3EzOx
そりゃ AtEndOfStream の呼び出しでポインタ進んだら困るだろ。
826名無し~3.EXE:2007/06/10(日) 18:16:43 ID:odZ23lIs
ちょっと考えりゃ分かることなのにな。
827名無し~3.EXE:2007/06/10(日) 18:18:21 ID:FJ0Um+f/
WSHからMCIってどうやって制御するん?
もしかして出来ないのか?
828名無し~3.EXE:2007/06/10(日) 18:28:59 ID:Q4mnrcCU
>>824
SkipLine
829821:2007/06/10(日) 20:13:43 ID:Onv6LJJz
Jashみたく補完機能とか付けたいんだけどWScriptオブジェクトのプロパティの
名前ってどうやって取ってくるの?
830名無し~3.EXE:2007/06/10(日) 20:56:15 ID:Q4mnrcCU
>>829
タイプライブラリ
831821:2007/06/10(日) 21:51:53 ID:Onv6LJJz
>>830
thx!!
832名無し~3.EXE:2007/06/11(月) 01:14:09 ID:uVumgOHQ
821のことじゃないが、
大したことも言ってないレス番をコテハンにして無駄に自己主張するのって流行ってるん?
833名無し~3.EXE:2007/06/11(月) 01:18:10 ID:uVumgOHQ
↑いや、これはマジで821のこと言ってるつもりじゃないんだけどね。
(気にせんでくれ>>821
834名無し~3.EXE:2007/06/11(月) 01:54:29 ID:IEwmwztl
>>832
>>803

そっとしておいてあげて
彼のちっぽけなプライドが傷付いちゃうから
835名無し~3.EXE:2007/06/11(月) 09:53:34 ID:uv8jjJR1
キモい
836名無し~3.EXE:2007/06/11(月) 19:22:14 ID:hgowUgDr
>>834
IDがIE関係の何かのツールみたい
837名無し~3.EXE:2007/06/12(火) 02:57:51 ID:LoWeRUTB
>>836
歯がウジだらけじゃない?
838名無し~3.EXE:2007/06/12(火) 06:10:17 ID:oo++7sj9
>>837
お前はロウェルトビーな奴だな!
839名無し~3.EXE:2007/06/16(土) 23:55:26 ID:OW/2sypB
コールバック関数って使えないの?
840名無し~3.EXE:2007/06/16(土) 23:59:58 ID:9upkKUNB
なんに?
841名無し~3.EXE:2007/06/17(日) 00:00:09 ID:Dfksh/gM
age
842名無し~3.EXE:2007/06/17(日) 00:19:17 ID:XImUwll5
>>840
コールバック
843名無し~3.EXE:2007/06/17(日) 00:35:15 ID:ltEHne1B
関数のアドレスが分からんから無理っしょ。
常識的に考えて
844名無し~3.EXE:2007/06/17(日) 00:53:54 ID:bnlBKe1/
アドレスがわかったとしてそれをどーするのか、と。
845名無し~3.EXE:2007/06/17(日) 00:56:56 ID:bnlBKe1/
OLE流のコールバックならある事はあるけどな。
846名無し~3.EXE:2007/06/17(日) 22:27:06 ID:VKMLzsQR
JavaScriptなら関数でも、関数がメンバのオブジェクトでも引数にできるけど、
そういう話ではない?
847名無し~3.EXE:2007/06/26(火) 12:51:09 ID:CP6U2REC
>>846
まあIEとかだとそんな感じでイベントハンドラ指定するだろうけど。
OLEはあとコネクションポイントもあるけど。
>>839は意味不明だな。そもそもWin32 APIが使えないのに。
APIをコールできて(APIの)コールバックもシミュレートする
コンポーネント作ったとかいうブログがあるけど
作者が宣伝に来たかな?
848名無し~3.EXE:2007/06/26(火) 20:25:58 ID:UK2pdIKC
ttp://www.microsoft.com/japan/technet/scriptcenter/resources/qanda/oct04/hey1008.mspx
↑を参考にしてローカルのadministratorでも
ドメインユーザーを追加出来るようにしたいんだけど無理かな。
ドメインユーザを追加できる権限を持つユーザのユーザIDとパスワードを
どうやって渡すのか解らなくてはまってる。

ドメイン参加の場合は↓ユーザIDとパスワード渡せるのに上では何か不便。
http://www.microsoft.com/japan/technet/scriptcenter/scripts/ad/computer/cptrvb06.mspx

何か知っている人います?
849名無し~3.EXE:2007/06/27(水) 21:56:43 ID:VWf9EHKN
ドメコンからlocalmachine\administratorにadduser権限付けてやりゃ良いだろが
850名無し~3.EXE:2007/06/27(水) 23:18:39 ID:FiTR9zSt
>>849
コメントありがとうございます。それは出来ない運用になっているのです。
限られたドメインユーザのみ他の一般ドメインユーザを追加出来る様に運用しています。
ですので現在追加するとき認証ダイアログから
ユーザID:domain\hogehoge
パスワード:******
としてから追加しているのです。この認証情報も渡す事が出来ればと思いまして
質問させて頂きました。

851名無し~3.EXE:2007/06/27(水) 23:59:13 ID:VWf9EHKN
ほいだら
852名無し~3.EXE:2007/06/28(木) 00:02:00 ID:VWf9EHKN
途中送信スマソ

ほいだら、OSコマンドのnet user /domain /add usernameみたいなのを
runasかますかなんかしてshellexecuteでキックすればいいんでないの?

ActiveDirectoryだったら、CDのSupportかなんかに便利そうな
ツールいっぱいありそうだけど、詳しく知らないので確約できナス
853848:2007/06/29(金) 20:15:22 ID:jFptocCk
>>852
アドバイスthx!!
runas /noprofile /user:domain\hogehoge"cscript.exe C:\Scripts\test.vbs"
でいけた!
あとはhogehogeの部分とC:\Scripts\test.vbsが相対パスかカレントディレクトリで
指定できるように改造します。
本当に感謝!

854848:2007/06/29(金) 20:18:07 ID:jFptocCk
やべ興奮して日本語が変になった。すいません。

あとはhogehogeの部分を入力方式にして
そして"C:\Scripts\test.vbs"が相対パスかカレントディレクトリ取得で
指定できるように改造します。
855名無し~3.EXE:2007/06/29(金) 21:39:41 ID:kEXg+Fpo
CDのトレーを閉じたいんだけど、出来る?
856名無し~3.EXE:2007/06/29(金) 22:00:33 ID:3Ycil6FA
WSH自体では出来ないけど、外部のコンポーネントやツールを使って良いなら出来る
857名無し~3.EXE:2007/06/29(金) 22:15:20 ID:kEXg+Fpo
>>856
外部コンポーネントか・・・

IEとかエクセルの使えば出来るかな?
なんかインストールしなくてもいいやつで
858名無し~3.EXE:2007/06/29(金) 23:36:01 ID:u0d9hMDS
君は言葉の使い方から覚えた方が良い
859名無し~3.EXE:2007/07/01(日) 06:39:27 ID:Dw05PCbS
>>855
http://pc11.2ch.net/test/read.cgi/tech/1176698934/117
トレイ空いた状態で
Set WMP = CreateObject("WMPlayer.OCX")
WWMP.cdromCollection.item(0).eject
WWMP.cdromCollection.item(0).eject
こうやるとできるみたいだよ。ejectなのにw
WSHが壊れるみたいだけど♥
860名無し~3.EXE:2007/07/01(日) 15:30:45 ID:Kan5FiJ6
別に壊れないし、ちゃんとやればWSHも終了する
861名無し~3.EXE:2007/07/01(日) 16:23:31 ID:0toxHbhu
やれやれ。何の妄想か知らんけど
終了しなくなるのは普通壊れるって言うの。

ちゃんとも何もスクリプトでは
これはごく普通のコード。
何のためにVariantClearがあると思ってんだよ。
862名無し~3.EXE:2007/07/01(日) 16:33:45 ID:7s4ErC2+
ゴミプロセスが残るとは言うが、壊れるとは言わないな。
壊れるってのはwshのコンポーネントがおかしくなったりしたら当てはまるだろうけど。

いったいどこの普通なのだろう。
863名無し~3.EXE:2007/07/01(日) 20:03:43 ID:Y/1PoJPy
>>859
閉じたいっつってんだろ
ちゃんと聞けよこのドア帆が
864名無し~3.EXE:2007/07/01(日) 22:13:15 ID:Kan5FiJ6
>>861
何の妄想か知らんけど、君の脳内限定の常識が
世間一般でも通用すると思わないでね
865678:2007/07/02(月) 00:25:45 ID:qR6/c1TB
>>860
> ちゃんとやればWSHも終了する

kwsk

>>863
ごちゃごちゃ言ってないで、>>859 の言う通りやってみ。

ただし、2〜3行目は

× WWMP.cdromCollection.item(0).eject
○ WMP.cdromCollection.item(0).eject

だと思うが。
866名無し~3.EXE:2007/07/02(月) 16:01:35 ID:NwbhG/+y
wscript.exeのプロセス残さず終了するみたいだけど@Vista
プロセスが残る人はWMP.close()とかしてみたらどう?
867名無し~3.EXE:2007/07/02(月) 17:13:32 ID:r7RxEpCG
XPでも問題なし。でも、Win2kだとプロセスが残るみたいだな。
868名無し~3.EXE:2007/07/03(火) 00:28:34 ID:6BmsY8Wk
WMPの修正が出てるみたい。Windows Updateしなはれ
869678:2007/07/03(火) 21:17:01 ID:t4OQPhQ+
WMP 最新版 (9.00.00.3349) にしたけど駄目だった... orz
870名無し~3.EXE:2007/07/04(水) 02:18:13 ID:goc1OeTW
CreateObject("MSWebDVD.MSWebDVD").eject
うまく行かんな
871名無し~3.EXE:2007/07/04(水) 09:19:57 ID:IfTdLpgR
>>869
確かにそのバージョンでwscriptがバックに残るのを確認したよ
9じゃなく8なら大丈夫かもね
872名無し~3.EXE:2007/07/07(土) 17:21:28 ID:Hb+rLCB5
下記のソースで共有フォルダを作ると「アクセスが拒否されました」
がでてしまします。
何かご存じの方がいらしたら、ヒントをお教えください。

・実行したpc:windowsXP(sp2)
・ユーザー:admin権限あり
・スクリプトは問題なく実行されます。プロパティでも共有にチェック入りました。
・共有は簡易共有
・手作業で共有フォルダを作ると問題なし
・拒否されたpc:XPsp2,2000sp4(マイネットワークからは見える)

(mにはフォルダ名、nには共有名が入ります)
---------------------------------------------------------------
Const FILE_SHARE = 0
Const MAXIMUM_CONNECTIONS = 25
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& strComputer & "\root\cimv2")
Set objNewShare = objWMIService.Get("Win32_Share")
errReturn = objNewShare.Create _
(m, n, FILE_SHARE, _
MAXIMUM_CONNECTIONS, "Public share")
----------------------------------------------------------------

何か足りない気がしてググったりしてみたのですが、お手上げ状態になって
しまいました。
こうするといいかもと言うヒントで結構ですのでよろしくお願いします。
873名無し~3.EXE:2007/07/07(土) 19:43:41 ID:IkCZnvKX
その手のメソッドを使ったこと無いけど、XP,2Kじゃ最大接続数が10だからじゃねーの?
874名無し~3.EXE:2007/07/08(日) 05:38:49 ID:xUbCf4be
>>861
脳内用語フイタ
875名無し~3.EXE:2007/07/08(日) 11:17:52 ID:ySfZz1Mb
872です

一応解決しました。
結局共有の設定はできていて、フォルダのセキュリティに
権限が足りていなかったので、アクセス拒否されたって事
みたいでした。

なので、フォルダのセキュリティにユーザーを追加する
スクリプトを実行して解決しました。(今回はeveryone)

あ、osはよく考えたらxp proでした。homeがないので
テストできないんすけど、何か違いがあるのかな?
876名無し~3.EXE:2007/07/08(日) 13:47:20 ID:T41Asqy1
未開封のMeを貰ったのだけど(金と銀の2枚DISKのやつ)インストールDISKてどうやって作るのでしょうか?
877名無し~3.EXE:2007/07/08(日) 14:02:51 ID:btismvLv
スレ違いじゃね?
まあマジレスすると、あと銅のディスクが必要
878名無し~3.EXE:2007/07/08(日) 16:33:02 ID:u6K+Fvbl
五輪か三種の神器っぽいな
879名無し~3.EXE:2007/07/08(日) 22:02:43 ID:gIJtA/ES
あのー
クリップボードの画像をJPGに変換するVBS作ってくれませんか?

880名無し~3.EXE:2007/07/08(日) 22:12:34 ID:8a2z5ma9
IrfanViewでも使え
881名無し~3.EXE:2007/07/08(日) 22:56:45 ID:PKXkFITB
SendToConvertでも使え
882名無し~3.EXE:2007/07/09(月) 00:07:39 ID:2vI08xWK
softじゃだめなのよ
お願い
883名無し~3.EXE:2007/07/09(月) 00:33:18 ID:i5t8KIyz
無理じゃね?
884名無し~3.EXE:2007/07/09(月) 01:00:56 ID:JHYMYW01
じゃあSendKeysでペイントにでも貼り付けて保存しろ
885名無し~3.EXE:2007/07/09(月) 06:43:32 ID:uBj5RvIM
>>879
VBSとWSHにはクリップボードを操作する機能も、画像を変換する機能もないので無理です

そういうことが出来るCOM使えば可能だけど、COMの導入にはレジストリへの登録が必要なので
COMよりそういうアプリを使った方が手軽だよ

それでもVBSでやりたいの?
886名無し~3.EXE:2007/07/09(月) 07:20:27 ID:d7kDyIj4
どうせロクな目的じゃないからほっとけよ
887名無し~3.EXE:2007/07/10(火) 21:22:00 ID:uOatR1Kv
自分でexe作って呼び出せばいいんじゃないの?
以上
888名無し~3.EXE:2007/07/14(土) 17:55:15 ID:GfgVyhQB
WSHの Wscript.Shell の sendKeysでアプリケーションの操作を自動化したいのですが
そのアプリケーションってのがFileZillaっていうFTPクライアントなのですが

以下の問題にぶち当たって自動化できません。この場合WSHでは不可能なのでしょうか?
1.Tabキーを押しても該当する場所までカーソルが移動してくれない>マウスでクリックしないと
移動できないからキーイベント送信だと移動できない(と思われる)
2.右クリックしないとメニューが表示されない>やはりこちらもマウスを使わないと
呼び出せないメニュー(と思われる)なのでキーイベント送信だと出来ない(と思われる)

こんな状態なのですが・・・ 具体的にやりたい事は

起動>Ctrl+S > ↓キー Enterキー で事前にFileZillaに登録しておいたサイトへの
接続が可能なのですが、ココからローカル側に表示されているファイルをリモート側に
全て選択してアップロードしたいのですが、アップロードするときにマウスを使わないと
どうしても出来なくて困っているのです。 何か良い方法は無いですかねぇ?
889名無し~3.EXE:2007/07/14(土) 18:25:08 ID:FcAQvv0D
マウス操作の出来るCOM導入して使えばいいだけだが
そういうのはWSHではなくAHkとか使った方がいいよ
適材適所ってやつね
890名無し~3.EXE:2007/07/14(土) 18:35:59 ID:H9FfnSRO
>>888じゃないけど、そーゆーのってできればOS標準の
機能だけでやりたい時ってあるじゃない。

そもそもFileZillaがCUIだけで使えればいいのにね。
ていうか、CUIで使えるクライアントじゃダメ?
891名無し~3.EXE:2007/07/14(土) 19:01:05 ID:XHzcIZJ5
ftpであぷするだけならwshだけできるんじゃない、sshは知らんけど
892888:2007/07/14(土) 19:14:31 ID:GfgVyhQB
皆さんレスありがとうございます!

>>889
COMって言うのが何なのか知らないのですが、AHKと言うのは AutoHotKey の事ですか?
外部アプリをなるべく入れたくないんですよね・・・。

>>890
そうそう、標準だけでやりたいんです。色々なPCに導入する事になるので
そのたびにいちいちインストールしていてはね。。。

FileZillaがCUIだけで使えればいいのに!ってのは同感です。だから困ってるんです。
CUIで使えるクライアント(例:FFFTP)を試してみましたが、
50GBぐらいの大量データ全てをミラーリングアップロードとかやるとフリーズするんです。
他のFTPクライアントを試してもフリーズするんですが、唯一FileZillaのBeta3だけは
その負荷に耐えて正常に転送できるんです(同期機能が無いのが痛いけど)。

>>891
むしろWindows標準のftp.exeでいいなら .batファイルだけで出来ますよ。。。
893名無し~3.EXE:2007/07/14(土) 19:18:34 ID:XHzcIZJ5
FileZillaは外部アプリなんじゃ。。と釣られてみる
894888:2007/07/14(土) 19:24:43 ID:GfgVyhQB
>>893
それは確かに貴方のおっしゃる通りなのですが、こればかりは仕方が無いんです。
しかし外部アプリとは言えども、FileZillaのZip版を落としてきたので

インストール不要。コピーするだけで使える。

からまぁよしとしましょう。出来ればWindowsが標準で持っているftp.exeを使いたいんですが
あれはレジュームも出来なければ大量のファイルを飛ばすと転送できてないファイルが
大量にあるし、機能が貧弱すぎて使い物になりません。

一番の理想は FFFTPに -s プロファイル名 -m -q のようなオプションをつけて
実行できる事なのですが、前述したようにフリーズするのでやむを得ずFileZillaです。
それをWSHで自動化出来ればと思ってWSHを勉強してきたのですが
なんか出来なさそうでショボーン。。。
895名無し~3.EXE:2007/07/14(土) 19:43:59 ID:pb6heUMX
AutoHotkeyもコピーで使えるだろ
896名無し~3.EXE:2007/07/14(土) 19:45:51 ID:XHzcIZJ5
>>>888
転送できていないファイルの差分をチェックして、送り直すとか、
何秒かごとに1ファイルずつ転送とかできない?
wshあまり詳しくないのでこれ以上は、ごめん
897888:2007/07/14(土) 19:51:07 ID:GfgVyhQB
>>895
へぇ・・・AutoHotKeyもコピーで使えるんだ・・・知らなかった。
でもまた1から文法覚えたりしないといけないのか、、、辛すぎ・・・OTL

>>896
そんな無茶な。それは無理でしょうね。。。
898888:2007/07/14(土) 20:09:23 ID:GfgVyhQB
AutoHotKey ちょっと調べてみたところ、どうやらキーボード入力に応じて
あらかじめ組み込んだ処理を実行するようで。
スケジューラに組み込んで実行したいので(無人で定期実行)
何かキーを押さないと動作し無いと言うのはダメですね。
だからってWSHと組み合わせる(Wscript.ShellのsendKeys)のはこれまた大掛かりな・・。
AutoItってのが良さそうだと思ったのですが日本語の情報が全く無くて困ったり・・・。
WSHは解説サイトが豊富ですよね。
899名無し~3.EXE:2007/07/14(土) 20:11:39 ID:H9FfnSRO
>>897
FFFTPは1.93って最新版が出たけど、それ使ってもダメ?
GNUのWin32版ftp.exeってのもあるよ。

それから、一気に転送するのではなく、>>896の言うとおりの方法にすれば
十分可能だと思うよ。1ファイルの大きさが大きすぎてフリーズって事なら
難しいけど・・・・。
FTPクライアント起動 ⇒ 1ファイル転送 ⇒ FTPクライアント終了 ⇒ FTPクライアント起動・・・

あとはAHKのコピーがOKなら、それとFilezillaでもいいんじゃない?
覚えるのはWSH程、複雑じゃないから。
900名無し~3.EXE:2007/07/14(土) 20:13:37 ID:H9FfnSRO
スマソ>>898確認してなかった。

901名無し~3.EXE:2007/07/14(土) 20:17:04 ID:H9FfnSRO
>>899
どちらにせよ、WSHだけでってのは難しいでしょ。

モレは使った事ないけど、アプリのコピーがOKなら、UWSCってのがあるよ。
ttp://www.uwsc.info/

902名無し~3.EXE:2007/07/14(土) 21:16:42 ID:FcAQvv0D
>>898
> AutoHotKey ちょっと調べてみたところ、どうやらキーボード入力に応じて
> あらかじめ組み込んだ処理を実行するようで。
そういうことも出来るけど

> スケジューラに組み込んで実行したいので(無人で定期実行)
も出来るのでWSHと組み合わせる必要なし
君がちゃんと調べてないだけ

それに操作の自動化程度なら、文法なんて覚える必要無し
キーを送ったりクリックしたりのコマンドを必要数羅列するだけで一通り動く
903888:2007/07/14(土) 22:41:32 ID:GfgVyhQB
>>899
もちろん 1.93の最新版も 古いけど安定したバージョン(Ver.1.82a) も両方試しています。
それでもダメなので、この件はFFFTPの作者にメールを送信済みです。

GNUのWin32版ftp.exeってのは標準のと何が違うんですか?

>FTPクライアント起動 ⇒ 1ファイル転送 ⇒ FTPクライアント終了 ⇒ FTPクライアント起動・・・
現実的とは思えません。5000ファイルぐらいを飛ばすと考えると不可能でしょ。。。
そんなスクリプト書くのもどう書いたらいいのかさっぱり分からないし・・・。

>>902
え、本当ですか!

UWSC AutoHotKey AutoIt の3つのうちどれが簡単で
私の今回の目的を一番達成しやすいですかねぇ?
AutoItは日本語の情報がほとんど無い > 使えそうに無い
UWSCは有料?フリー版もあるみたいだけど実行するマシンにいちいちインストールが
必要っぽい(有料版はEXE生成可能みたい)
って事はやっぱりAutoHotKeyを学ぶべきか!
904名無し~3.EXE:2007/07/14(土) 23:12:27 ID:H9FfnSRO
>>903
>現実的とは思えません。5000ファイルぐらいを飛ばすと考えると不可能でしょ。。。
>そんなスクリプト書くのもどう書いたらいいのかさっぱり分からないし・・・。

ふつーに可能だと思うけど。ルーチンワークを簡単に自動実行するのが、
WSHの良さの一つだと思うんだが。

スクリプトの書き方がわからないのは単に勉強不足なだけでしょ?

ちなみにWSHが外れている時点で既にスレ違い。あとはここまで教えてもらった事を
自分で試して報告してくれ。

905888:2007/07/14(土) 23:38:33 ID:GfgVyhQB
>>904
WSHの話題から外れると確かにスレ違いになるので、ココではもうAutoHotKeyについて
私は話しませんが、
>ふつーに可能だと思うけど。ルーチンワークを簡単に自動実行するのが、
とおっしゃってますが、それは標準の ftp.exeを用いて実行させるんですか?
そもそも同期を取るのが難しい気が・・・。
それにオーバヘッドが大きすぎません?
>スクリプトの書き方がわからないのは単に勉強不足なだけでしょ?
書き方と言うかアルゴリズムと言うか・・・まぁ勉強不足なのは認めますよ。
906名無し~3.EXE:2007/07/14(土) 23:46:24 ID:NkXCH4LZ
>>905
ftp.exe使うなら-iつけて対話カットすればいいし
オーバーヘッドなんか5000程度ならそもそも無視していいと思うよ

ていうか、こうして無駄話をしている間にもオーバーヘッド分の時間ぐらい
あっという間に過ぎちゃってるでしょ?
大丈夫、WSHは怖くないわ。勇気を出して!
907名無し~3.EXE:2007/07/15(日) 14:53:26 ID:L1MyiOj2
WSH初心者です。
<INPUT type=image ・・・について質問がありますm(_ _)m
VBSで自動操縦したいページに<INPUT type=image ・・・がありました。
document.getElementsByName("imageBtn")で要素を探して.Clickすることはできたんですが
Submitされる座標がx=0 y=0になってしまいます。
x,yを任意の値にするにはどうしたらよいでしょうか?
VBSで無理そうならAutoHotKeyを勉強してマウスクリックを代替したいと思います。
クリックする位置はoffsetLeft,offsetTopなどから調べたらいいのでしょうか?
初心者なのでよくわかりませんが。

環境:XPSP2、WSH5.6、IE6SP1
WSH,VBS歴:3ヶ月

僕がtype=imageについて調べたページです。
http://msdn.microsoft.com/library/ja/jpisdk/dhtml/references/objects/INPUT.asp?FRAME=true#image

ttp://d.hatena.ne.jp/umakoya/searchdiary?word=*%5Bjavascript%5D
ttp://www.gac.jp/article/index.php?stats=question&category=9&id=12124&command=msg
ttp://hp.vector.co.jp/authors/VA014833/HTML32/textlevel.html
ttp://bakera.jp/ref/html/element/input
ttp://chaichan.web.infoseek.co.jp/qa6000/qa6413.htm
ttp://hpcgi1.nifty.com/MADIA/VBBBS2/wwwlng.cgi?print+200504/05040004.txt
908名無し~3.EXE:2007/07/17(火) 21:16:11 ID:onEBTsG0
WSHというかHTMLの問題だと思う
そもそもxyなんて自動で送信されるわけないし、submitしてる値はinputにあるんでしょ?
valueを設定してからsubmitするか、GET限定なら直接location.hrefにurlとしてクエリを付加してから代入すればいい
なお、分からないならHTML、特にformについて勉強不足なので勉強するしかない
909678:2007/07/18(水) 00:19:37 ID:ddXkilXj
>>907
imageBtn_x, imageBtn_y で送られるんだから、そのフォームに
<input type="hidden" name="imageBtn_x" value="123"> のエレ
メントを追加してから click メソッド呼べばいいんじゃね?

>>908
偉そうに書く前に、<input type="image" についてぐぐってこい。
910907:2007/07/18(水) 02:21:13 ID:yA++WBCH
お二人様、レスありがとうございましたm(_ _)m
>>909
勉強不足の自分ではどうにもならず、困りきっていたところにまばゆい光が><
早速試させて頂きたいと思いますm(_ _)m
>>908
僕が勉強不足だったと反省しております。HTMLとformについて基本から勉強したいと思います。
ありがとうございました^^
911名無し~3.EXE:2007/07/18(水) 09:04:01 ID:iGOu5/XR
>>910
> 僕が勉強不足だったと反省しております。

いや、俺の見る限り君の方がよっぽど勉強しているし理解度も高い。
まぁ謙遜は日本人の美徳だが。

ってか、読めば読むほど痛いレスだな、>>908は。

>>909
imageBtn.x, imageBtn.y っしょ。

どうあれ imageBtn.x=123 と共に imageBtn.x=0 の方も送られてしまうので
(受け取った側がどちらの値を採用するのか分からん)
エレメントの追加ってよりはいっそ上書きしちゃった方がいいと思う。
912911:2007/07/18(水) 09:07:18 ID:iGOu5/XR
ちょっと分かりにくかったかもしれないんで補足。

「追加ではなくて上書き」ってのは、オリジナルの

<input type="image" name="imageBtn" ...

を残さずに

<input type="hidden" name="imageBtn.x" value="123">
<input type="hidden" name="imageBtn.y" value="456">

に置き換えるってこと。んで submit() する。

これなら imageBtn.x=0, imageBtn.y=0 の方は送信されないで済む。
913911:2007/07/18(水) 09:18:14 ID:iGOu5/XR
> 読めば読むほど痛いレスだな

これはちと言い過ぎだった、すまぬ。
914907:2007/07/18(水) 20:29:32 ID:yA++WBCH
>>907さん、>>911さん
この方法で無事成功しました!
本当にありがとうございましたToT
formのPOSTで送信されるデータがhiddenで代替できるなんて初めて知りました。
教えて頂かなければずっとわからなかったと思います。
やはりHTML,formについて基礎から勉強していくべきですね^^;

>>908さんもありがとうございました。
二日間レスがなかったので非常に嬉しかったです。
余談ですが、VBSでブラウザ操作する場合、JavaScriptの解説HPが参考になることを最近初めて知りました。
恥ずかしながらformの要素やメソッドなども5日前知った程度です。
僕など、908さんの足元にも及ばないです。

レスを頂いた皆様ありがとうございました。
それでは失礼しますm(_ _)m
915名無し~3.EXE:2007/07/18(水) 21:07:18 ID:ZW3Df9Iy
ブラウザのオンライン・オフラインを切り替える事は可能でしょうか?
ネットワーク全体を切り替えてしまっても構いません。
よろしくお願いします。
916名無し~3.EXE:2007/07/18(水) 21:22:19 ID:HP3hsGve
どうせならCとかのまともな言語のスレに行けばいいのに・・・
917名無し~3.EXE:2007/07/19(木) 05:17:24 ID:FwfyMSnr
Offline Property (InternetExplorer, WebBrowser)
http://msdn2.microsoft.com/en-us/library/aa752061.aspx
918915:2007/07/19(木) 15:29:08 ID:tX7CbwFy
ありがとうございました。
919名無し~3.EXE:2007/07/21(土) 22:37:37 ID:KFSHL472
バッチファイルからcscriptで実行するvbsファイルを下記のように作成しました。

Option Explicit
On Error Resume Next
Dim objShell
Set objShell = WScript.CreateObject("Shell.Application")
If Err.Number = 0 Then
Dim objFolder
Set objFolder = objShell.BrowseForFolder(0, "フォルダを選択してください", 0)
If Not objFolder Is Nothing Then
WScript.Echo objFolder.Items.Item.Path
Set objFolder = Nothing
End If
Else
WScript.Echo "ERROR : " ^& Err.Description
End If

これってスクリプト遮断機能で検出されますか?

<チラシの裏>ウィルスバスターにはスクリプト遮断機能がありません。</チラシの裏>
920名無し~3.EXE:2007/07/21(土) 22:38:46 ID:KFSHL472
あ、「^」は無しです。すみません。
921名無し~3.EXE:2007/07/21(土) 22:49:36 ID:LhieJYkS
動かしたい環境で動かしてみればいいじゃん
922名無し~3.EXE:2007/07/21(土) 23:15:44 ID:KFSHL472
>>920
ターゲットは遠方に住む複数の知人のPCなので検証は出来ません。
うちの環境では何事も無く動作しますが、
CreateObjectがスクリプト遮断機能にゴルァされるとの噂を聞きつけまして・・・。
923678:2007/07/22(日) 00:10:25 ID:tM9sO4Uc
>>922
遠方って... 今時何言ってるんだよ。

その知人にメールで送って試してもらえばいいじゃん。
924名無し~3.EXE:2007/07/22(日) 00:25:58 ID:qlCupvCr
>>923
知人にはディスクを作成して送付することになっています。
また、デバッグを依頼できるほど親しい間柄でもありませんし、
親しい友人はみなウィルスバスター使いばかりです。
VirtualPC上のWinXPにNAV体験版を入れてみましたが、
動作が重すぎて検証になりませんでした。
それで、思い悩んだ挙句、こちらで質問した次第です。
925名無し~3.EXE:2007/07/22(日) 01:03:54 ID:KWFVImrU
>>924
親しくなれよ
いいチャンスだろ
926名無し~3.EXE:2007/07/22(日) 01:53:37 ID:ANMbH8Zu
そもそも環境依存の問題なんて当該者以外の他人に聞いても解決するもんじゃないと思うのだが
最低でもその知人とやら全員の使用しているアンチウィルスソフトとそのバージョン、およびそれを
どんな設定で使用してるかがわかんなきゃ答えようがないような気がするけどな
927名無し~3.EXE:2007/07/22(日) 02:17:45 ID:FJATDgF/
その友人にこのスレのURLを送って試してもらえばおk
928名無し~3.EXE:2007/07/22(日) 11:31:20 ID:h90uHO0r
JScriptでゴミ箱を空にするのを作ったんですが
ゴミ箱アイコンがゴミが入ったやつのままになってしまいます。
このアイコンを空のものに更新する方法はありますか?
929928 :2007/07/22(日) 11:47:19 ID:h90uHO0r
追記
ユーザ操作無しで実行したいのでInvokeVerb以外の方法を探しています。
削除はfsoです。

よろしくお願いします。
930名無し~3.EXE:2007/07/22(日) 17:27:06 ID:wDEF0MHr
まず、どういう操作でアイコンが変わるか探せ
デスクトップで最新の情報に更新とか
ごみ箱開いてみるとか
あとはそれをスクリプト化しろ
931名無し~3.EXE:2007/07/22(日) 17:47:14 ID:r3GGLn2z
>>930
はぁ?それはお前の仕事だろ?
932名無し~3.EXE:2007/07/22(日) 18:38:40 ID:FJATDgF/
>>931
夏休みの宿題は早めにやっとけよ?
毎年まぎわになってから親に頼るな
933名無し~3.EXE:2007/07/23(月) 01:31:09 ID:tk7bscW7
「ネットワーク接続」内にある接続先を実行する方法はどうすればいいでしょうか?
934名無し~3.EXE:2007/07/23(月) 03:38:36 ID:tiz4Fn4+
>>933
Shell.Application使えばいいよ
具体的な方法はググればいくらでも出てくるからそっちを見てね
935933:2007/07/24(火) 01:03:02 ID:S/R6bNn1
>>934

Const NETWORK_CONNECTIONS = &H31&

Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(NETWORK_CONNECTIONS)

Set colItems = objFolder.Items
For Each objItem in colItems
    If objItem.Name = "hogehoge" Then
        'hogehoge に接続しる!
    End If
Next

こんな感じだと思うのですが、肝心な接続する(実行する?)方法がわかりません。
ググってみたけどわからなかったです。
936名無し~3.EXE:2007/07/25(水) 01:24:37 ID:EAIl+hNG
FolderItem.InvokeVerb
or
Verb.Doit
937名無し~3.EXE:2007/08/02(木) 19:06:04 ID:HYV9OexC
IEのコンテキストメニューから呼び出すスクリプトの中で文字入力ダイアログを使いたいのですが、
下のようにやると ”InputBoxに書き込みできません”となります。
エラーの回避方法がありましたらよろしくお願いします。
<HTML><SCRIPT language="VBScript">

Function vbInputBox(message, title, default)
vbInputBox = InputBox(message, title, default)
End Function
Call vbInputBox("a","b","c")
</SCRIPT></HTML>

それか、window,promptの縦の長さを変えられる方法がありましたら教えてください。
938名無し~3.EXE:2007/08/02(木) 22:34:05 ID:hjwhShED
あ゛?普通に動くが

<HTML><SCRIPT language="VBScript">

Function vbInputBox(message, title, default)
vbInputBox = InputBox(message, title, default)
End Function

Document.Write vbInputBox("a","b","c")

</SCRIPT></HTML>
939937:2007/08/03(金) 11:39:25 ID:brmT2+zm
やっぱり動きません。

↓でも動かないし。
<HTML><SCRIPT language="VBScript">
MsgBox("a")

</SCRIPT>
</HTML>
940名無し~3.EXE:2007/08/03(金) 11:44:57 ID:U+Mx7u4b
>>939
動く。但し規定のブラウザがIEである事が前提。
941名無し~3.EXE:2007/08/03(金) 16:57:54 ID:gh3Au87b
>>937
win2000 IE6 ですが同じエラー出ますわ
prompt は平気なのにね、何でだろ

MenuExtに登録するhtml を

<SCRIPT type="text/JScript">
var wshell = new ActiveXObject("WScript.Shell");
wshell.run("パス\\vbInputBox.vbs");
</SCRIPT>

にしてワンクッション置いてみるとか
942名無し~3.EXE:2007/08/05(日) 03:38:22 ID:GMOEkMoa
<script type="text/javascript">
external.dialogWidth = '300px';
external.dialogHeight = '110px';
function OK(){
alert(document.F1.T1.value);
window.close();
}
</script>
<title>モーダルダイアログモード</title>
<br>
<form name="F1" action="#">
<table>
<tr>
<td>何か入力</td>
<td><input type="text" name="T1" size=30></td>
</tr>
<tr>
<tr>
<td></td>
<td><input type="button" value=" O K " onClick="OK();"> <input type="button" value="キャンセル" onClick="window.close();"></td>
</tr>
<tr>
</form>
<script type="text/javascript">
document.F1.T1.value = "デフォルト";
</script>
>937
MenuExt Flags=1で登録してモーダルダイアログモードにする
943名無し~3.EXE:2007/08/08(水) 13:44:05 ID:ALoY2U7S
今現在、英語版のWindows(再起動するたびに設定リセット仕様)の使用しているのですが、
毎回日本語入力をする為にIMEを出すのが面倒で、
ttp://www.3yokai.net/hawaii/20_pc_net_digicam/ime2.htm このWebサイトの
「日本語を入力できるようにする」の項目作業を自動でやってくれるWSHを書きたいのですが、
WSHにてMS-IMEを起動し、日本語入力環境に設定するにはどのようなコードを書けば良いのでしょうか?
944名無し~3.EXE:2007/08/10(金) 14:17:32 ID:SB2l+23k
945名無し~3.EXE:2007/08/18(土) 20:05:02 ID:eUvf8zvX
946名無し~3.EXE:2007/08/22(水) 20:38:28 ID:tz0yz31E
ume
947名無し~3.EXE:2007/08/23(木) 20:23:35 ID:YDx8nhVH
保sh
948名無し~3.EXE:2007/08/28(火) 15:17:19 ID:6JO2o1xw
エクスプローラでファイルを選択→右クリック→「プロパティ」と
同じダイアログを開くCOMオブジェクトなどはないでしょうか?
949名無し~3.EXE:2007/08/28(火) 19:13:50 ID:uvmautGd
>>948
Win2000/Meのごみ箱フォルダとか
950949:2007/08/28(火) 19:36:45 ID:uvmautGd
すまん。違った。

>>948
Shell.Application の InvokeVerb とか
951名無し~3.EXE:2007/08/28(火) 21:03:33 ID:nAgyIVfI
以下のようなvbsを作ってダブルクリックするとプロパティウィンドウが
出てくれません。他のメニュー項目はInvokeVerbできているのですが。
親ウィンドウがないからでしょうか?

Set oShell = CreateObject("Shell.Application")
Set oFolder = oShell.Namespace("c:\")
Set oFolderItem = oFolder.ParseName("WINDOWS")
Name = "プロパティ(&R)"
oFolderItem.InvokeVerb(Name)
952名無し~3.EXE:2007/08/28(火) 21:10:55 ID:uvmautGd
なるほどね・・・

そのあとに
wscript.sleep 3000
追加すると3秒間は開いてくれるねww
953名無し~3.EXE:2007/08/28(火) 22:11:44 ID:Rghs668z
何故に3秒?
閉じるまで開いておくようにすればいいじゃん
954名無し~3.EXE:2007/08/28(火) 23:25:34 ID:zvPk85aX
道連れか
955名無し~3.EXE:2007/08/29(水) 00:19:34 ID:KI9SLann
Set Shell=CreateObject("Shell.Application")
For Each ie In Shell.Windows()
If InStr(TypeName(ie.Document),"IShellFolderViewDual") Then
Exit For
End If
Next
Set Shell=ie.Document.Application
を使え
956名無し~3.EXE:2007/09/01(土) 16:04:15 ID:bXQrMlw/
共有フォルダで大量のファイルの作成者を調べる必要がでてきました
スクリプトでファイルの作成者を知る方法はありますでしょうか
957名無し~3.EXE:2007/09/01(土) 17:26:49 ID:oJcUr36C
>>956
努力しない奴にほいほい答えてくれる者はいない。
958名無し~3.EXE:2007/09/02(日) 02:08:30 ID:P/N3hv+m
>>956
なんとかstatってのがあったはず
これでなんか情報を取得して調べると
ファイルの情報っぽいのが見れたはず

>>957
いじわるするなよ
959名無し~3.EXE:2007/09/02(日) 15:15:47 ID:fKko3nYQ
Folder.GetDetailsOfでいけるんじゃね
960名無し~3.EXE:2007/09/06(木) 18:52:43 ID:LSXnZm/Z
statって調べたらperlなんですね
確かにスクリプトだけどできればvbsかせめてjsでお願いしたい
961名無し~3.EXE:2007/09/06(木) 20:26:30 ID:ofzdNoRS
>>960
perlはWSHで使えるからこのスレの範疇なんだが。>>5
それにWSH自体やJS、VBSにはそういう機能ないので
COM使うか、別言語使うかの選択になるわけだし。
962名無し~3.EXE:2007/09/06(木) 22:37:51 ID:X5XEo4Da
wsh初心者なんですが、IE操作でわからないことがあるので教えてください。
Set objIE = CreateObject("InternetExplorer.Application")
で作ったobjIEにurlを表示してリンク先をダウンロードしたいんですが、
保存ダイアログが出てきてそのあとどうしていいかわかりません。
activateしてSendKeysを使えばいいんでしょうか?
保存先も指定したいんだけど、どうしていいか全然わかりません。
963名無し~3.EXE:2007/09/06(木) 23:34:08 ID:0hvP0y9l
xmlhttpでは駄目なん?

function GetHTMLDocument(ByVal strURL, ByVal strDatFileName)
 dim objXmlHttp, objStream
 const AD_TYPE_BINARY = 1'ストリームタイプをバイナリストリームにする
 const AD_SAVE_CREATE_OVER_WRITE = 2'ファイルを上書きする
 
 on Error Resume Next
 set objXmlHttp = WScript.CreateObject("microsoft.xmlhttp")'XMLHTTPオブジェクトの作成
 objXmlHttp.Open "GET", strURL, false
 objXmlHttp.Send
 if Err.Number <> 0 then
  strErrMsg = strURL & ": " & Err.Description
  GetHTMLDocument = false
  set objXmlHttp = nothing
  exit function
 end if
 on Error Goto 0
 
 set objStream = CreateObject("ADODB.Stream")'バイナリストリームオブジェクトの作成
 objStream.Open
 objStream.Type = AD_TYPE_BINARY
 objStream.Write(objXmlHttp.ResponseBody)
 objStream.SaveToFile strDatFileName, AD_SAVE_CREATE_OVER_WRITE
 objStream.Close
 set objStream = nothing
 set objXmlHttp = nothing
 GetHTMLDocument = True
end function
964962:2007/09/07(金) 18:48:40 ID:yxgIGp5j
>>963
レスありがとうございます。
やってみてリンク先はダウンロードできました。
ただ、目的のサイトではリンク先のURLを開くと、違う名前のファイルを
ダウンロードするようになってたので、うまくいきませんでした。
自分でもいろいろやってみようと思います。
実は、macでは簡単に出来たんで、winでもやってみようと思ったんですが、WSHは難しいですね。
965962:2007/09/14(金) 22:53:23 ID:u3aWDe/c
とりあえず、safariをインストールしてsendkeysでなんとかなりました。
safariはコマンドラインオプションが無いみたいなのでホームページに目的サイトのURL指定したり、
保存先もsafariのデフォルトに設定とかだけど。
966名無し~3.EXE:2007/09/16(日) 18:16:51 ID:Vi51TBdv
あるソフトを、前回起動時から1週間経っていたら起動する。そうでなければ何もしない。
というスクリプトはどう組めば良いですか。
967名無し~3.EXE:2007/09/16(日) 18:23:26 ID:yrnCWO5U
> あるソフトを、前回起動時から1週間経っていたら起動する。そうでなければ何もしない。
をコードにすればいいだけだと思いますが、なにか?
968名無し~3.EXE:2007/09/16(日) 18:30:12 ID:Vi51TBdv
>>967
それを教えて下さい><
969名無し~3.EXE:2007/09/16(日) 18:47:37 ID:yrnCWO5U
何処かに前回起動日時データを保持しておき、それが現在-7より大きかったら終了
小さかったら「あるソフト」を起動して、前回起動日時データを書き換える

以上が"組み方"
上記をコードに"書く方法"は、WSHヘルプやGoogle参照
970名無し~3.EXE:2007/09/18(火) 17:09:13 ID:3e/ATvcX
あるソフトの選択している範囲をクリップボードに取り込むには
どう記述すればよいでしょうか?
971名無し~3.EXE:2007/09/18(火) 18:00:46 ID:59SRskbJ
あるソフトとは?
972名無し~3.EXE:2007/09/18(火) 18:03:50 ID:3e/ATvcX
>>971
OpenJaneDoeです。
ショートカットメニューのコピーを使えば簡単ですが
複数の処理をvbsファイルでまとめて行いたいので。
973名無し~3.EXE:2007/09/18(火) 18:34:25 ID:Hp5KGcqw
ふつうにこぴーすりゃいいんじゃね?
974名無し~3.EXE:2007/09/18(火) 23:19:34 ID:gS0vXNvn
SendKeysでCtrl+Cでいいんじゃね?
いまいち何がやりたいか見えないからアドバイスしづらいが・・・。

datファイルをvdsで開いて処理する方がいろいろできるんじゃないのかな
975名無し~3.EXE:2007/09/19(水) 04:07:11 ID:qZpDaqKl
InternetExplorer.Application
976970:2007/09/19(水) 10:35:41 ID:pTtgjdvq
ありがとうございます。
SendKeysで出来ました。
977名無し~3.EXE:2007/09/19(水) 10:40:56 ID:pTtgjdvq
objShell.Run "calc",1
だと電卓が立ち上がるのに
objShell.Run "C:\Program Files\aaa\bbb.exe"
だとbbbが立ち上がりません。
スペースや2バイト文字があるとrunメソッドは使えないのでしょうか?
978名無し~3.EXE:2007/09/19(水) 11:15:11 ID:ikljzqS6
CreateObject("WScript.Shell").run """C:\Program Files\Windows Media Player\wmplayer.exe"""
979名無し~3.EXE:2007/09/19(水) 16:25:51 ID:pTtgjdvq
>>978
ありがとうございます。
ダブルクォーテーションマーク3つで囲んだらうまくいきました。
980名無し~3.EXE:2007/09/19(水) 17:02:19 ID:pTtgjdvq
パラメータつきのアプリケーションをrunメソッドで立ち上げたあとに
Sendkeyメソッドを使用すると、アプリケーションが立ち上がる前に
キーを送ってしまいうまくいきません。単にsleepを使う以外で
確実にキーを渡せる方法はありませんか?
981名無し~3.EXE:2007/09/19(水) 18:50:48 ID:0K5oMSAo
つAppActivate
982名無し~3.EXE:2007/09/19(水) 21:24:11 ID:pTtgjdvq
>>981
runメソッドのあとに入れてみましたがアプリが立ち上がる前に
キーを送ってしまっているようでうまくいきません。
なんかいい方法はないでしょうか?
983名無し~3.EXE:2007/09/19(水) 21:27:50 ID:0K5oMSAo
つAppActivate の復帰値
984名無し~3.EXE:2007/09/19(水) 21:58:50 ID:pTtgjdvq
Do Until objShell.AppActivate("abc.txt")
WScript.Sleep 50
Loop

で出来ました。
985名無し~3.EXE:2007/09/20(木) 18:08:59 ID:5a0Uty35
次スレは?
986名無し~3.EXE:2007/09/20(木) 20:28:37 ID:Kpu8Zq9f
まったく理解されずにターミネートされた>>983が気の毒で・・
987名無し~3.EXE:2007/09/21(金) 12:36:38 ID:dS92JO99
ActiveXの出力パラメータをVBS
から呼び出すと型が違いますとエラーになります
以下のような関数呼び出すにはどうすればよいか
ご存じでしたら教えていただけませんか。
func(String outarg1[],String outarg2[])
988名無し~3.EXE:2007/09/22(土) 02:04:30 ID:Acm8tcMi
>>987
Excel VBAやVB6以前があれば、
その中で参照設定してオブジェクトブラウザを見て、
VBでどんな型になるか確認したらいい。
VBScriptでもそれと同じ型に合わせろ。
989名無し~3.EXE:2007/09/22(土) 16:41:11 ID:E7J7v9Mj
はぁ?
990987:2007/09/22(土) 17:14:36 ID:7RwwKfbd
>>988
ExcelVBAでは出来てるんですが、
VBScriptでは型の指定ができなくてエラーとなるみたいなんですが
これはWSH+VBSからActX呼び出しの限界でしょうか
991名無し~3.EXE:2007/09/22(土) 18:23:16 ID:ZspLI4uB
君の脳の限界に一票
992名無し~3.EXE:2007/09/22(土) 19:57:42 ID:fU47bAPg
つーか、なんでそのActiveXの名前そのものとかを隠すの?
やっぱ脳が弱いのかな?
993名無し~3.EXE:2007/09/22(土) 21:58:48 ID:K4jH93N6
自作じゃね?
994名無し~3.EXE:2007/09/23(日) 13:02:12 ID:PIGV9rKX
^
995名無し~3.EXE:2007/09/23(日) 14:35:53 ID:i+HU8l0E
h
996名無し~3.EXE:2007/09/23(日) 14:36:24 ID:i+HU8l0E
h
997名無し~3.EXE:2007/09/23(日) 14:36:57 ID:i+HU8l0E
h
998名無し~3.EXE:2007/09/23(日) 14:37:29 ID:i+HU8l0E
h
999名無し~3.EXE:2007/09/23(日) 14:38:00 ID:i+HU8l0E
h
1000小倉優子 ◆en0rG2J.f6 :2007/09/23(日) 14:38:32 ID:i+HU8l0E
1000ならジュースでも飲むか
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。