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

このエントリーをはてなブックマークに追加
1名無し~3.EXE
前スレ
http://pc.2ch.net/test/read.cgi/win/1009175619/

こんなことコンピュータにやらせろよ。そう思ったことはありませんか?
簡易的な実行環境も含めて普通のOSだったら当たり前に備わっている自動実行。
Windowsの標準に備わっているそれがWSH(Windows Script Host)です。

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

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

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

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

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

また関連の>>1-4も見てください。
2名無し~3.EXE:02/05/24 22:54
便利なリンク集(前スレまとめ)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

「標準ASPテクニカルリファレンス」山田祥寛著 SOFTBANK
http://books.softbank.co.jp/bm_detail.asp?sku=4797314001
5名無し~3.EXE:02/05/25 00:35
とりあえず、アゲときます。
6名無し~3.EXE:02/05/25 04:54
    ∧_∧ ∧__∧
 _ ( ´∀`(・∀・ )__ < ネタが無いのに立てたんだね。ヴァカみたい♪
 |≡( 11 )( 121 )≡|
 `┳(__)(__) (__)(__)━┳
,..,..┴,...,...,...,....,....,.....,....,┴,,,,..
7名無し~3.EXE:02/05/26 01:20
前スレ、話題がなくて終わってたろ。
なに考えてんだ。

優良スレgae。
8名無し~3.EXE:02/05/26 01:28
wshでファイル管理って出来ます?
例えば、一定期日経過したファイルは自動的に消すとか。
9名無し~3.EXE:02/05/26 01:36
>>8
出来る。
10名無し~3.EXE:02/05/26 01:49
>7
自分から進んであげるネタはないな。
ただ、このまま埋もれるのは惜しいなぁと感じたので立ててみました。

>8
タスクと連携してなら
ttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1022248177&res=2
にちょうどいいのが
11名無し~3.EXE:02/05/26 01:54
>>10
あんた、カコイイよ! ホントにthx!
解読して改造しまつ

>>7
まぁ、どっかで誰かに需要があるときが来るでしょ。
その時にこのスレの住人が暖かく迎えてあげる、
ということにしませんか?
12名無し~3.EXE:02/05/26 02:03
raspppoeで接続、切断ができるwsh教えてください。
13名無し~3.EXE:02/05/26 02:07
>>11
過去ログや>>1にリンクされてるソースアプ板さえ見ない奴を温かく迎えろと?
14名無し~3.EXE:02/05/26 02:10
>>13
特殊な知識がいる世界だからある程度仕方ないと思う。俺は。
15前スレ11:02/05/26 09:12
11逃がした。
もう来ねえよ!(w
>12
raspppoeというのが分からなかった。
調べてみると、すごいアプリ(兼ドライバー)だ、でも私の環境には必要ないものでもある。
また、こういうものなら切断が必要な事態が分からない。
かつ、日本語のサイトにも接続の方法はあったが、切断はないのでこれ以上のことは分からない。
C:\WINNT\System32\rasphone.exe -d "接続名"
のショートカットをスタートアップかタスクの起動時に入れておけばよいのではと思う。

問題が複雑でなければ、より単純な方法で解決されることをお勧めします。

またそれによって何が出来るかっていう価値観を提示してもらえれば、それに見合った方法をということです。

>11
キリ番Getおめでとう。この番号を取得したからには精進し、マスターしなければならない。
とりあえずは、それを自分用に改造すると言うことなのでおいておいて、
それによってどういった利点があるのかということを教えてもらえるとうれしい。
ファイルの削除、移動、コピー、更新はこまいことを言ってしまえばキリがない。
アレぐらい単純でもファイルタイプ判定ぐらいはつけておくべきだったと後から思ったのでね。

>13,14
お二方の意見は理解しました。
立場が違えばなんとやらだなぁ、と言うことを実感。
悩みは漠然と考える人もいるし、きっちりと考える人もいる。要求もまた然りだと思います。
聞いたうえで、簡潔に、もしくは少し長めに、または答えないと言うのはどうでしょうか?
もちろん個人的にですね。
駄レススマソ。

>15
あ、15さんだ。(本物?)
まぁそういわず、書き込んでいってください。
17前スレ11:02/05/26 09:55
>16
本物だよ。
それを証拠に、まもなく俺の掲示板に書き込みするから(w

もう一つのスレは、また復帰する気だけど、こっちは、あんたにまかせるよ。
(いや、あのスレAA&ツッコミが面白くて、ずっとROMってるんだよなあ)
18名無し~3.EXE:02/05/26 10:10
11キタ━━━(・∀・)━━━!!!!
19おっとっと夏だぜ:02/05/26 18:53
WSHで東洋証券の自動トレードシステムを作ろうと昨日から
勉強しています。

ID、PASSなどをテキストボックスに入力までは作れましたが、
認証のアイコンをクリックする方法がわかりません。

以下の部分のimageをクリックすれば注文画面に入りますが
自動でクリックする方法は知りませんか?。

------------------------------------
<INPUT TYPE="image" SRC="../image/bt_2_2.gif" ALT="セオヌァシツケヤ" BORDER=0>
</FORM>
------------------------------------

20おっとっと夏だぜ:02/05/26 18:54
こちらがログイン画面です

https://www.toyo-sec.co.jp/cgi/ip00000.cgi

21名無し~3.EXE:02/05/27 12:24
この<INPUT>を見つけて <INPUT>.click() は?
22名無し~3.EXE:02/05/27 13:40
そのINPUT要素にname属性がない場合は、0序数で指定します。
同一FORM内でのSELECTとINPUTの数がnとすると、
forms(0).elements(n - 1).click()
ですね。
23韮←ゲジゲジみたい:02/05/27 17:54
ところでVBScriptでExcel操作したいのだけれど、
Set objExcelApp = CreateObject("Excel.Application")
したあとのobjExcelAppのプロパティやメソッドは、
どうやったらわかるの?
ドキュメントとかあるの?
かなり探してるけど無い・・・。(私の運が悪いのかな?)
24韮←ゲジゲジみたい:02/05/27 17:58
こんなのどうでしょう?

Option Explicit
Dim sCopySrc
Dim sCopyObj
sCopySrc = "コピー元"  ' コピー元
sCopyObj = "コピー先"  ' コピー先プリフィックス
' ファイルサフィックス
Dim sFix, sSufix
Dim yy, mm, dd
Dim syy, smm, sdd
Dim fs, folder
Set fs = WScript.CreateObject("Scripting.FileSystemObject")
sFix = Array( "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" )
yy = Year( Now )
mm = Month( Now )
dd = Day( Now )
if mm >= 1 and mm < 10 then
  syy = yy
  smm = "0" & mm
else
  syy = yy
  smm = mm
end if
25韮←ゲジゲジみたい:02/05/27 17:59
続き...

if dd >= 1 and dd < 10 then
  sdd = "0" & dd
else
  sdd = dd
end if
' コピー
sCopyObj = sCopyObj & syy & smm & sdd
sSufix = ""
Dim i
for i=0 to ( UBound( sFix ) - 1 )
  On Error Resume Next
  Set folder = fs.GetFolder( sCopyObj & sSufix )
  if Err.Number <> 0 then
    fs.CreateFolder sCopyObj & sSufix
    fs.CopyFolder sCopySrc, sCopyObj & sSufix, True
    if Err.Number <> 0 then
      MsgBox Err.Description() & " " & Err.Source()
    end if
    exit for
  end if
  sSufix = sFix( i )
  Err.Clear
next
26韮←ゲジゲジみたい:02/05/27 18:07
>> 24-25
使用方法
例えばコピー元を”開発物”とします。
この開発物というフォルダと同じ場所に、このvbsファイルを保存します。
sCopySrc="コピー元" → sCopySrc="開発物"
sCopyObj="コピー先" → sCopyObj="開発物"
とします。
vbsをダブルクリックして起動します。
すると”開発物20020527”というフォルダができ、”開発物”フォルダの中身がすべてコピーされます。
もう一度vbsをダブルクリックすると”開発物20020527A”というフォルダができます。
1日に27個までコピーができます。

バックアップに使用することを目的としています。
ところで全角スペースは半角に直すか消して実行してね!
27韮←ゲジゲジみたい:02/05/27 18:17
前スレ11番さんの翻訳JavaScript改造してみました

以下を translatedisp.htm として保存
<html>
<head>
<title>翻訳</title>
<script language="JavaScript">
<!--
function moji_hantei( sitei, henkan, moji )
{
while( moji.indexOf( sitei ) != -1 ){
moji = moji.replace( sitei, henkan );
}
return moji
}

// --></script>
</head>
<body>
<script language="JavaScript">
<!--
str = location.search;
str = str.substring(1,str.length);
document.write( moji_hantei( "%20", " ", str ) );
// --></script>
</body>
</html>
28韮←ゲジゲジみたい:02/05/27 18:17
以下をtranslate.htm として保存
<script language="vbscript">
<!--
Set oTextRange = external.menuArguments.document.selection.createRange

strTranslate = oTextRange.text
a=Asc(Left(strTranslate,1))
If 0<= a And a<=255 Then
mode="ENJA"
Else
mode="JAEN"
End If
strURL = "http://www.excite.co.jp/world/text/?wb_lp=" & mode & "&before=" & strTranslate
Set objIE = CreateObject("InternetExplorer.Application")
With objIE
Call .Navigate2( strURL )
.Visible = False
Do While .Busy Or .ReadyState<>4

Loop
' strRet = "原文<br>" & strTranslate & vbCrLf & "<br><br>訳文<br>" & vbCrLf & .document.World.after.Value
strRet = .document.World.after.Value
Call .Quit()
End With
Set objIE = Nothing

window.open "translatedisp.htm?" + strRet ,"","resizable=yes,scrollbars=yes,width=640,height=400"
-->
</script>
29韮←ゲジゲジみたい:02/05/27 18:19
以下を translate_install.vbs として保存
Set WshShell = WScript.CreateObject("WScript.Shell")
Set Fs = WScript.CreateObject("Scripting.FileSystemObject")

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

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

MsgBox "インストール完了"

以下を translate_uninstall.vbs として保存
Set WshShell = WScript.CreateObject("WScript.Shell")
Set Fs = WScript.CreateObject("Scripting.FileSystemObject")

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

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

MsgBox "アンインストール完了"
30韮←ゲジゲジみたい:02/05/27 18:21
>27-29
translatedisp.htmとtranslate.htmとtranslate_install.vbsとtranslate_uninstall.vbsを
同じフォルダに保存する。

translate_install.vbsを実行するとインストール完了
31韮←ゲジゲジみたい:02/05/27 18:27
>27-30
Win2000でのみテスト済み
でもなぜか初回起動時のみVisualInterDevが起動される・・・なぜだ?
32名無し~3.EXE:02/05/27 19:29
>19
日計り君?
コスモの自動更新も作ってくれ。
あと、マケスピ起動したら自動でログインして
マイページを開くとか・・・。
33名無し~3.EXE:02/05/27 22:15
>韮←ゲジゲジみたい
頼むから>1をよく読んでくれ…

>・また、一レスに収まりきれないコード(30行以上)はソースアップ板でどうぞ。
ttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1022248177
>ソースをアップ出来ましたら、そこの個別リンクを張り、それを元に話を進めていただけると便利かもです。
34名無し~3.EXE:02/05/27 23:44
質問者も回答者も>>1を読まんとは・・・。やっぱこのスレダメじゃん。
35名無し~3.EXE:02/05/28 07:08
ゲジゲジキタ━━━(・∀・)━━━!!!!
36韮←ゲジゲジみたい:02/05/28 09:21
今見た スマソ
37sage:02/05/28 09:26
WSHつーか、中身はほとんどVBScriptなんでしょ?
38名無し~3.EXE:02/05/28 09:31
WSHはVBS,JScript,Ruby,Perl,etc
を使用できる。
>17
それは、本意ではないなぁ。やるからには出来る限りのことはするけどね。
本物?とか聞くのは野暮だし別に疑ってはいないけど、
ここでは11さんのアイデンティティを見ていないと思うので、そこら気長に待つことにしますわ。

>19
ブラウジングの自動化は、結構需要がありそうなので、
下記はとてもマクロ的で他にイカす方法はごまんとあるが、最もメンテしやすい方法を紹介。
Dim window
Sub Wait()
With window : Do While .Busy Or .readyState <> 4:WScript.Sleep(100):Loop: End With
End Sub
Set window = CreateObject("InternetExplorer.Application")
window.Visible = True
までを定例句として、先頭に置く。
後は、ソースとにらめっこしながら、
window.Navigate2 "http://www.google.co.jp/"
wait
window.document.f.lr(1).checked = True
window.document.f.q.value = "何か"
window.document.f.submit()
wait
window.document.links(12).click()
こんな感じで書いていけばよろしいかと。
>23
餅は餅屋。
mk:@MSITStore:C:\Program%20Files\Microsoft%20Office\Office\1041\VBAXL9.CHM::/html/xltocObjectModelApplication.htm
で当たりを付けた方が良いと思われ。
>23-24は、ツールとしての使用を考え、全→半空白化し、ソースアプ板に再掲キボン。
あそこならそのままインデントがきれいに出る。
41前スレ11:02/05/29 01:27
>39
実はちょっと疑ってる名無しさん募集中。。さんのためにスクリプトを書いてきました。

D&Dしたファイルやフォルダの最終更新日時を、現在の値に書き換えるものです。
しょーもないスクリプトですけど、こんなこともできるってことで。

ttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1022248177&res=5

またおもしろそうなネタ(お題)があったら、お邪魔しますね。
42韮←ゲジゲジみたい:02/05/29 10:13
>40
Thanks!
24-25のソースうぷすますた
43韮←ゲジゲジみたい:02/05/29 10:30
エクセルを95形式に保存しなおしちゃうスクリプト作成しました。
実行したフォルダとそのサブフォルダのエクセルファイルを95形式に保存しなおします。

http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1022248177

変換前のファイルは .bak 拡張子が付けられて保存されます。
44名無し~3.EXE:02/05/29 21:02
お題です。

The Internet Archive: Building an'Internet Library'
(url: ttp://www.archive.org/)
というページがあります。
過去のWebページを保存してるそうです。

*.urlファイルのコンテクストメニューに
このサイトを使って「過去のこのページを検索する」
みたいなものを追加できないでしょうか。
風邪引いた…

>41
これまた渋いところを。。
FileObjectのDateLastModifiedプロパティが読み取り専用であることがわからんと、見過ごされます。
そうですね、ネタがあったらまたカキコお願いしまつ。

>43
頼むから、個別にリンクしてくれ。そこのURLは1に書いてあるので十分でしょ。
それと、ツールとしての再利用を考えると、res=7は消したほうがイイ。
もちろん、違いについて比較するべき何かがあればいいんだけど…。

>44
ちょっと考えてみた。
そのページリンクおよびテーブルを取得するのは簡単だけど、それを選択するいいUIが思いつかない。
あくまでShellコンテキストから入るほうがいいのかな?
個人的には、IEのコンテキストで拡張するほうがよさげな感じなのだが。
アレならDialogを介在できるし、使い勝手もシームレスだ。
まぁ、IEは使っていないよという人ならやらざるをえないんだろう。
どうすればいいんだ、createPopUpでメニュー作る?
でもウチの頭じゃ現在のマウス位置が取得できない。教えてくれぃ。
46前スレ11:02/06/01 01:12
>>45
UIって必要かなあ。
単に、*.urlファイルのリンク先アドレスを読み込んで、
http://www.archive.org/*/読み込んだアドレス
を開けばいいだけの気がします。

あと、HTMLドキュメント内のリンクの右クリックメニューに組み込むと、
なかなか効果的じゃないでしょうか。
コードも2〜3行で済むと思うので、チャレンジしてみてください。
47韮←ゲジゲジみたい:02/06/01 04:58
>>45
スマソ でもなぜかres=7が消せないよぅ
鬱だ。
48名無し~3.EXE:02/06/01 10:34
|  | ∧
|_|Д゚) イヤ、アノ、、、
|文|⊂) 削除人カ管理人シカ削除デキマセンヨ
| ̄|∧| 消シトキマスカ?
4944:02/06/01 14:46
自己レスです。ふたを開けてみればなんてことなかったですね (^_^;
個人的にはIEのお気に入りメニュー内のアイテムを右クリックして使いたいのでそっちを作ってみました。
スクリプトの置き場所を決めてからregファイル内のスクリプトパス(1か所)を書き換えて、
それから"結合"します。

(使用上の注意)
使う度にテンポラリファイル(%TEMP%\TakeMeBack.url)が作成されます。
IEウィンドウの再利用は行われません。新しいウィンドウが作成されます。

ttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1022248177&res=9
5044:02/06/01 16:05
IEコンテクストの場合はこうですね。
3行に収めてみました。
external.menuArguments.event.srcElement.href はちょっと長すぎですが (^_^;;

// C:\WINDOWS\WEB\pastsearch.html として保存
// (htmlの場所・名前を変更するときはregの内容も変更する)
<script language="javascript" defer>
if(external.menuArguments.event.srcElement.tagName == "A") try {
external.menuArguments.navigate("http://web.archive.org/web/*/"+external.menuArguments.event.srcElement.href);
} catch(e) {}
</script>

// pastsearch.reg として保存
REGEDIT4

[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\過去を検索]
@="C:\\WINDOWS\\WEB\\pastsearch.html"
"contexts"=dword:00000022
51韮←ゲジゲジみたい:02/06/01 22:13
>>48
よろしくお願いします。
52名無し~3.EXE:02/06/04 20:09
 イーサネット上、TCP/IP で繋がっているリモートコンピュータ(NetBIOS名か
IPアドレスのどちらかまたは共にわかっている)のOS名、サービスパック、
IEバージョン、IEサービスパック、適用されたHotFIX、導入されている
アプリケーション(アプリケーションの追加と削除の項目)、MACアドレス、
サポート情報について抜き出すことは、WSHを使うことで可能でしょうか?
53名無し~3.EXE:02/06/05 10:24
WSHで複数アプリの自動インストールとか、Windowsのパッチを順番にあてるとか、
そういう自動処理って可能ですか?
54名無しさんEXCEL:02/06/05 23:04
やったことないけど
NTコマンド類を順次実行は
netstart-? >D:hogehoge.txt
ipconfig/all >D:hoge.txt
55名無し~3.EXE:02/06/05 23:21
>>54
ヤシキさん?
56IUnknown:02/06/06 00:06
新スレになってからの書き込みは初めてです。よろしくです。

>52
HFNetChk というコマンドラインツールがマイクロソフトにより公開されています。
http://www.asia.microsoft.com/japan/technet/treeview/default.asp?url=/japan/technet/security/tools/tools/hfnetchk.asp

豊富なコマンドラインオプションを使って詳細なデータ収集を行うことが出来ます。
ただし欠点として OS や IE のバージョンに依存性があります。この辺りの問題が
クリアされるのであれば、WSH では標準入出力を扱うことが出来ますから色々と
試してみてはいかがでしょうか?

申し訳ありませんが HFNetChk の使用方法その他に尽きましては省略させていただきます。
システム管理者用ツールなのでネット上でそれなりに情報は収集できると思います。
>46
そうですね。意識してはいるんですけどやっぱりシンプルを通すのって難しいです。
アレも出来るコレも出来るってついつい欲張ってしまいます。

>48
すいません、そういう仕様とは知らず、(削除を)促してしまいました。
お手数をおかけしました。

>49
あのページってスクリプト切ってあるとリンクが触れないので、そういうページなのかなと誤解していました。

>52
コレ全部プログラムとして書いたらお金がもらえそうです。
なので、IUnkwonさんが示したツールで、出力を加工というのが現実的と思われます。
WMIを使ってリモート環境を探査するなら、
ttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1022248177&res=10
その内のSoftwareElementのみです。他のクラス、プロパティはSDKを参照してください。
ttp://www.microsoft.com/msdownload/platformsdk/sdkupdate/
大体の当たりを付けるには、C:\WinNT\System32\wbem\cimwin32.mofを
(ユニコードが読めるエディタで)検索してみてください。
58名無し~3.EXE:02/06/09 03:05
WSHで指定ファイルのバージョン情報を得ることは可能でしょうか?
5958:02/06/09 03:35
自己レス。
FileSysyemObjectにGetFileVersionメソッドをハッケソ。
だが、目的のバージョンは表示されず・・・。
このメソッドどこから情報を得ているのだろうか?
6058:02/06/09 03:50
さらに自己レス。
いろいろ調べてみたが、どうやら普通にバージョンリソースの
FileVersionから取得してるようだ。当たり前か・・・。

どうやら原因は俺がバージョンを取得したいファイルのほうが、
FileVersionにアルファベットを埋め込んでいるせいのようだ。
スレ汚しスマソ。
61名無し~3.EXE:02/06/13 23:03
age
62名無し~3.EXE:02/06/17 20:49
wshを使って,win2kにて,ユーザの一括登録を行おうと
思っていますが,「初回ログオン時にパスワードの変更
を求められる」のチェックボックスにチェックを入れ
ることができません。

「パスワードを無期限にする」とかは、フラグをたてる
ことで,チェックすることができたんですが,「初回ログ
オン時に・・・」はどうすればいいのかわかりません。
何か対応した変数があるのでしょうか。
63名無し~3.EXE:02/06/18 00:28
net user
コマンドでガシガシ登録するのはダメ?って大丈夫だったらWSHなんて使わないか。スマソ。
>62
Set Container = GetObject("WinNT://Domain")
Set NewUser = Container.Create("User", "NewUserName")
NewUser.SetPassword ("TemporaryPass")
NewUser.RequireUniquePassword = True
NewUser.SetInfo
こういうこと?
ウチの環境ではmmcの設定がうまくいっていないので4行目うまくいかないんですけど。
6552:02/06/18 10:23
>56
 早速自分のPCで試してみました。…これは面白い。もう少し使い込んで
みてから会社の連中に教えてあげようと思います。
>57
 やっぱりそうですか…確かにこんなツールあったら会社に買わせると思います。
今リンク先のサンプルスクリプトとWMISDKをみながら、シコシコとコード
書いているところです。資料が英語なのがちとつらひ。

 >57 氏のリンク先10番のようなスクリプトを手軽に生成してくれるPythonスクリプトを
書いてみました。ちゃちいもんですが、お役に立てれば幸いです。

ttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1022248177&res=10
に貼りました。重ね重ねですが、IUnknown氏、名無しさん募集中。。氏他皆様に感謝いたします。
6652:02/06/18 23:48
ヽ(`Д´)ノウワァァン!!NT4SP6SRP1+IE5.5SP2の環境で名無しさん募集中。。さんの
スクリプトを実行(ターゲットは127.0.0.1)すると「無効な構文です」 って言われる。
 W2k から上記環境に刺すと「オブジェクトを作成できません」って
言われる。NT4にも対応しているはずなのに…。
 もしかして、ADSI みたいに何かインストールしないと刺したり刺されたり
できないとか?どなたか、うまい解決策を教えてください…。
>66
エラーが出るのは何行目ですか?
16行目と仮定すると、WMIのインスコが必要です。>3を見てね。
6862:02/06/19 23:26
>64
ありがとうございます。WinNTプロバイダを利用した方法では、
名無しさん募集中。。氏がおっしゃるように、4行目で
「DSスキーマの規則に違反する行為を試みました。」
とのエラーが出てうまくいきませんでしたので、LDAP
を利用してやってみたところ、解決することができました。

Set usr = GetObject("LDAP://CN=Jack, OU=Sales, DC=Aaa, DC=Com")
usr.Put "pwdLastSet", CLng(0)
usr.SetInfo
こんな感じです。

WinNTプロバイダを利用してやる場合は、mmcの設定
が必要とのことですが、どのような設定が必要か教え
ていただけますか。
6952:02/06/20 09:11
>67
Σ(゚Д゚)<ソウダッタノカ!!
 確かに16行目の GetObject でエラーを吐きます。今日上司に導入
していいか聞いてみよぅ。しかしすべての端末に導入することを考えると…
まあ、入れておけば次回から管理が楽になるから、これだけなんとか
頑張っちゃおう。どうもありがとうございました。
70名無し~3.EXE:02/06/20 21:11
Set bobj = WScript.CreateObject("basp21")
Url = WScript.Arguments.Item(0)
rc = bobj.W3get("-d c:\down " & Url)

これを保存先のフォルダをダイアログで決められるようにするにはどうしたらいいのでしょうか。
勉強始めたばかりでよくわかりません。
71名無し~3.EXE:02/06/20 21:12
>>70
チンポJane使い
MSから良いオモチャが届いた。これはScript for .NET Frameworksに移行せよとのお告げ?(違)

>68
解決されたようですね、よかったです。
いろいろ試してわかったのですが、ウチの環境にはschmmgmt.dllがそもそもないので出来ないようです。
ドメインを作ることからしてもおそらくServer以上?と思うのですが良くわかりません。
設定の具体的なやり方はここ
ttp://homepage2.nifty.com/winfaq/w2k/ad.html#1135
きっかけは失念。ここなんか詳しいんだけど。。
ttp://support.microsoft.com/default.aspx?scid=%2Fisapi%2Fgomscom%2Easp%3Ftarget%3D%2Fjapan%2Fsupport%2Fkb%2Farticles%2Fjp234%2F0%2F01%2Easp&LN=JA

>70
こんな感じかな?(Me以上)
If WScript.Arguments.Count <> 1 Then WScript.Quit(1)
Set oFolder=WScript.CreateObject("Shell.Application").BrowseForFolder(0,"フォルダを選んでください",&H13)
If oFolder Is Nothing Then WScript.Quit(2)
sFolder=oFolder.Self.Path
Set bobj = WScript.CreateObject("basp21")
Url = WScript.Arguments.Item(0)
rc = bobj.W3get("-d " & sFolder & " " & Url)
Set bobj = Nothing

Janeというアプリの振る舞いを補正するものなの?
引数にURLを取ることってまずないから珍しいなと思う。
73名無し~3.EXE:02/06/21 02:29
>>72
すみません、ダイアログは出るのですが保存が出来ないです…。
74名無し~3.EXE:02/06/21 02:53
エディタに書いてある文の一部を選択した後、それを新しくエディタに貼り付けて任意のフォルダに保存するという一連の動作をWSHでできますか?
もしできるなら、やり方を教えて頂けるとありがたいです
7552:02/06/21 04:20
>67
 できますた!!上司にWMICOREを落としてもらって、早速自分が人柱に。
結果、>57 氏のスクリプトなど、動くようになりました。
 後は、どうやってみんなの端末に導入するか、だけです。本当に
ありがとうございました。
76名無し~3.EXE:02/06/21 15:57
>>72
そうです。2chブラウザのJaneというソフトの外部コマンド用です。
98なのでそのままは使えませんが、ありがとうございました。
>74
それは出来ないというのが、普通の回答かなぁ。
エディタというのが、OLEオートメーション対応のものって一般的に言ってないし。
もしWSHでやりたいんであれば、IEをUIにしてテキストを選択させる?
取得したテキストでもってファイル化しエディタ起動してというのが簡単に思いつくけど
それでは前提条件が違うよね。

>75
それは良かったです。
ところでそんな環境がたくさんあるんですか。
こちとら、想像外です。
まぁWMIを入れておけば、使い道もありますし、(リモートでシャットダウンするとか)
最初の苦労と思ってがんばって下さい。

>76
解決…,-文面を見ると-されたようですね。
せっかくなのでソースキボン。
7852:02/06/21 23:54
>>77
 会社のPCが、全部で200台強あるそうなのです。どうやらログオンスクリプトと
リソースキットのShutdown.exeを利用すると、インストールだけしてとっとと
シャットダウンするアカウントが作れるそうなので、ちょっと調べてみようかと。
 これができれば一般ユーザの方にも手伝っていただけるので作業が非常に
楽になるだろうと考えています。
79名無し~3.EXE:02/06/22 17:32
>>74
TeraPadでDoMacroを使えばできるんじゃないかな。
80名無し~3.EXE:02/06/23 01:32
>74
クリップボード拡張ソフトスレ見れ
81にゃんこ:02/06/24 12:37
WSHでダイアログのタイトルを取得する方法はありますか?
82名無し~3.EXE:02/06/24 18:57
MSの公式ドキュメントってDLできないの?
前はDLできたのに。
83韮←ゲジゲジみたい:02/06/24 23:51
>>81
何のダイアログですかいねぇ?
84にゃんこ:02/06/25 10:00
>>83
よろしくですにゃ。
アプリケーションをインストールする際に表示される画面のタイトルです。
>78
52さんは仕事の内容がそれ(だよね?)なので、全然関係ないんだけど、
会社がらみだとどうしても
http://pc.2ch.net/test/read.cgi/win/1022692960/
のような使われようが(自分はそう)頭に残ってしまう。

>79
TeraPad使ってなかったんで、ノーチェックでした。
これはすごい。まるでTeraPadがOLEオートメーション対応アプリになったように振舞う。
コレを作った人はWSHのニッチを良くわかっていると思う。あとは早いところ正式版願う。
DoMacro
ttp://csx.jp/~tsuchiya/

補完クンってリンク張っていなかった。(滝汗
TeraPad及びVxEditorでIntelisence(VBのエディタの振舞い)が作動する。
タイプ数の削減、メソッド、プロパティの引数の確認用途に便利。
WSH補完クン
ttp://www.geocities.co.jp/SiliconValley-Oakland/4672/

>81
取得してなんに使うの?Pidじゃダメ?
DynaCallで取得しようかと思ったけど全然出来ないのでちょっと降参気味。

>82
ttp://www.microsoft.com/downloads/release.asp?releaseid=33248&area=top&ordinal=9
のことかな?
リンク変わってるね。>2の方からでは入れなかった。
86韮←ゲジゲジみたい:02/06/26 22:37
>>84
理解できない・・・。もうちょっと詳しく・・・、スマソ
87名無し~3.EXE:02/06/27 00:12
>>84
まず、聞く前に質問のしかたをどっかで調べてくることを勧める。
88名無し~3.EXE:02/06/27 00:13
>72
Script for .NET Frameworksってなになに?
89名無し~3.EXE:02/06/27 03:33
>>85
11さん久しぶりですね。
90名無し~3.EXE:02/06/27 03:54
>>85
2chブラウザ変えた?
91にゃんこ:02/06/27 10:10
>>85
どうもありがとうございますにゃ。
アプリケーションの自動インストールに使いますにゃ。
ウィンドウのタイトル名を取得してそのウィンドウをアクティブにし、
ボタンを押していきます。
>>87
ごめんにゃ。
ネコなので知能が足りないのかにゃ・・・
92前スレ11:02/06/27 15:41
>>89
名無しさん募集中。。 さんと、私前スレ11は別人ですよ。
このスレの11さんのことをおっしゃっているならすいません。

>>91
AppActivateメソッドが、指定のウィンドウタイトルが存在しない場合Falseを返す
ことを利用すれば、いける気がします。

なお、DynaCallを使って、ウィンドウ名を列挙するサンプルが、うちの掲示板にあるので、
よかったら参考にしてください。
http://www.roy.hi-ho.ne.jp/mutaguchi/bbs/list39.shtml
93名無し~3.EXE:02/06/27 15:50
>>91
キモイ
94にゃんこ:02/06/27 16:34
>>93
ネコにゃので。
95名無し~3.EXE:02/06/27 17:10
>>94
キモ
>92
違うので、と言おうと思ったら先に書かれてたですね。
それと…、11さん。
ゴメン、謝るから前スレっての消してクレー。
97にゃんこ:02/06/27 18:39
>>95
ネコにゃので。
98名無し~3.EXE:02/06/27 19:05
>>97
キモイので
99名無し~3.EXE:02/06/27 19:08
>>98
ネコにゃので。
100名無し~3.EXE:02/06/27 19:27
>>99
キモイので
101名無し~3.EXE:02/06/27 19:28
>>102
キモイので
102にゃんこ:02/06/27 20:14
たくさん釣れてるにゃ。
今日はごちそうにゃ。
103名無し~3.EXE:02/06/27 20:14
(゚Д゚;≡;゚д゚)
104名無し~3.EXE:02/06/27 20:16
盛り上がってまいりますた!
105名無し~3.EXE:02/06/27 20:16
しまたぁー!釣り職人だったか。吊られたよ。もうだめポ。
106名無し~3.EXE:02/06/27 20:20
釣れた【つれた】[名]
自分の当てずっぽうレスを大勢に突っ込まれ&馬鹿にされた時に厨房が悔し紛れに言う単なる逃げ口上の最後っ屁。その後放置される。
107にゃんこ:02/06/27 20:25
>>106
当てずっぽうかにゃ?
今回の場合、文体じゃにゃいかにゃ?
でも、大漁だったからいいにゃ。
108名無し~3.EXE:02/06/27 21:13
>>107
つーかキモイので
109名無し~3.EXE:02/06/27 21:14
>>107
お前好きだいいやつうんこ。
110名無し~3.EXE:02/06/27 21:42
Windowsの凋落と共に消え去る言語を覚える漢達に敬礼ッ!!
111名無し~3.EXE:02/06/27 21:56
今後は、全員、語尾にニャなどを付けるニャ。
義務にゃ。

指定したURLのファイルを取ってきて
ローカルHDDにコピーするという
単純なスクリプトを書こうとして
挫折したにゃ。
どうしたらいいにょ?

とかいう感じでよろしくにぇ。
112名無し~3.EXE:02/06/27 22:22
>>111
キモイ
113名無し~3.EXE:02/06/28 00:08
>111
キモイにゃ。Σ(゚Д゚)
114名無し~3.EXE:02/06/28 12:29
今後は、全員、語尾にニャなどを付けるりゅん。
義務りゅん。

指定したURLのファイルを取ってきて
ローカルHDDにコピーするという
単純なスクリプトを書こうとして
挫折したりゅん。
どうしたらいいりゅん?

とかいう感じでよろしくりゅん。

時代は仙台りゅん。
115とある人:02/06/28 12:36
>>114
む…(意味深
116名無し~3.EXE:02/06/28 16:31
>>114
キモイ
117しぞー:02/06/28 18:15
今後は、全員、語尾にぴょんなどを付けるぴょん。
義務ぴょん。

入力した単語で複数の検索エンジンで検索して、
結果を検索エンジンごとのフレームに分けて表示するという
単純なスクリプトを書こうとして
挫折したぴょん。
どうしたらいいぴょん?

とかいう感じでよろしくぴょん。
118名無し~3.EXE:02/06/28 18:25
>>117
キモイ
119<丶`∀´> :02/06/28 18:49
今後は、全員、語尾にニダなどを付けるニダ。
義務ニダ。

入力した単語で複数の検索エンジンで検索して、
結果を検索エンジンごとのフレームに分けて表示するという
単純なスクリプトを書こうとして
挫折したニダ。
どうしたらいいニダ?

とかいう感じでよろしくニダ。
120名無し~3.EXE:02/06/28 18:50
>>119
キムチ
121名無し~3.EXE:02/06/28 18:54
>>119-120
warota
122名無し~3.EXE:02/06/28 22:41
IEのコンテキストメニューで「Bookshelfで単語を検索」って可能ですか?
当方2.0しか持ってないんです。
秀丸のマクロでそのようなものがあり非常に重宝してるんですが。
123前スレ680:02/06/29 00:20
>>85
ご紹介ありがd

MKEditorでも使えるようにしてみました。
>84
インストーラのバイナリ解析しないと無理

>88
・期待通りのこと
WSHと.NET Frameworkの統合版
言語はC#, JScript.NET, J#, VB.NET等。
変数が厳密に型付けされている。
・期待はずれのこと
まだ英語ベータ版のみで現在配布していない。
開発中のこと。

>90
なんで?

>91
あぁ、やっぱり。AppActivateはProcessIDも引数に取れます。
ProcessIDならWMIで取得できるし、似たタイトルでSendkeys誤爆しないので確実といった意味ですよ。
WMIを使わないならば、11さんの言ったとおり返り値判別ですけど。

>110
言語なんて頭が固くなければ何種類かは入るし。

>113
(・∀・)イイ!

>123
すいませんでした。その目的でTeraPadのインストールまではしたんだけどチェック漏れました。
これ以上は言い訳だから書かないけど。
それとウチDanaなんだけど、…ダメ?
いつからここは小学校になったのだ?

>111>114
windowをIEのインスタンスとおくと、
window.document.body.parentElement.outerHTML
をテキストストリームに書く。

>117>119
どこで挫折したのかを書かないと答えられない。
おそらく検索結果はGETで出力するだろうから、locationURLを取得して、
WSHで作ったframeに押し込んでやればいいのではないかな。

>122
"BookShelfがインスコされたパス\bs98jl.exe" -h -d "検索対象文字"
をシェル実行。

あと、わからないことがあったら放課後、職員室にくるように。
126名無し~3.EXE:02/06/29 11:00
おまえら全員職員室に正座だ!
127前スレ680:02/06/30 00:14
>>124
Dana落としてみました。普通のメッセージではダメみたいです。
ソースは当然公開されてないし、技術情報みたいのもないようなので、
どうやら無理っぽいです。スイマセン・・・。
答える都合上まとめて括ってしまったが、それは正座ものの質問ではないです。
気を悪くされたらスマソ。

>127
あ、試みて頂いてくれてありがとうございます。
その通りですね。状況が状況なので強いる気は全くないです。

#2chブラウザによっては名前数字、E-mail省略しないにするとこの場の該当ログを拾ってくれることに気がついて、
余計なことを言い放ってしまったと鬱。
↑上のほうは122さんへのレスね。
130にゃんこ:02/07/01 13:04
>>124
VC++やエスプレッソを使えばできますにゃ。
131名無し~3.EXE:02/07/01 16:25
>>130
いやキモイから
132にゃんこ:02/07/01 16:51
>>131
釣られ好き?
133名無し~3.EXE:02/07/01 16:52
>>132
ネコにゃので。
134名無し~3.EXE:02/07/01 17:05
>>132
キモイから
135名無し~3.EXE:02/07/01 17:07
>>136
ネコにゃので。
136名無し~3.EXE:02/07/01 17:09
>>135
だからキモイっつってんだろおおおおおおおおうおおおあああああ!!!!!!!
137名無し~3.EXE:02/07/01 17:13
>136
ごめんにゃさい
138名無し~3.EXE:02/07/01 17:13
>>136
ネコにゃので。
139にゃんこ:02/07/01 17:24
今年35ですにゃ
140にゃんこ:02/07/01 17:47
>>139
・・・
141名無し~3.EXE:02/07/01 18:17
>>139
さらにキモイので
142にゃんこ:02/07/01 20:03
>>141
ほんとのにゃんこじゃないから・・・
143名無し~3.EXE:02/07/01 20:17
144名無し~3.EXE:02/07/01 20:41
>>142
キモイので
145にゃんこ:02/07/01 20:48
>>144
出た、馬鹿が・・・
146にゃんこ:02/07/01 20:57

つーか、なんなの?おまえら
147 :02/07/01 21:00
にゃんこ大好きだよ
148名無し~3.EXE:02/07/01 21:16
>>146
キモイから
149名無し~3.EXE:02/07/01 21:19
wmiの使い方が詳しく載ってるところ教えて。
どういうメソッドとかあるのかさっぱり分からん。
150名無し~3.EXE:02/07/01 21:27
き・も・い
151にゃんこ:02/07/01 23:12
きもくないにゃん
152名無し~3.EXE:02/07/01 23:37
>>にゃんこ

荒らすのは止めてくれ。あなたが普通の言葉で書き込めば済むこと。
153にゃんこ氏ね:02/07/01 23:48
>>151おまえでていけにゃ
154名無し~3.EXE:02/07/01 23:52
>>153
キモイから
155名無し~3.EXE:02/07/01 23:57
>>154
アフォは放置しる!
>130
エスプレッソ? なに、それ?
つーか本当にインストーラでよく出てくる青地に白抜きの文字タイトルが取得したかったの?
ネタかと思ったよ。
その語尾で言われると加減がようつかめん。

>149
・使い方
ttp://homepage2.nifty.com/tcubic/wmifun/
ttp://www.microsoft.com/japan/msdn/thisWeek/wmi/koj990811.asp
ら辺は前スレ既出か。
ConnectServerメソッドの引数なら私も知りたい。
・クラス、メソッド等
WMIのクラス自体が拡張可能だからなぁ。
標準のをしりたいのならSDKが一番だろうと思う。(英語だけど)
VS.NETがあるなら
http://www.microsoft.com/downloads/release.asp?ReleaseID=38501&area=search&ordinal=1
で型付けされたクラスが取得できるんだけど、もはやスレ違い。
157名無し~3.EXE:02/07/02 00:44
>>156
おお、こりゃなかなかいい感じ。
どもども。
158にゃんこ:02/07/02 01:10
>>152
アラーシが途中から戦法変えてきてんの気付けよ。
煽られんなっつーの。
本物は3回しか書き込んでないっつーの。
159名無し~3.EXE:02/07/02 01:15
>>158
おいおい、責任転嫁かよ。いいわけレスでいちいちageないでくれ。
160名無し~3.EXE:02/07/02 01:18
反応してる奴が一番ウサイにゅ
161にゃんこ:02/07/02 01:29
というか本物が一番うざい
16211:02/07/02 01:33
メール欄参照。

>>156
ConnectServerメソッドの引数ですが、Rubyを256倍使うための本p.206-207に詳しい
解説があります。
もちろんSDKにはリファレンスがあると思いますけど、日本語なのがありがたいですね。

SDKに含まれるツール群も、オブジェクトモデル理解に役立つと思います。
今インストールしてないので詳しくは忘れましたけど、なんとかオブジェクトブラウザとかいう
名前のツールですね。現在のインスタンスを読み込んでプロパティの値を調べたりできます。

SDK今どこで落とせるんだろう…。
MSDN Web版は、しょっちゅうURLが変わって困るなぁ。
163にゃんこ:02/07/02 10:03
>>159
この場合、「責任転嫁」という言葉は適切じゃないだろ・・・
よーく文章を読んでみろ。
これじゃ知っている言葉を並べただけのヴァカだぞ。

>>161
負け犬が吠えてますな・・・
煽れないのがそんなに悔しいか?
(・∀・)カエレ!!
164にゃんこ ◆NYA9/moE :02/07/02 10:19
偽物が場を盛り上げてる間に
トリップつけてみましたにゃん
165にゃんこ:02/07/02 17:37
>>164
きもいにゃん
166名無し~3.EXE:02/07/03 04:39
にゃんで1000を目指しますか?
>162
すいませんでした。

あ、引数の件。解説ありましたね。邪道本再度読み返しました。
各ユーザの偽装レベルでも詰まっていたので、Securityプロパティもということになります。
それにしてもよくGetObjectでの書き方ってわかるよなぁ。

ビューワとしてみるのはCIM Studioですね。

現在SDKはここ
ttp://www.microsoft.com/msdownload/platformsdk/sdkupdate/
ただしCIM Studioは入っていない。

ttp://msdn.microsoft.com/downloads/default.asp?URL=/code/sample.asp?URL=/MSDN-FILES/027/001/566/msdncompositedoc.xml
SDKとしてみると古いが、CIM Studioを入手したいならここ。
168名無し~3.EXE:02/07/14 21:35
  ,,,,.,.,,,,
 ミ`Д´ミ <ほしゅ
  """"
169名無し~3.EXE:02/07/18 01:50
tes
170前スレ680:02/07/18 06:45
WSH補完クン ver0.32
いろいろバグがあったので修正しました。

http://www.geocities.co.jp/SiliconValley-Oakland/4672/
171名無し~3.EXE:02/07/19 06:17
ぐは!便利よ、これ。ついさっきwsh始めました。で、私にどうしろと?
172名無し~3.EXE:02/07/19 11:59
sendkeys を使って 無変換 キーを送りたいのだけど、
無変換 ってどう表せば良いの?
173名無し~3.EXE:02/07/19 17:57
29じゃないの?
174名無し~3.EXE:02/07/20 05:27
175172:02/07/20 07:54
>173 >174 サンクス!
dat落ちしたかと思った…。

>171
まずは、自動実行に関する汎用のアイデアがあったらカキコしてください。
って言うかお願い。

>172
2バイト文字、NFER、XFERも同様に送れない。
なので、>174さんのURLに書いてあるプログラムかなんかで送るのが常道か。
と、思ったけど送れるの?
WshShell.SendKeys 29
WshShell.SendKeys "{29}"
WshShell.SendKeys "29"
全部ダメだったけど???
177名無し~3.EXE:02/07/20 14:22
前スレHTML化キタ━(゚∀゚)━!!!!
178名無し~3.EXE:02/07/21 05:51
>>176
WshShell.SendKeys "{NONCONVERT}"
でもダメですなあ。

WSHOM.OCXを覗いた限りでは定義されてるっぽいんだが、
ヘルプに載ってないってことは使えないってことか・・・。(-"-
179前スレ680:02/07/22 00:51
180名無し~3.EXE:02/07/22 13:10
>178
教えて、キー定義はどこに書いてあるの?
オブジェクトブラウザでは見えなかったYO。
181178:02/07/22 13:56
>>180
バイナリエディタ

私のWSHOM.OCX(5.6.0.6626)では、0xCBA0から。
ただし、>>178でも言ってるとおり「それっぽい」ってだけなんで、
この部分がSendKeysの定義であるかは保証しない。
182名無し~3.EXE:02/07/23 21:59
age
183名無し~3.EXE:02/07/23 22:15
分かった。ありがとう。ウチのでも同じところにあった。
どっから参照しているのかとか
区切り子であるはずのnull文字の個数の規則性がつかめないので
少し残念だがここまでであきらめるしかない。
184名無し~3.EXE:02/07/24 00:29
>>183
普通に4バイトごとになってると思うけど・・・。>nullの個数
185名無し~3.EXE:02/07/24 11:00

WSH(VBScript) で外部サーバのデータベース(Oracle)に
接続したいのですが、どうすればいいのでしょうか?

ほかのサイト見ても、
サーバの指定方法まではなかったので。

おねがいします
186名無し~3.EXE:02/07/24 11:22
>>185
ADO使ってODBCデータソースを指定すればそのまま行けるんでわ?
187名無し~3.EXE:02/07/24 15:41
>186
具体的なやり方を教えていただけますか?
厨でスマソ
>187
こういうこと。
VBSに限らないで、VBでも一緒だからそれを含めて調べたほうがいいな。
環境がなく未確認だがADO2.1以上でいけるはず。

Const adOpenKeyset = 1
Const adLockOptimistic = 3
Set cnn = Wscript.CreateObject("ADODB.Connection")
Set rec = WScript.CreateObject("ADODB.Recordset")

' Oracleとの接続を確立する
cnn.Open "Provider=MSDAORA;" & _
"Data Source=NT;", "scott", "tiger"

' SQLステートメントを指定してレコードセットを作成する
rec.Open "select * from EMP", cnn, _
adOpenKeyset, adLockOptimistic
↑元ソース(VB)を参考に示しておく。
ttp://homepage2.nifty.com/inform/vbdb/ado_oracle.htm

ほとんど変わらない。
違いはWSHの制限として明文化されたことだけです。

>183
多分180と同人物だよね。
趣味ならいいんだけど、コレまでの経緯で定義文字は参照しないこともあるっていう
結論が出ているのだからそれ以上(180-183の間)は時間の無駄としか思えない。

そこまでするのならWScript.exeを逆汗した方がイイのでは?
…とか提案しておいて言えた義理じゃないが、自分だったらやりたくねぇ(w
190185:02/07/24 22:59
>>188 - 189

なるほど、VB と同じやりかたでいいんですか。
どうもありがとうございました m(__)m
191名無し~3.EXE:02/07/25 02:16
以下のスクリプトがうまく動かないのですが、原因わかる方教えて下さい。
ウチの環境では「8」、「9」が返されるべきところで「0」が返って来るんだが...。
Win98SE/WSH5.6

var re = /hoge(\d+)\.txt/i;
var i;

for (i = 1; i < 10; i++)
{
   WScript.Echo(getNum('hoge0' + i + '.txt'));
}

function getNum(Path)
{
   if (Path.match(re) != null)
      return parseInt(RegExp.$1);
   return null;
}
192191:02/07/25 02:49
すまん、解決した。よってレス無用。
193名無し~3.EXE:02/07/25 03:50
>>191
レス
>191-192
レス無用と書かれてもなぁ。
正規表現の一般的な罠なんだから、解決方法書こうよ。お願い。

冒頭コレにすれば取得したい範囲では問題はなくなる。
var re = /hoge0*(\d+).txt/i;
いまさら8進法も使うこともなさそうなんだが、メタキャラクタマッチよりも後回しで優先順だけ高い。
195名無し~3.EXE:02/07/25 18:51
191は聞くだけ聞いて自分は貢献しようとしない厨ですから
196191:02/07/26 00:26
>>194
>>195
おお、スマンスマン。俺の解決法は、

parseInt(RegExp.$1)
     ↓
parseInt(RegExp.$1, 10)
197名無し~3.EXE:02/07/30 01:32
すいません、さっきはじめたばかりの初心者なんですが、
「C:\WINDOWS\Temp\*.tmp」を消そうとして以下をつくったのですが、
そんなファイルは存在しませんといわれてしまいました。
こういうときどうするのがスマートなんでしょうか?

Set objFS = CreateObject("Scripting.FileSystemObject")
Set objFile = objFS.GetFile("C:\WINDOWS\Temp\*.tmp")
objFile.Delete True
198名無し~3.EXE:02/07/30 02:41
>>197
GetFileメソッドの引数にはワイルドカード使えないんじゃ・・・。

Const TemporaryFolder = 2
Set Fs = CreateObject("Scripting.FileSystemObject")
Fs.DeleteFile Fs.GetSpecialFolder(TemporaryFolder).Path & "\*.tmp", True
199197:02/08/02 22:40
>>198

ありがとうございます。
ただ、いただいたコードを実行したところ
行:3
文字:1
エラー:書き込みできません。
コード:800A0046

と怒られてしまいました。。。

なお、WinXP-Proで、いつもAdminitaratorで作業しています。
200名無し~3.EXE:02/08/02 23:44
>>199
多分、*.tmpファイルの中にどっかのプロセスが現在使用してる
ファイルが含まれてるんだろう。
例えば、HTMLHelpを開いてたりするとそうなる。

エラーは一応、On Error Resume Nextを入れれば回避できる。

ただこれでは、エラーが出た時点で、メッセージを出さずに削除処理を
中止して次へ進むだけなので、使用中のファイルを除いて削除
したいのなら、TEMPフォルダのFilesコレクションを、For Eachで回して、
一つづつ削除するのがいいのでは。
201名無し~3.EXE:02/08/09 20:43
このスレ イイ
202名無し~3.EXE:02/08/13 19:11
人居ます?質問したいんだけど・・・。
あまりいません。
204名無し~3.EXE:02/08/13 22:20
>>202
一応みてる。
質問来たら、答える気になればきっと答える。
205名無し~3.EXE:02/08/14 01:47 ID:Yxxqk002
点呼3

全く居ないわけじゃない様子。
20611:02/08/14 03:38 ID:AxCXFV0k
点呼4
207202:02/08/14 11:18 ID:t/R3SZGG
では よろしくお願いします。

'---ScriptRun.vbs------------------------------

Set TP = CreateObject("DoMacro.TeraPad")

FilePath = TP.FilePath
Dim WSHShell
Set WSHShell = WScript.CreateObject("WScript.Shell")
WSHShell.Run "FilePath"

Set TP = Nothing


DoMacroなんですが 編集中のVBS・JSを実行したいんですよ。
勘だけでやっていたので 詰まってしまいました。勉強してこよ・・・。
208名無し~3.EXE:02/08/14 13:17 ID:C+kV5/v3
>>207
TeraPadにマクロ機能もたせるDoMacro使ってないので
よくわかんないけど、一応。

FilePathはまずいんじゃないか?
FP = TP.FilePath
とでもしてみるとか。

あとはwsript.exeの引数に編集中のファイルのパスを指定する形で起動とか

実験するのメンドイので、適当な答えでスマソ

# 埋もれてるスレなので
# 質問の時くらいはageても良いかもとか思う。
# 強制IDになったから荒らしも少しは減るだろうし。
209名無し~3.EXE:02/08/14 13:23 ID:C+kV5/v3
連続スマソ

TeraPadで単に編集中のvbs/jsファイルを実行するだけなら、
WSHにこだわらなくても、
ツールに

実行ファイル wscript.exe
コマンドラインパラメータ "%f" %*
上書き保存する

を登録して使うとかでもいいんでない?
210202:02/08/14 19:09 ID:t/R3SZGG
レスありがとうございます。

>>208
FilePathをFPにしても 無理みたいですね・・・。
エラー内容は『行:8 文字:1 エラー:指定されたファイルが見つかりません。』
ってなってます。

>>209
あー そういう方法もあるんですか・・・
DoMacroでやる事にこだわりすぎていました(笑)

『%*』はなくてもいいみたいですね。
入れた方が良いのかな?
211名無し~3.EXE:02/08/15 06:36 ID:GgE5oKhT
>>207
8行目
WSHShell.Run "FilePath"

"で括る必要はないだろ。
212名無し~3.EXE:02/08/15 06:49 ID:GgE5oKhT
ついでに俺の使ってるスクリプト

var fso = new ActiveXObject('Scripting.FileSystemObject');
var shl = new ActiveXObject('WScript.Shell');
var tp = new ActiveXObject('DoMacro.TeraPad');
var arg = WScript.Arguments;
var tmp = fso.GetSpecialFolder(2).Path + '\\wshtmp.';
var ext, prm = '';
if (arg.length > 0) {
  ext = fso.GetExtensionName(arg(0)).toLowerCase();
  if (arg.length > 1) {
    prm = arg(1);
  }
  if (fso.FileExists(arg(0)) && (WScript.ScriptFullName != arg(0)) && ((ext == 'js') || (ext == 'vbs')))
  {
    try {
      fso.DeleteFile(tmp + '*');
    }
    catch(e) {
    }
    var tf = fso.CreateTextFile(tmp + ext);
    tf.Write(tp.GetAllText());
    tf.Close();
    if (prm != '/c') {
      shl.Run('wscript ' + tmp + ext);
    }
    else {
      shl.Run('COMMAND /K cscript ' + tmp + ext);
    }
  }
}
213202:02/08/15 12:41 ID:xTVZ2osb
>>211
ホントですね。
括りを外したら きちんと動作しました。
スペースが入りのフォルダ対策に括っておいたんですけど 入らないんですね。
# スペース入りのフォルダなんて作りませんが 一応。
214名無しさん募集中。。:02/08/15 14:31 ID:mc8sO6oz
>212
これいいなぁ。
GetAllTextメソッドをGetSelTextに変えたのも作っておいて選択範囲を実行なんてのも
問題点の絞込みに役立ちますね。

>213
そういう意味なら
"""" & FilePath & """"
じゃないの?
215211:02/08/15 23:43 ID:OHF1rEI2
>>214どもです。さすがに>>212のままではチトあれなんで、
ご意見を踏まえつつ、VBSで書き直し。

Dim Fso, Shl, Tp, Arg, Temp, tmp, ext
Set Fso = CreateObject("Scripting.FileSystemObject")
Set Shl = CreateObject("WScript.Shell")
Set Tp = CreateObject("DoMacro.TeraPad")
Set Arg = WScript.Arguments
tmp = Fso.GetSpecialFolder(2).Path & "\wshtmp."
If Arg.Count > 0 Then
   ext = LCase(Fso.GetExtensionName(Arg(0)))
   If Fso.FileExists(Arg(0)) And ((ext = "js") Or (ext = "vbs")) Then
      On Error Resume Next
      Fso.DeleteFile(tmp & "*")
      Set Temp = Fso.CreateTextFile(tmp & ext)
      If Tp.GetSelStart = Tp.GetSelEnd Then
         Temp.Write Tp.GetAllText
      Else
         Temp.Write Tp.GetSelText
      End If
      Temp.Close
      If ArgExists("/c") Then
         Shl.Run "COMMAND /K cscript " & tmp & ext
      Else
         Shl.Run "wscript " & tmp & ext
      End If
   End If
End If

Function ArgExists(Prm)
   Dim i
   ArgExists = False
   For i = 1 To Arg.Count - 1
      If Arg(i) = Prm Then
         ArgExists = True
         Exit For
      End If
   Next
End Function
216名無し~3.EXE:02/08/16 05:15 ID:Tm/LIADi
Hourglass・・・何でダメなんだろう

こんな初歩的すぎるような質問じゃ怒られるかな。
大した使い方はしてません。
いくつかのファイルをあっちのマシンからからこっちのマシンににコピーするだけのvbsなんですが、ものがデカいのでちょっと処理に時間がかかる。
いまはマシンが処理中だぞと、だから余計な手出しはするなと(みんな必ずマウ
スをカチカチやってる)、砂時計を出したいんです。

MousePointer = "Hourglass"
・・・処理・・・
MousePointer = "Default"
Msgbox "コピー完了"

web上のどこだったかお役立ちサイトみたいなところで拾ってきた書き方なんで
すが、これじゃダメみたいです。
217名無しさん募集中。。:02/08/17 12:31 ID:xO6Kd2EI
>216
その質問は初歩でなくとても高度なものです。
なのでコピー中の表示だったら、ShellオブジェクトのCopyHereメソッドを使ってダイアログを表示させ注意を促すのが得策かも。
VBと違って、Screenオブジェクトって無いんスよ。だから上記のプロパティも書き方もダメ、と。
とかいってAPI叩いてどうにかなんないかなとか試していたのは秘密。

Dim Shell, oFolder
Set Shell = WScript.CreateObject("Shell.Application")
Dim sFolder,sFile
sFolder="C:\WinNT\Temp"
sFile="D:\Documents and Settings\hogehoge\Local Settings\Temp\bigfile.tmp"
Set oFolder=Shell.NameSpace(sFolder)
oFolder.CopyHere sFile

な感じで。
218名無し~3.EXE:02/08/17 16:11 ID:aGwvq6Ld
( ゚Д゚)・・・MousePointerってなんだろう?

って思ってたのは秘密にしておいて良いでつか?

それはそうと、スクリプト処理中に手を出して欲しくない時は、
MsgBoxをループさせてます。
しかも画面一杯に近い大きさのMsgBox( ゚∀゚)y--┘~~~
219名無しさん募集中。。:02/08/18 00:53 ID:t9Hz/bk7
「このフォルダのカスタマイズ」 って一体どうなっちゃうんだろう。

>218
彼はVBでいうところの
Screen.MousePointer = Hourglass
がやりたかったのだと思われ。
できたら応用は利くと思うんだが、私の方はちょっとあきらめムード…。

最大化ダイアログそれいいなぁ、アイデア頂きます。
こんな感じで。

Dim window, txtDisp, i
Set window = WScript.CreateObject("InternetExplorer.Application", "IE_")
window.Navigate2 "about:blank"
With window.document.parentWindow
.document.write "<html><head><style>body{height:100%;font-family:'MS ゴシック';text-align:center;font-size:60;" & _
"background-color:menu;overflow:hidden;border-style:none;border-width:1pt;cursor:wait;}" & _
"</style><head><body><div id='txtDisp'></div></body></html>"
.moveTo 0,0
.resizeTo .screen.availWidth,.screen.availHeight
.document.title = "作業中"
Set txtDisp = .document.getElementById("txtDisp")
txtDisp.innerText = "作業中だ、邪魔するなYO"
End With
window.toolbar = False
window.statusbar = False
window.menubar = False
window.Visible = True
WScript.Sleep 5000 ' ここで時間のかかる作業
window.Quit
Set window = Nothing
220216:02/08/18 12:25 ID:WfqKi9Zo
>>217
レス感謝します
プログレスバー(っていうんでしたっけ)簡単に出せるんですね
ちょっとびっくり
↓みたいな感じでやってて、プログレスバーを出すのは無理だと
思ったので、砂時計を考えたんです。

Dim source, destination, fs
Set fs = CreateObject("scripting.FileSystemObject")
source = ("-----")
destination = ("-----")
fs.CopyFile source, destination, True

>>219
Screen.MousePointer = Hourglass
そう、たしか原文はそんな感じでした。
でも何だかエラーで怒られ、ためしにScreenを消してみたらエラーが出
なくなった。
これでOKかと思ったら、けっきょく何もしてくれなかった、と。

スミマセン
おバカな質問で流れを乱してしまいました
221名無し~3.EXE:02/08/19 01:00 ID:99GW24bS
プログレスバーを出せるというよりも、Shell.Applicationにお任せすると、
あのダイアログが勝手に出ると思ったほうがいいかも。

VBSで利用できるグラフィカルなインターフェイスはメッセージボックスと
インプットボックスだけ。
222age2ch.pl 0.03.24:02/08/19 21:44 ID:g41Au0n0
223名無し~3.EXE:02/08/19 23:31 ID:sTdCePWu
wshを使って右クリックを表示させることは可能ですか?
224名無し~3.EXE:02/08/26 21:54 ID:Auq8je+P
>>223
右クリックを表示???
質問ならばageれ。
225名無し~3.EXE:02/08/26 23:51 ID:kynNWzrc
WScript.Echo "右クリック"
226名無し~3.EXE:02/08/27 13:02 ID:hzdkbXyS
ブラウザ上で、表示されているHTMLの操作(例えば文字や背景の色を変える、
画像を消したり、拡大する)ということは可能でしょうか?
よろしくお願いします。
227名無し~3.EXE:02/08/27 13:42 ID:VZWRmaRN
>>226
可能。
228名無し~3.EXE:02/08/27 18:57 ID:NEnobPxp
Perlでも可能と聞いたんですが、詳しく解説してある本もしくは
サイトを知っていたら教えて下さい。
今の所これしか見つかってません。
http://www2f.biglobe.ne.jp/~takan/javac/js/wsh/tip_perl.htm
229名無し~3.EXE:02/08/27 19:25 ID://2QUyaL
ActivePerl 入れて、
eg\Windows Script Components\First.wsc
を右クリック->登録でよくない?
230名無しさん募集中。。:02/08/28 01:02 ID:svHcx3Ry
>223
微妙にウケタ。
まぁマジに返すと、自動実行と自動操縦はちっと違うんですがねー。

>226
IEならばDOMレベル、Shellレベル双方に可能。227さんの言った通り。
レベル的にはもう一つあるような感じだがなし崩しでやっているのでようわからんのですわ。
サンプル挙げとく。開いているGoogleを黒くします。
Set oShell = WScript.CreateObject("Shell.Application")
For Each window In oShell.Windows
Set oDocument=window.document
If TypeName(oDocument)="HTMLDocument" Then
If oDocument.title="Google" Then oDocument.body.style.backgroundColor = "black"
End If
Next

>228
自分はPerlScriptは逃げました。
だったらPerlを使った方がコミュニティも確立しているし、文法的には変わらないけど
荒野を好きこのんで迷走する感じで。
モジュールが使えたのはちと感動しましたが。
というわけで力になれなくてスマソ。
231名無し~3.EXE:02/08/31 23:04 ID:COirDX1R
アクティブなウィンドウ(タイトル?)を取得し、
それが xyzzy なら Ctrl+c Ctrl+f 、MDIBrowser ならAlt+↑といった具合に、
アプリケーションごとに異なるキーを Sendkeys で送るスクリプトを作り、
マウスのホイールボタンを押した時に呼び出して使おうかと思っているのですが、
Sendkeys 以外は、さっぱりわかりません!

アクティブなウィンドウの取得と、その比較って、
JScript では、どのようにすれば良いですか?
232名無し~3.EXE:02/09/01 00:29 ID:OTLFH7bW
>>231

> マウスのホイールボタンを押した時

ホイールボタンのクリックをどうやって判断してるんですか?
233名無し~3.EXE:02/09/01 01:45 ID:+LtYv4sw
マウスのユーティリティーにそういう機能があるんじゃないの?
単なる推測だけど。
234前スレ680:02/09/01 04:16 ID:OTLFH7bW
変な時間に目が覚めた。

>>231
JScriptでは、うまくいかんかったのでVBScriptで。
とりあえず、タイトル取得まで。あとはがんばれ。

Dim Dc1, Dc2, hWnd, cap, l

Set Dc1 = CreateObject("DynamicWrapper")
Set Dc2 = CreateObject("DynamicWrapper")
Dc1.Register "user32.dll", "GetForegroundWindow", "f=s", "r=h"
Dc2.Register "user32.dll", "GetWindowTextA", "i=hrl", "f=s", "r=l"

hWnd = Dc1.GetForegroundWindow
if hWnd <> 0 Then
   cap = String(256, 0)
   l = Dc2.GetWindowTextA(hWnd, cap, 255)
   if l > 0 Then MsgBox cap
End If
235前スレ680:02/09/01 04:22 ID:OTLFH7bW
>>233
なろほど、そうかも。それなら納得。
236231:02/09/01 07:53 ID:9F64xAy5
おはようございます。

>>232
ほぼ233さんのいうとおりで、
ClockLauncher というソフトを常駐させていて、
そのソフトにホイールクリックを監視して
任意のプログラムを実行する機能があるのです。

前スレ680さん、朝早くから有り難うございます。
ここまで教えていただければ後は自分で補えるかもと思い
早速実行してみたのですが、
ActiveX コンポーネントはオブジェクトを作成できません。:'DynamicWrapper'
というエラーが Set DC1 の行で発生してしまうのです。
環境に問題があるのでしょうか?

環境は、
Win2kSP3
wsh 5.6
IE 5.5SP2
です。
237名無し~3.EXE:02/09/01 11:25 ID:kDlAqiHy
>>236
DynaCall
238名無し~3.EXE:02/09/01 11:29 ID:kDlAqiHy
というか、Intelli Mouse互換マウス使ってるんなら、
マウスドライバでアプリごとに、各ボタンの挙動を指定できるから、
それでやれば良いんじゃないの?

とか、思った。
239231:02/09/01 20:06 ID:utY+/SER
>>237
>>3のリンクから dynawrapNt.zip をダウソしたのですが、
これってどうすれば利用できるようになるのでしょうか?
240231:02/09/01 20:37 ID:utY+/SER
MAKE.BATを実行すれば良かったんですね。スマソ

>>236のエラーは出なくなったのですが、
今度はDc2.Registerの行で、
プロシージャの呼び出し、または引数が不正ですというエラーが出てしまうのです。

どうすれば良いでしょうか?
241前スレ680:02/09/01 23:32 ID:pddX4pKI
>>240
もしかして、環境依存なのかも・・・。
ウチの環境では>>234をコピペするだけで動くけど。

Win98SE
WSH 5.6
IE 5.01sp2
242231:02/09/01 23:59 ID:utY+/SER
>>241
そうですか・・・。
私にはエラーが出る原因がわからないので、
タイトル取得と比較はCで作成してしまいました。
ただ、CでSendkeysを再現しようとすると非常に面倒なので、
そこだけJScriptを呼び出すという、非常に不恰好な仕上がりになりました。
ありがとうございました。
243前スレ680:02/09/02 23:42 ID:/lIkpGnE
>>242
終了した話題を蒸し返してすいませんが、エラーの原因と思われるもの
が分かりました。

DynaCallのNT版のソースや、>>3のページを見た限り、
NT版では引数の型指定で r (参照)が定義されてないので、
Dc2.Registerの行の"i=hrl"がエラーになるみたい。

NT版は参照渡しが出来ないのだろうか?
244 :02/09/05 19:15 ID:qqlWL1jz
19に書き込んでいる方と同じような質問なんですが、
submitボタンを自動でクリックするする方法がわかりません。
例えば、
>34の
google検索のボタンを自動で押すのではなく
I'm Feeling Luckey
のほうのボタンを押すためには
window.document.f.submit()
をどう書き換えれば良いのでしょうか。
245244:02/09/05 19:17 ID:qqlWL1jz
すみません。
>34 ×
>39 ○
246244:02/09/05 19:27 ID:qqlWL1jz
すみません。もうひとつ質問させてください。
例えば、
<select name="KAZU">
<option value="">▼数を選択してください</option>
<option>1</option><option>2</option><option>3</option>
</select>
のように、<option>にvalueが定義されていない場合、
自動的に選択するにはどうすれば良いのでしょうか。
247244:02/09/06 12:27 ID:I9u5zhZr
244の方は何とか自分でわかりました。
246誰か教えてください。
248名無し~3.EXE:02/09/06 13:26 ID:aRHJq4gH
window.document.all.KAZU.selectedIndex = 1
では?
249244:02/09/06 13:43 ID:I9u5zhZr
ありがとう。
selectedIndexの部分がわかりませんでした。
250名無し~3.EXE:02/09/06 23:31 ID:xN6oAzsE
あの、がいしゅつかもしれませんが。

JScriptxで、URLのラベル(?)を見て処理したいのですが、

<a href="http://www.where.to.go">Label</a>

みたいになっていて、この</a>の前のLabelという文字列はどうやったら取得できるでしょうか。
この文字列を比較して、条件を満たしたらその前のURLにジャンプしたいんです。

ぶしつけな質問ですみません。よろしくお願いします。
251名無し~3.EXE:02/09/06 23:47 ID:Kyi/Xc3Z
domれ。
252名無し~3.EXE:02/09/06 23:52 ID:zMlS15qY
文字列中で " を扱うにはどうしたらいいですか?
253名無し~3.EXE:02/09/07 00:11 ID:9NbA7xQL
>>252
\"
254名無しさん募集中。。:02/09/07 09:07 ID:+qAlWGGu
>243
NT系もAnsiでいいんでしたっけ?半可通発言ですまんです。
APIいじりは面白いんですが、時間を取られるのが、一番つらいです。
強制終了繰返して不安定→再起動とか。
なので、うまくいくラッパーの関数、クラスとか持ち寄ってWSH版Win32Api.txtみたいなのを
作っていけないかなぁ、と妄想を垂れ流してみる。

>250
ttp://www.openspc2.org/html_v3/
ttp://www.microsoft.com/japan/developer/library/jpisdk/dhtml/references/dhtmlrefs.htm
ここら辺をじっくり読む事をお勧めする。
簡単なサンプルを示す。今起動しているIEのアンカー全てを列記します。

Set oTS = WScript.CreateObject("Scripting.FileSystemObject").OpenTextFile("anchorlist.txt", 2, True)
Set oShell = WScript.CreateObject("Shell.Application")
For Each oWindow In oShell.Windows
Set document = oWindow.document
'MsgBox TypeName(document)
If TypeName(document)="HTMLDocument" Then
For Each oAnchor In document.all.tags("A")
oTS.Write oAnchor.href & "," & oAnchor.innerText & vbNewLine
Next
End If
Next
oTS.Close
255250:02/09/07 10:35 ID:VTrRLQIF
>>254

innerTextですね!できました。
リンクも大変参考になります。
どうもありがとうございました。
256名無し~3.EXE:02/09/07 11:02 ID:BXJhH6jp
タブブラウザのスクリプト対応からか、DHTML関係の質問ばっかりに見えるんだけど、
スレ違いではないのかな。
ヘタすると乗っ取られそうな気が。
257名無し~3.EXE:02/09/07 17:41 ID:TMpBirwd
>>252
VBScriptなら "" (ダブルクォーテーション2つ)
258名無し~3.EXE:02/09/07 23:52 ID:hXONB4T8
スレテンプレートの外部コンポーネント
BASP21 - メール、ファイルエンコード、文字コード変換、FTP/HTTPアップ、その他
ttp://www.hi-ho.ne.jp/babaq/basp21.html

を使ってメールの送信を行おうとしています。

その機能自体は、なんとか実装できそうなのですが
ひとつ疑問があります。


メールの送信時にパスワードって不要なんですか?
パスワードの設定をしないでメールが送れてる
ようなのですが・・・???



当方、excelの延長でちょっとVBAがわかる程度のスキルです。
ちょっと気になるので
わかるかたお答えお願いします。
259名無し~3.EXE:02/09/07 23:57 ID:pUxgxmR8
普通SMTPにはパスワードが設定されてないから大丈夫なんじゃないの?
260名無し~3.EXE:02/09/08 00:00 ID:29xq9xoD
>>259
解答ありがとうございます。


すると
SMTPってのは、どこのプロバイダのものを使ってもいいってことですか?
261名無し~3.EXE:02/09/08 00:04 ID:x9goP+Ed
>>258
ん?メールの送信にユーザーは必要無いと思うけど。
WSHとは関係無いが。

別に差出人のメールアドレスが存在しないアドレスでもメールは出せるよね。
サーバーのほうで制限しない限り。
262名無し~3.EXE:02/09/08 00:11 ID:29xq9xoD
>>261


ただ単に、メールを送るのにもなんらかの制限があるもんだと
思い込んでいました。

ようは出す分には、そこら辺の郵便ポストみたいに
気軽に誰でも出せるけど
郵便受けには鍵が掛かっているってイメージですね。

勉強になりました。ありがとうございました。


**
スレ汚し失礼しました
263名無し~3.EXE:02/09/08 00:15 ID:5MKk6T8p
>>郵便受けには鍵が掛かっているってイメージですね。
つか、そのまんま受け取り拒否と言う表現でいいと思う。
264前スレ680:02/09/08 02:01 ID:gjB9L3lO
>>254
むむぅ・・・。バイナリ見てみたら、r も定義されてるみたいだ。>NT版

よくわかりませんが、アーカイブに入ってるccupd.vbsがそのままで
動くんであれば、Ansiでいいんだと思いますが。
ついでに r が使えることもわかるし。

もしそうなら、>>243は全くの見当違いということになるな。(-_-
265名無し~3.EXE:02/09/08 05:23 ID:n4AN3fBn
D&Dしたファイルを開くスクリプトってどうやって書いたらよろしいんでしょうか?
たとえば、txtファイルをD&Dしたらメモ帳で開く、みたいなスクリプトがほしいんですけど
266名無しさん募集中。。:02/09/08 07:13 ID:VNMtUvq7
>256
そうですね。順全にDHTMLのみならむしろ板違いかな。
Web製作板の方が合っているような気がします。
http://pc3.2ch.net/test/read.cgi/hp/1030162756/
http://pc3.2ch.net/test/read.cgi/hp/1030814342/
とか誘導してみる。

>264
すみませんね。ちょっと言ってみたかっただけなんです。
その後、気になってDocument見ていたら(←その後かよ)
NT系ではAnsiとUnicode両方サポートとかいてありましたので。

メモリが"read"になることはできませんでした のエラーと
VBScriptでサポートされていないオートメーションです のエラーが出る。
どっちのほうが正解に近いんだかもわからない。

>265
WScript.CreateObject("WScript.Shell").Run "notepad " & WScript.Arguments(0)
デバッグしてないんで後よろしく〜。(ぉ
267265:02/09/08 17:42 ID:n4AN3fBn
>>266
おぉ!できました。
なるほどって感じです。なぞってもんはわかってみると大したことないもんですね
268名無し~3.EXE:02/09/08 19:02 ID:/69PnI1O
>>267
謎というか、リファレンスに書いてあるけど。
269前スレ680:02/09/10 01:08 ID:Ba65DTfO
>>266
いや、別に謝んなくてもいいと思いますが。
私は実際に試せないので、所詮、推測に過ぎませんから。

> メモリが"read"になることはできませんでした のエラーと
> VBScriptでサポートされていないオートメーションです のエラーが出る。

ってことはUserWrap.Registerの行は無事に通過してるってことでしょうか?
NT系でも r は使えるみたいですね。>>234はドコが駄目なのかな?

Dim Dc, hWnd, cap, L

Set Dc = CreateObject("DynamicWrapper")
Dc.Register "user32.dll", "GetForegroundWindow", "f=s", "r=h"
Dc.Register "user32.dll", "GetWindowTextA", "i=hrl", "f=s", "r=l"

hWnd = Dc1.GetForegroundWindow
If hWnd <> 0 Then
   cap = String(256, 0)
   L = Dc2.GetWindowTextA(hWnd, cap, 255)
   If L > 0 Then MsgBox cap
End If

とかかな?9x版と、NT版の仕様の違いがよくわからん。(-"-;
270前スレ680:02/09/10 01:11 ID:Ba65DTfO
間違えた・・・。スレ汚しスマソ。

Dim Dc, hWnd, cap, L

Set Dc = CreateObject("DynamicWrapper")
Dc.Register "user32.dll", "GetForegroundWindow", "f=s", "r=h"
Dc.Register "user32.dll", "GetWindowTextA", "i=hrl", "f=s", "r=l"

hWnd = Dc.GetForegroundWindow
If hWnd <> 0 Then
   cap = String(256, 0)
   L = Dc.GetWindowTextA(hWnd, cap, 255)
   If L > 0 Then MsgBox cap
End If
271名無しさん募集中。。:02/09/10 23:21 ID:qg0jQu7R
ほぼ雑文モード。

>269-270
いや、私はAPIを使って目的を果たしたことないから、
使える680さんを尊kの目で見ているんですよ。

270の方で出来ました。
ただし、取得できるアプリとそうでないものがあります。
デスクトップ(Program Manager)とIrvineは取得できる。
A BoneとDanaは取得できない。(スレタイとかファイル名とかでどうしても長くなる所為か)
タイトルの文字数が多いと取得できない感じです。

また、出るエラーは
"read"になることはできませんでした の方。

あ、言い遅れてましたが当方W2kSP3です。

自分としては急いてはいないつもりなんだけど、提案としては初めてだし、
やりたい事の初めの取っ掛かりが形にならないのでもどかしく思っている。
↑9x系とNT系の違いを吸収できるアクティブウィンドウのタイトル文字取得関数の事。のみならず、今後の方針も含めてね。

WSHで普通に取得できるリテラル群と親和性が高いものであるべきだとか。
かつ、標準では出来ないが、出来たら応用性が高くなるものだとか。
ブラックボックス化しても特に困らない事だとか…。
272前スレ680:02/09/11 06:57 ID:OKPUkhW1
おお、>>270でいけましたか。

9x版とNT版の違いは
9x ・・・ 各関数ごとにDynamicWrapperのインスタンスを作成しなければならない。
NT ・・・ 2つ以上のインスタンスを作成してはいけない。
ってとこなんでしょうかね?って、まったく逆じゃん・・・。Σ(´Д`ズガーン

取得できないのはこちらでも確認しました。
Win98SEでは、タイトルバーの文字列が39バイト以下でないと駄目でした。
(それ以上の時は空、もしくは文字化け。さらに84バイト以上は強制終了)
ってことで結局、

L = Dc.GetWindowTextA(hWnd, cap, 40)

が正解っぽいです。こうすれば、長いタイトルのときも始めの39バイトだけ取得できるので、
あとはスクリプト側でなんとかすると。でも、NT系では取得可能バイト数が違うかも。
273名無し~3.EXE:02/09/11 07:03 ID:mN/JRWjS
(´-`).。oO(JScriptからてっとりばやくInputBox使うにはどうするのが良いかな・・・)
274名無し~3.EXE:02/09/11 16:16 ID:wjRu52ce
var oIE = WScript.CreateObject("InternetExplorer.Application");
oIE.Navigate2("about:blank");
var s = oIE.document.parentWindow.prompt("何か");
じゃだめ?
275名無し~3.EXE:02/09/11 17:20 ID:mN/JRWjS
>>274
今はそんな感じでやるか、
.wsfでVBScriptとJScriptを混在させるかどっちかでやってます。
どっちにしろ、あまりスマートじゃないなぁと思ったので、
いいアイディア無いかなぁと。

InputBox表示する.vbsファイル作っておいて、
それを呼び出すとか言う方法もあるみたいですね。
http://www.borncity.com/WSHBazaar/WSHEnvironment.htm

ちなみに友人には
「JScriptにこだわらないで、InputBox必要ならVBScriptでやれば良いじゃん」
って言われて終わりでした。
ごもっとも。

なんで欲しいかって言ったら、
決め打ちで処理しちゃう適当極まりないJScriptファイル作ったら、
それが意外に使うので、
いちいちファイルの中身を書き換えないで、対話式に出来るようにしようと思ったら、
InputBox作れないので、VBScriptに書き換えるということが何度かあったのですよ。

InputBoxだせるActiveX Control導入は、
出先とかで使えないので、ちと辛いしなぁ・・・。

# JScript.NETコンパイラって.NET framewrok SDKに付いてるのか?
276名無し~3.EXE:02/09/14 00:10 ID:89qx8XwE
> # JScript.NETコンパイラって.NET framewrok SDKに付いてるのか?

付いてる
277sage:02/09/15 01:18 ID:eH1Nj97e

自薦許して、http://yuriken.hoops.ne.jp/ (jsです)
ここで話題になっている様な事(コンポーネントとか、APIとか)は、
ちょっと歯が立たないというか、紹介されている所を見ても
理解の前提が欠けているのだなと思い知らされるばかりで、、

278名無し~3.EXE:02/09/15 01:23 ID:eH1Nj97e
間違った、こっちに入れるのか、
279名無し~3.EXE:02/09/15 22:10 ID:1PQY6rwP
Cでアルゴリズムの講義を受けた程度なんだけど
VBSとJscript、はじめるならどっちがとっつきやすいかしら?
280名無し~3.EXE:02/09/15 22:22 ID:VuYDDQ+z
VBS
281名無し~3.EXE:02/09/15 23:23 ID:Ke7giJGJ
VBScriptよりはJScriptの方がCに似てはいる
282名無し~3.EXE:02/09/16 11:38 ID:A+ENFHFF
CからならJSだろ。
283名無し~3.EXE:02/09/16 12:37 ID:W8UkWrwl
>>279
End Ifが許容できるならVBS、if構文は{}で囲ませろというのならJS
284名無し~3.EXE:02/09/16 13:28 ID:eUUqbFAL
>>279
; 打つのが怠いならVBS
癖になってるならJS
285名無し~3.EXE:02/09/16 13:29 ID:eUUqbFAL
上げちまった
スマソ
286名無し~3.EXE:02/09/16 15:02 ID:tMOJQdxd
HTML内のスクリプトで自身のパスを取得するために、
GetAbsolutePathName("ABC.html")としたのですが、
どこに置いてもC:\Windows\デスクトップ\ABC.HTML
と帰ってきます。
VBSで同じ処理をすると正しいパスを返してくれるのですが...
ブラウザはIE6.0を使っています。
287名無しさん募集中。。:02/09/16 16:37 ID:zNu0ixwi
>286
Mid(self.location.pathname, 2)
288名無し~3.EXE:02/09/16 19:43 ID:kGUhlVmI
>287
解決しました!!
ありがとうございました m(_ _)m
289名無し~3.EXE:02/09/20 10:49 ID:cJhSPTWD
c:\folder\001.txt
c:\folder\002.zip
c:\folder\003.txt
c:\folder\004.zip
c:\folder\005.zip
c:\folder\006.log
c:\folder\007.log
c:\folder\008.txt



c:\folder\LOG\006.log
c:\folder\LOG\007.log
c:\folder\TXT\001.txt
c:\folder\TXT\003.txt
c:\folder\TXT\008.txt
c:\folder\ZIP\002.zip
c:\folder\ZIP\004.zip
c:\folder\ZIP\005.zip

な感じに拡張子毎分けるスクリプトおながいします。
290名無しさん募集中。。:02/09/20 14:48 ID:EajrKnHu
>289
これって…、種類でソートして振分けのほうが早くない?(語尾上げ)
用途が共感できるものなら作るけど。
それ次第ということで。
291スレ違いだが:02/09/21 01:54 ID:9oZFiyu+
>>289
Cygwinのshell scriptだとこんなん。
--
#!/bin/sh
for i in /c/folder/*; do
case $i in
*.log)
if [ ! -d LOG ]; then mkdir LOG; fi; mv $i LOG/ ;;
*.txt)
if [ ! -d TXT ]; then mkdir TXT; fi; mv $i TXT/ ;;
*.zip)
if [ ! -d ZIP ]; then mkdir ZIP; fi; mv $i ZIP/ ;;
*)
echo "unknown: $i" 1>&2 ;;
esac
done
--
別にWSHでもできなくはないだろうが、道具は用途によって使い分ける
方がいいかと。
292名無し~3.EXE:02/09/21 03:28 ID:ftZoRJ9l
>>291
Cygwinインスコできて、ある程度使える奴が、
こんなこと質問すると思うか?(w
293名無し~3.EXE:02/09/21 10:12 ID:/J9U9e7B
// js だけど
path = "c:\\"
folder = new Enumerator( (new ActiveXObject("Scripting.FileSystemObject")).GetFolder(path).Files )
files = new Array()
for ( ; ! folder.atEnd(); folder.moveNext() ) files.push( folder.item()+'' )// .Path .Name
// でこの、ファイルの配列 files を?

files.sort() // これは要らないけど気持ち。// files.push(folder.item()) でも、sort() はできるみたい

// 拡張子順に並べ替えるとしたら
function sortfunc(l,r){
    var lext = l.replace(/^.+\.(.+)/,'$1')
    var rext = r.replace(/^.+\.(.+)/,'$1')
    //↓マッチしない場合(拡張子なし)、(どちらもは除く)
    if(lext==l){ if(rext!=r)return -1; }
    else if(rext==r) return 1;
    //↓拡張子あり、(またはどちらもなし)
    lext = lext.toLowerCase(); rext = rext.toLowerCase()
    if(lext > rext)return 1; if(lext < rext)return -1; return 0;
    // 文字列をそのまま大小比較できるのだっけ?
}
files.sort(sortfunc)
WScript.Echo(files.join('\n'))
294名無し~3.EXE:02/09/21 10:15 ID:/J9U9e7B
// 拡張子別の配列の配列を作るとしたら。
function xxxxx(files){
    var A = new Array() // A[i].ext にその拡張子、A[i][j] に各ファイル(パス)
    A[-1] = new Array() // 拡張子ないのは、ここに。
    for(var i=0, f, ext, flag; i<files.length; i++){
        f = files[i]
        ext = f.replace(/^.+\.(.+)/,'$1').toLowerCase()
        if(ext == f.toLowerCase() || ext=='' ){ A[-1].push(f); continue }
        flag = 0
        for(var a=0; a<A.length; a++)
            if(A[a].ext == ext){ A[a].push(f); flag=1; break }
        if(flag)continue
        var Aa = new Array()
        Aa.ext = ext; Aa.push(f)
        A.push(Aa)
    }
    return A
}

A = xxxxx(files)
// テスト表示
s = ''
for(i=0; i<A.length; i++)
    s += A[i].ext +' '+ A[i].length +'\n\t'+ A[i].join('\n\t') +'\n'
s = A.length +' / '+ files.length+'\n'+ s
    + (A[-1].length ? '- '+A[-1].length+'\n\t'+A[-1].join('\n\t'): '')
WScript.Echo( s )
295名無し~3.EXE:02/09/21 10:20 ID:/J9U9e7B
以上は、>289 へ、でした。
ずさんかも。それより、的はずれかな。
296名無し~3.EXE:02/09/21 22:04 ID:89kPHuWY
c:\doc にあるファイルを
\\host\share にコピーしたいのですが、
その時パスワードを聞かれるのですが、
どうしたらスクリプト内でパスワード認証通過できますか?
297名無し~3.EXE:02/09/21 22:41 ID:KAYV37Sd
// JScript.
var net;
net = new ActiveXObject("WScript.Network");
net.MapNetworkDrive("I:", "\\\\computer2\\public","True","jdoe","jdoepassword");

' VBScript.
Dim net
Set net = CreateObject("WScript.Network")
net.MapNetworkDrive "I:", "\\computer2\public","True","jdoe","jdoepassword"
298名無し~3.EXE:02/09/21 22:43 ID:KAYV37Sd
>>289
NTのバッチファイルなら2行でできる。

for %%i in (*.*) do if not exist %%~xi md %%~xi
for %%i in (*.*) do move %%i %%~xi

フォルダに . がつくけどね。
299名無し~3.EXE:02/09/22 02:32 ID:YH+heuC8
>289
wsh勉強中の俺にぴったりの課題なのでやってみた。
引数なしで実行するとカレントディレクトリ内を整理、
引数にディレクトリ名を与えるとその中を整理する。
関数 furiwake が>298の2行に相当するが、やっぱり長くなるね。
vbsみたいに for (file in files) とか書けたらいいのにと思う。

var WshShell = new ActiveXObject("WScript.Shell");
var fso = new ActiveXObject("Scripting.FileSystemObject");
var objArgs = WScript.Arguments;

if (objArgs.length == 0) {
 furiwake(WshShell.CurrentDirectory);
} else {
 for (i = 0; i < objArgs.length; i++) {
  if (fso.FolderExists(objArgs(i))) {
   furiwake(objArgs(i));
  } else {
   WScript.Echo("フォルダが存在しません: " + objArgs(i));
  }
 }
}

function furiwake(currentDirectory) {
 var files = new Enumerator(fso.GetFolder(currentDirectory).Files);
 for (; !files.atEnd(); files.moveNext()) {
  var ext = fso.GetExtensionName(files.item()).toUpperCase();
  if (!fso.FolderExists(ext)) fso.CreateFolder(ext);
  fso.MoveFile(files.item(), ext + "\\");
 }
}
300299:02/09/22 04:08 ID:YH+heuC8
上のやつ間違ってました。関数 furiwake を以下のもので置き換えてください。
スレ汚し、すんまそん (;´Д⊂ 300ゲトー

function furiwake(path) {
 var files = new Enumerator(fso.GetFolder(path).Files);
 for (; !files.atEnd(); files.moveNext()) {
  var ext = fso.GetExtensionName(files.item()).toUpperCase();
  if (!fso.FolderExists(path + "\\" +ext)) fso.CreateFolder(path + "\\" +ext);
  fso.MoveFile(files.item(), path + "\\" +ext + "\\");
 }
}
301名無し~3.EXE:02/09/22 08:02 ID:3NnwFnhS
>>289
見たら、既に、299-300 が、、、まあ別の方法として。
// .js フォルダー落して。
var set_extA = new Array('log', 'txt', 'zip')

if( 1 != (new ActiveXObject("WScript.Shell")).Popup('実行?', 60, '実行確認', 1) )WScript.Quit()
if( ! WScript.Arguments.length)WScript.Quit()
var path= WScript.Arguments(i)
var FS = new ActiveXObject("Scripting.FileSystemObject")
if( FS.FolderExists(path) ){
    for(var i=0, dest; i<set_extA.length; i++) try{
        dest = path +'\\'+set_extA[i]
        if( ! FS.FolderExists(dest) )FS.CreateFolder(dest)
        FS.MoveFile( path +'\\*.'+set_extA[i], dest+'\\')
        }catch(e){}
}
302名無し~3.EXE:02/09/22 09:09 ID:g2JAZY5l
> 299-300 の WshShell.CurrentDirectory
これ知らなかった。引数ないときは、そこで、という事と思うが、
どこになるか、不定のようだけど。
fso.GetParentFolderName(WScript.ScriptFullName) の方がいいんではないかな、、、

字下げに使っている、&emsp; も知らなかった。
"&#8195;" -- em space 、これって何?、
303名無し~3.EXE:02/09/22 09:33 ID:Tguv9MAP
>>293 の 3 行目
folder = new Enumerator( (new ActiveXObject("Scripting.FileSystemObject")).GetFolder(path).Files )
何で、folder って名付けるかな、files だよな。(次の行で、配列 files がでるからまずいけど)
304名無し~3.EXE:02/09/22 11:07 ID:1XtK6lXj
fldとかflsとか書くなぁ
305名無し~3.EXE:02/09/23 04:08 ID:me6GPEiA
よく、「ログオフするとお気に入りが消える」みたいなFAQがありますが、
それはそれで不便ですね。
小生としては、たとえば
「*.mpgファイルはRecentにいれない」とか
「特定のディれくとrににあるファイルは、開いてもRecentに入らない」とかの
オプションがほしいわけですよ。

これはレジストリいじってもできそうもないから、やはり、Wshを使って、
Recentに*.lnkが作られるタイミングを見張っておいて、
指定されたものを削除するのがいいと思うのですね。
これって、Wshでできるでしょうか。
正規表現で該当の*.lnkファイルを消すのはできそうですが、「見張る」のは
どうやったらいいかわかりません。

よろしくお願いします。
306名無し~3.EXE:02/09/23 05:55 ID:qPQiKPnd
>>289
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1022248177&res=16&fi=no
無駄に長くしてみた。
全部を振り分けるタイプでなく、特定のものだけ分類収納する方。
フォルダの中のフォルダの中...のファイルも、引き上げるようにした。
収納先フォルダも指定できるようにした(しなくともいい)。
拡張子の他に、ファイル名をパターン(正規表現)で、分けれるようにも。

きちんと動作を確かめていないけれど。
307名無し~3.EXE:02/09/23 06:01 ID:qPQiKPnd
>>305
最近ここ、詳しい人いないんだな〜
308名無しさん募集中。。:02/09/23 07:31 ID:D+T7M3UF
>305
某掲示板で見つけた常駐監視htaです。適当に変更して使ってください。
下手すると、タスクマネージャから殺さないとダメですのでトリガは適当なものを考えて。

<html><head>
<script language="VBScript">
Dim oFS, timerId, sTraceDir
sTraceDir = "C:\Documents and Settings\Administrator\Recent"
window.resizeTo 0,0
timerId = 0
Set oFS = CreateObject("Scripting.FileSystemObject")
Sub tracer()
Dim bFlagFound
bFlagFound = False
For Each oFile In oFS.GetFolder(sTraceDir).Files
bFlagFound = bFlagFound Or LCase(oFS.GetExtensionName(oFile.Path)) = "lnk"
Next
If bFlagFound Then
lMes = MsgBox("継続しますか?",vbRetryCancel, "見つけました")
If lMes = vbCancel Then
window.close
End If
End If
End Sub
timerId = setInterval("tracer()", 5000)
</script>
<hta:application minimizeButton="no" maximizeButton ="no" applicationname="非表示ダイアログ"
singleinstance="yes" border="none" borderstyle="raised" showintaskbar="no" ersion="1.00" id="objHTA">
</head></html>
309名無し~3.EXE:02/09/23 23:18 ID:RcOilW+x
>>301
間違ってる!、
5行目、WScript.Arguments(i) 、i → 0
310名無し~3.EXE:02/09/24 02:41 ID:YrxKX/Vs
>>305
>308 は、例えば、こうなるかな。
<script language="JScript">
dir = "%どこか%\\Recent"
TgPathPtnA = new Array( /\.mpg$/i, /.+\\iyada\\[^\\]+$/i )// リンク先パスから一致探すパターン
LnkFilePtn = /\.lnk$|\.url$/i // .url はないか
function 何かする(ファイルパス){ /*お仕事*/ }

window.resizeTo(100,100)// テストなので、0,0 にしてない
FS = new ActiveXObject("Scripting.FileSystemObject")
WS = new ActiveXObject("WScript.Shell")
function tracer(){
  var flag, flsA =[], cnt =0
  var fls = new Enumerator( FS.GetFolder(dir).Files )
  for (; ! fls.atEnd(); fls.moveNext()) flsA.push(fls.item()+'')
  for(var i=0, tp; i<flsA.length; i++)
    if( LnkFilePtn.test(flsA[i]) && (tp= WS.CreateShortcut(flsA[i]).TargetPath) )
      for(var j=0; j<TgPathPtnA.length; j++)
        if( TgPathPtnA[j].test(tp) ){ 何かする( flsA[i] ); cnt++ }
  if(cnt && ! confirm( cnt+' 、続ける?' ) ) close() // これをどうするか?
}//
setInterval(tracer, 5000) // 5 秒間隔
</script>
311名無し~3.EXE:02/09/24 02:43 ID:YrxKX/Vs
>>305
全然知らないのだが、考えてみる。

Windows で何か起きたとして、それを知るには、
 Windows から、教えてもらう (HTML中のスクリプトのイベントのように) か、
 Windows が記録したものを、周期的に読みにいく(事後になってしまうが)
   (この場合は直接 Recentフォルダを調べる) か、、なのかな。

多分ふつうのスクリプトからは、Windows の出来事を、
  見張れない、教えてもらう通知してもらう、受取る方法がない?。
なら間隔おいて自分で調べるとすると、スクリプトが終わらぬよう居座り続けないとならない。
  ( Sleep を繰返す、ちょっと恐いというかずっと続けて大丈夫なものなのか?、
   余計な負荷になるのではとか、そのまま本当に眠ってしまうのではとか、、)

窓を持てるスクリプトならどうか?、
 でも、HTA にしても、Windows のイベントは、ないみたいだし。
 もう一つエクスプローラのフォルダ窓に付属の HTT なら、
   フォルダで起こった事を?、(表示に関わる事のみか?)。
 MS 以外のスクリプトは、Windowsで起きた事を中継してくれないか?
312名無し~3.EXE:02/09/24 02:44 ID:YrxKX/Vs
(上から続き)
他のプログラムから、教えてもらうとしたら?

1、何か起きたら、スクリプトを起動してもらう。
ソフトで、そういうのないか?
Windows のタスク(スケジューラ?)、
 これから呼び出すとか考えても、事でなく時が主だし、
  それも日単位だし、終了時やログアウト時はないし。
イベントの様なものでは、スタートアップしかないのか、、

2、スクリプトの中で、他のプログラムとやりとりする。
ActiveXうんたら?、COMコンポーネント?。
 >>2 ttp://www.roy.hi-ho.ne.jp/mutaguchi/wsh/
   "関連サイトへのリンク" に色々、紹介されている。
でも、そのプログラム側からこちらに、通知はできないのか?
 スクリプト側から、周期的にそのオブジェクトのプロパティを調べるしかないかな。
WSH なら、WScript.CreateObject() の引数に、
 イベント時に呼び出してもらう、こちらの関数(の接頭辞)を指定できるというのあり。
 でも、WScript だからスクリプトを終わらせない様にしないと。
  ( Sleep の他に、MsgBox を出しっぱなしにする方法もある?)

よく判らないよ。
313名無し~3.EXE:02/09/24 14:43 ID:fUwhMaE9
>>312
>1、何か起きたら、スクリプトを起動してもらう。
>ソフトで、そういうのないか?
タイマ式ではないの奴を適当に作ってみた。
http://lounge.dip.jp/~yoshinoya_off/up/img/watcher.zip
314313:02/09/24 15:26 ID:fUwhMaE9
補足。readmeに書き忘れた。

*.exeでなくて*.vbsを実行したいときは第二引数を
"C:\WINDOWS\system32\wscript.exe C:\test.vbs"
とか
"C:\WINDOWS\system32\wscript.exe \"C:\test test\test.vbs\""
てな感じにしてね。

かなり適当なのでうまく動かない状況が多いかも。
315名無し~3.EXE:02/09/24 17:50 ID:aXjP1IHG
>313
見つかんないよ。
それCOM化してくれたら神。
316名無し~3.EXE:02/09/24 18:08 ID:fUwhMaE9
>>315
ごめん。あぷろだに直りんするなゴルァ!て書いてあったのよ。

再Up。ttp://lounge.dip.jp/~yoshinoya_off/up/upb.cgi の 2994。
317名無し~3.EXE:02/09/25 01:12 ID:jUp2Exy7
>>312
Windows のタスク、間違ってた!、
日単位だけでなく、[詳細設定] で、「タスクを繰り返し実行」間隔 分/時
っていうのが、あった。
10分とか1時間に1回程度の実行でいいなら、これを使えばいいのか。
318名無し~3.EXE:02/09/25 02:27 ID:ig+RoT3O
>313
わっ、
でも使えない、残念。MFC70.DLL がない。
readme 補足してある。 js だとだめなのか、、、
望んだ元の 305 は、見に来たかな、、、
319名無し~3.EXE:02/09/25 02:38 ID:ig+RoT3O
MFC70.DLL あった
ttp://hp.vector.co.jp/authors/VA021021/ ar/mfc70dllset.zip
320名無し~3.EXE:02/09/25 03:11 ID:kRGEKaiv
>319
しまった、何を見てたんだろう、個人のページを貼ってしまった。
そこの人、ごめんなさい。
321名無し~3.EXE:02/09/25 04:03 ID:tAvPDPqP
>313
mfc70.dll と msvcr70.dll
.js でも全然問題ないよ。
第2引数、"wscript X:\〜\xxx.js" でも。

>319
もう一度、VA021021 の kobataku さん、ごめんなさい。
322名無し~3.EXE:02/09/25 10:13 ID:vw6HyGET
>321
リテール版なら再配布は自由なのでOKじゃないの
323名無し~3.EXE:02/09/25 17:46 ID:pPAjE1f0
>>322
個人のページにリンクしたことを気にしているのでは?


気にしなきゃいいのに。
324名無し~3.EXE:02/09/25 23:31 ID:JpCEQLc7
まあvector上だから
そんな気にすることたぁないさね
325名無し~3.EXE:02/09/26 03:13 ID:osmhTbQP
登録しておいたアプリケーションを強制終了させる
ことってWSHで可能でしょうか。
一々タスクマネージャー開いて、アプリ名探して、殺すのが面倒です。
cgywinのps.exeでPID見えるのですが、killコマンドが弾かれるので、
いちいちマウスで殺して、コマってます。
326名無し~3.EXE:02/09/26 03:18 ID:oph1h+pT
327名無しさん募集中。。:02/09/27 12:36 ID:wSRxrua8
>325
強制終了のサンプルを示します。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1022248177&res=15

AppActivateからタイトルが外れると、(他のウィンドウがActivateすると)そのPIDをもつアプリケーションをTerminateします。
WMI必要。
ところで、cgywinって使ったこと無いんだけど、それってバッチ化&標準出力ってできるの?
出来たら、WSHと連係するのもいいな。
328名無し~3.EXE:02/09/27 14:32 ID:LtWILKoX
set db = WScript.CreateObject("DAO.DBEngine")

と書くと、DAO.DBEngineという名前のオートメーションクラスが見つかりませんでした。
とさ。よくわかってないが、なぜ?
329328:02/09/27 16:40 ID:LtWILKoX
DAO.DBEngine.36 でしたとさ。
330名無し~3.EXE:02/09/28 00:13 ID:gQE6rJWr
>325
すでに答え出てるけど、前スレ547にもサンプルあるーよ。
XPならtasklist.exeとかtaskkill.exeなんてコマンドもあるーよ(>2のリンク参照)。
331名無し~3.EXE:02/09/28 10:10 ID:CI5WY3kJ
>>313 watcher.exe 、
フォルダに変化が起きた時、スクリプトファイルを呼び出してもらう。
その時、スクリプト側から、どのファイルが作成とか更新とかされたかを
 調べないとならないのだが、、結構難しい、、、
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1022248177&res=17&fi=no

更にそれで >>305 の「最近使った」のファイルの削除の試み、
> 上の次の、19
うまくいってない、

>>310 の { 何かする( flsA[i] ); cnt++; break } に、
 break 入れるの忘れてた。無駄な繰り返しをしてしまう。
332名無し~3.EXE:02/09/28 18:54 ID:t3qkBgRt
>>331
スクリプトが起動した時刻を記録するファイルを作っておいて
スクリプト起動時にはそのファイルをロックして記録、
処理が終わったら解放するようにしておけばどうかな?

起動時にロックされていたら何もしないで終了。

で、チェックは記録されていた時刻と更新時刻を比較する。
33311:02/09/28 20:14 ID:Kh7JELSG
ファイル生成の監視ですが、WMIを使えば可能らしいです。
私はうまくできなかったのですが…。
ExecNotificationQueryメソッドを使い、"__InstanceCreationEvent"を指定し、
CIM_FileDataのインスタンスの生成を監視するわけです。

実際に書いてみたコードも載せておきます。一応、C:\testの監視をおこなうように作ってます。
しかし、これは正常に動作しないばかりか、暴走してしまいます。
しかもスクリプトのプロセスも殺せません。
どなたか、動くようにする方法を教えてください。

Set Locator = WScript.CreateObject("WbemScripting.SWbemLocator") 'SWbemLocatorオブジェクト作成
Set oService = Locator.ConnectServer 'SWbemServicesオブジェクト取得

Set oEvent = oService.ExecNotificationQuery _
("select targetinstance.Name from __InstanceCreationEvent within 10 where " & _
"targetinstance isa 'CIM_DataFile' and targetinstance.Drive = 'C:' and " & _
"targetinstance.Path = '\\test\\'")

On Error Resume Next
Do
WScript.Sleep 100
Set oEvt = oEvent.NextEvent(500)
If Err.Number <>0 Then
Err.Clear
Else
MsgBox oEvt.TargetInstance.FileName & "が生成しました。"
Exit Do
End If
Loop
33411:02/09/28 20:14 ID:Kh7JELSG
メール欄を入れ忘れてました…。
335313:02/09/29 01:29 ID:GDGFvQwi
>>318-319
DLL同梱してなくてゴメン。
.NET Framework入れたらMFC関連のDLLも入ると思いこんでました。
考えてみればMFCは.NETとは関係ないから入らないのね。

.NET+NT系限定だけどJScriptだけでディレクトリ監視。
ただコンパイルしないと駄目っぽいのがニントモカントモ…
コンパイルしてちゃWSHとは言えないかな?

import System.IO;

var watcher : FileSystemWatcher = new FileSystemWatcher();
var result : System.IO.WaitForChangedResult;

watcher.Path = "c:\\temp"; //監視するディレクトリ
// watcher.Filter = "*.txt"; // フィルタ。拡張子とか指定可能
watcher.NotifyFilter = ( NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.DirectoryName );
watcher.EnableRaisingEvents = true;

for (;;) {
result = watcher.WaitForChanged( WatcherChangeTypes.All );
System.Console.WriteLine( result.ChangeType + " : " + result.Name );
}
336313:02/09/29 01:31 ID:GDGFvQwi
import System.IO; してるくせに
System.IO.WaitForChangedResultとか書いちゃ意味ね〜
337313:02/09/29 02:01 ID:GDGFvQwi
>>333
詳しく調べてないしVBScript使えないので『かも』話ですが
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/swbemlocator.asp
This object can be created by the VBScript CreateObject call.
って書いてあるから、そのへんかも。
338313:02/09/29 02:20 ID:GDGFvQwi
あぁ何書いてるんだか。can be created なら問題無いじゃん。
SWbemServicesの方がcannotだったのよ〜と言い訳してみる…

無駄レスばっかでハズカシ.
339名無し~3.EXE:02/09/29 13:44 ID:DX0ma7pH
\\HostA\Shared の情報を取得して、
前回より新しいファイルやフォルダがあったら、
表示するか確認後にフォルダを表示する。

っていうスクリプト出来ますか?

ログイン時に

共有フォルダに新しいファイルが存在します。
   共有フォルダを表示しますか?

    はい           いいえ


こういうことがしたいんです。
340名無しさん募集中。。:02/09/29 18:02 ID:bXo1roOr
>339
それは、仕事に使うものかな。だとしたらやれる事を事前に吟味しておかないと、
更に欲が出てきていっぱいいっぱいになってくるような感じがする。

まずざっと見足りないと思う事。
共有フォルダって言うからには皆が更新する物。
自分が関与しないファイルもあればするファイルもある。
また、ずっと後に関与するものもあるかもしれない。
で、区切りは前回のログオンのみでいいの?後は消しちゃって。
また朝、忙しかったら読み飛ばしちゃうかも。
会社で共有フォルダ管理って、結局数がものすごくなってみてらんない状態になると思う。
あっという間に対応しきれなくなる。
スクリプトに全ファイル監視させるのは良いとして自分が見る上でのフィルタとかはいいのかな?
ぱっと見言えるのはそんなとこかな。

この案件では最近の話題の更新したタイミングをシビアに判定するとかは考えなくてもよさそう。
アプローチとしてはデータベース作って格納するのが一番かと思います。
長文スマンス。
341教えて君:02/09/29 20:14 ID:AiYdhk+3
お、教えてください。
前スレ  http://pc.2ch.net/win/kako/1009/10091/1009175619.html
の288スクリプトをどうしても使いたいのですが、
右クリックから呼び出しても、すんとも言いません。
また普通に、クリック実行すると空白のMsgBOXが表示されたままです。
このスクリプト、正常に動くとあるのですが、どのようにすればいいか?

わ、わかる方いますか?


342名無し~3.EXE:02/09/29 22:05 ID:RQzz2bSA
>341
スクリプトっていうのはじぶんでかきかえるためにテキストで出来ているんだ。
だから一行目はじぶんのすきなようにかきかえるんだよ。
343名無し~3.EXE:02/09/29 22:38 ID:tiAhOVr/
>>341
一行目に
#!/usr/bin/wsh.exe
あるいは
#!c:/Program Files/Windows Scripting Host/WSH.EXE
を忘れずに
344名無し~3.EXE:02/09/30 00:19 ID:FLKyFssw
>>340
いあ、、自宅です。

父親と生活パターンが違うので、
父親から頼まれたことや、頼むことは
共有フォルダに突っ込んで終わりということが多いので。

突っ込むだけで相手に解れば楽だなと。
345教えて君:02/09/30 02:01 ID:YQd8Nmnx
>>342,343
い、言われたとおりにしたけど、出来ませんでした。
た、助けてください。
346:02/09/30 20:46 ID:Ogl2JPPx
>>345
つ、釣りですか?
ま、マジデスカ?
347名無しさん募集中。。:02/09/30 21:50 ID:nbKxnoJ8
>341>345
なんだか??一行目の("URL","保存先パス") をあなたの有用なものに変えるだけ。
保存先パスをフォルダまでしか指定していないとか?ファイル名まで指定する。
でダメなら一行目だけでも見せてくれ。
>342
ふぅ。それはそれで中途半端かも。
>343
嘘つき。UNI板に(・∀・) カエレ!!
>344
おっけ。先走りすまん。なら当初ので作ってみるわ。
変更ファイル名ぐらいは列記します。
>346
実際どうなんだろうね。まともな返答も無いとこは、みんなの認識の表れだと思うけど。
348名無しさん募集中。。:02/10/01 02:15 ID:BKRsHrl+
>344
ttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1022248177&res=20
ちょっと試してみて欲しい。
更新の検出が一回分ずれているような気がする。
349339:02/10/02 01:01 ID:7Te+4er2
>>348
おお、、、ありがとうございます。

確かにずれてますね。。
あと、共有フォルダのパスが見つからなかった(相手がオフラインだった)場合にエラーが。。

まぁ、これでも十分実用できるんで有り難いです。
ありがとうございます。
350名無しさん募集中。。:02/10/02 22:41 ID:sWDsefoV
>349
ttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1022248177&res=21
言われたところと、気になったところを直してみました。
これでずれなくなる。(と思う)

後は、res=20を消したいな。どうやれば会えるんだろう?
351名無し~3.EXE:02/10/03 01:51 ID:bNDTSPtv
>>333
これ、ウチではちゃんと動いてますよ。
Exit Do を消して、監視するフォルダをRecentにして、
1時間ほど走らせても大丈夫でした。
タスクマネージャでプロセスも殺せるし。
なんで11さんのとこではだめだったのかな?
ちなみにOSはXP Pro(SPとか当ててない)です。
352351:02/10/03 01:59 ID:bNDTSPtv
# 351は元の依頼主の305さんではありません。念のため。
353331:02/10/03 03:36 ID:lTDdwMTD
>313 watcher.exe の(使用の)続きと >332 ファイルのロック
単純にそのファイルがあれば止め、なければ作ってスクリプトが終わる時に削除
と試してみたが、どうも関係ない、一つずつ終わってから次が呼ばれているのかなと。
で、直接、watcher.exe から呼び出さず、watcher.exe から呼ぶのは、
スクリプトを呼ぶスクリプトにすれば、ファイルのロックの効果あり。
多分、これで、watcher.exe から呼び出されなくなってしまう事もなくなり、
うまくいくと思うのだが、、、でなければお手上げ。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1022248177&res=22

WMI は、98やMeではダウンロードしないとならないし、何となく無縁と思っていたら、
 Meには最初から入っているのか。慌てて調べ始め、、英語読めないので眺めているだけだけど。

スクリプトから様々なイベントの通知を要求する事ができる、、
  (その要求の仕方・どこの何のイベントをどう指定すればいいのかとか、が、、、)
そして、○.nextevent() で待機し受取る、、
でも今の所、例題で試してみても云とも寸とも言わないのだが、、
と思ったら、確かに 11 氏のは暴走する。Query だけでそうなる、

.NET は更に判らない。import や : 、何だろう、、
なにぶん、ファイルの共有ってなんだっけとか、しばらく考えてしまうレベルなので。

MSDN で迷って色々見てたら、こんなのあった、「イベントのスクリプティング」
ttp://www.microsoft.com/japan/msdn/columns/scripting/scripting04092001.asp
VBSでは新しい事は何も書いてないと思うが、 JS+HTMLで、:: なんて知らなかった
354331:02/10/03 03:43 ID:lTDdwMTD
XP ではならないと。
305さんは?、お題に使わせもらっただけです
355名無し~3.EXE:02/10/03 11:18 ID:6LFz1Z7L
で、結局WSHに適したエディタってどれ?
356名無し~3.EXE:02/10/03 15:02 ID:P5KaGb0m
>>355
ヒデ○
357名無し~3.EXE:02/10/03 17:32 ID:AlIxbRN6
>>355
Peggy Pro
358名無し~3.EXE:02/10/03 17:36 ID:xL+22D4K
にゃ
359 :02/10/03 18:07 ID:tFV6PnVF
>>355
VBそのものや、OfficeのVBエディタ作成・編集。
コードをTextエディタコピペ・保存。
これ西京。
360 :02/10/03 18:09 ID:tFV6PnVF
付け加え
参照設定に使いたいOLEのライブラリファイルを
登録しとけば、メソッド・プロパティ補完もしてくれる。
まぁ、基礎の話だが。
361339:02/10/04 10:07 ID:/KKA8WnK
>>350
レス遅れて申し訳ないです。
試してみましたが、接続可能な共有フォルダを指定しても

フォルダ\\hoge\hogeが見つかりません
接続が可能な状態になったら再試行してください。

と言われてしまいます。
こちらの共有フォルダをローカルパス/ネットワークパスで指定してもダメでした。

もしや、2バイト文字が原因か?と思って、英数字のみのフォルダを指定してみましたが、
やっぱりダメでした。。。
関係なさそうでしたが、一応、環境依存の部分も変えて試してみましたが、ダメ。

逆に、相手がオフラインだとsearcher.vbsでエラーが出てしまいました。
---
行: 19
文字: 1
エラー: パスが見つかりません。
コード: 800A004C
ソース: Microsoft VBScript 実行時エラー

362名無し~3.EXE:02/10/04 18:59 ID:8rno8yQ2
sony_humanResource = HumanResource.new("sony")
sony_finance = Finance.new("sony")
sony_activeField = ActiveField.new("sony")
sony_convention = Convention.new("sony")
sony_participant = Participant.new("sony")
sony_newCommer = NewCommer.new("sony")
sony_oldCommer = OldCommer.new("sony")
sony_purpose = Purpose.new("sony")
のように連続的にオブジクトを作って、出来上がったsony_XXXXってオブジェクトを
グループ化させたいんですが、どのような方法がありますか。
------------------------------------------------------------------------
厨な方法:
store(HumanResource, sony_humanResource)
store(Finance, sony_finance)
store(ActiveField, sony_activeField)
store(Convention, sony_convention)
store(Participant, sony_participant)
store(NewCommer, sony_newCommer)
store(OldCommer, sony_oldCommer)
store(Purpose, sony_purpose)
363362:02/10/04 19:00 ID:8rno8yQ2
すれ違いです。すみません。
364名無しさん募集中。。:02/10/04 22:40 ID:SAWcQwFP
>361
すまねっス。思い違いをしていたようだ。
13・14行目をこれに差し替えてください。
sCommonFolder = csCommonFolder
Do Until oFS.FolderExists(sCommonFolder)
365339:02/10/06 00:52 ID:+xvAjjJy
>>364
ちゃんと動きました。ありがd。
366名無し~3.EXE:02/10/07 01:15 ID:Cil0OTne
今表示してるホームページを
IE右クリックのメニューから
テキスト形式で保存できるスクリプト
キボンヌ…
367ai:02/10/09 03:47 ID:sL2zw+rV
質問があります。
wshからexcelではなく、excelVBAを操作することって出来ますか?
例えば、excel起動していない時に、VBAで【*.xls→*.csv】を行うとか、
特定のブックの特定のRange.valueをクリップボードに送信する、みたいな
処理ってできますか?
その辺りに詳しい方いらっしゃいますか?
368名無し~3.EXE:02/10/09 03:52 ID:8Dr9WTP5
>>367
Set oEXCEL = CreateObject("Excel.Application")
とか宣言すれば
Set oBOOK = oEXCEL.WorkBooks.Open(filename)
でfilenameを開いたり、
つまりExcelのオブジェクトがそのまま使えます
369ai:02/10/09 15:56 ID:sL2zw+rV
>>368
いえいえ、excelのオブジェクトとexcelのVBAインタプリタって違いますよね。
excelのブックを開いたら自動的にVBAを実行するようにして、WSHからその
ブックを開くようにすればいいのでしょうけど、直接WSHからVBAのインタープリタ
を操作できないのかなと思いました。
例えば、マクロを記述していないワークブックに対して、WSHからVBAエンジンを
操作して、そのワークブックの内容に変更を加えたりできないのかということ
です。
370ai:02/10/09 16:11 ID:sL2zw+rV
>>368
すみません。私の勘違いでした。
>Excelのオブジェクトがそのまま使えます
Excelのオブジェクトがつけえれば、Windows上からあらゆるメッセージを
遅れるのですね。勉強になりました。
371名無し~3.EXE:02/10/10 04:40 ID:YhubFNzf
WMI 勉強中、
オブジェクト・ブラウザ?のようなものができる事までは判ったが、
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1022248177&res=23
中身はさっぱりわからない。MSDNを見にいくのもつらい、、、
↑試す場合、Directoryの付くクラスで、[インスタンス]のボタン押すと凍ります。
HTA です。

3日前に戻る >366 デジャブ?
右クリック→ソースを開く、エディタから保存、でだめなのは何故?

前スレにあった、"Microsoft.XMLHTTP" と、"ADODB.Stream"
 使った事なかったので、試してみた。(次に)。
 ローカルのHTMLから使えるのはいいのだけど、、、
  (この場合、既に中身があるのに、また取って来るなんて無駄だが)
と思ってついでに、FileSystemObject も試してみたら何も言わずに動く。
 拡張(右クリック)メニューでない場合は、ちゃんとダイアログが出るのだが、
そういうものなのか?、
372名無し~3.EXE:02/10/10 04:46 ID:YhubFNzf
<script type="text/javascript">
var saveFolder = "C:/ユーザー/机/一時保存/"
  // 保存先のフォルダ。既にある所でないとだめ。
var useTitle = 0
  // 保存するファイル名にタイトルを使うか
var pW
if(window.external && (pW =external.menuArguments) ) {// IE拡張(右クリック)メニューからなら
  var url = pW.location.href
  if( ! /[\\\/]$/.test(saveFolder)) saveFolder += '/'
  var path = saveFolder.replace(/[\/]/g,'\\')
    + ( useTitle ? pW.title.replace(/["\\*:\/<>?|]/g,
        function(c){ return '%'+(c.charCodeAt(0)).toString(16) } )//"
      : url.replace(/.+[\/]/,'') )
    +'.txt' // ← 更に .txt と付けるなら
  var ans = prompt('保存先ファイル名、?', path);
  if(ans){ path = ans.replace(/\0.*/,'');
    xxxxx(url, path) }/// 有効な保存先のパスかどうかは確認してない
}
function xxxxx(url, path){
  var XMLHTTP = new ActiveXObject("Microsoft.XMLHTTP")
  XMLHTTP.open( "GET", url, false )
  XMLHTTP.send() // 「指定されたリソースは見つかりません」
  xmlBody = XMLHTTP.responseBody // 待たなくてもいいの?
  var ADODB_Stream = new ActiveXObject("ADODB.Stream")
  ADODB_Stream.Type = 1 // binary
  ADODB_Stream.Open();
  ADODB_Stream.Write(xmlBody);
  ADODB_Stream.Savetofile(path, 2); // 1 上書きしない?、 2 上書き?
}
</script>
373名無し~3.EXE:02/10/10 12:02 ID:rfv83ovk
タスクスケジューラからプログラム実行することは可能なれど,
プログラム中からタスクスケジューラに登録されたタスクを実行するのは不可能?
374名無し~3.EXE:02/10/10 15:02 ID:BdiEgZg4
a
375名無し~3.EXE:02/10/10 15:03 ID:BdiEgZg4
wshを利用すれば、
インターネットショートカットのリンク先を修正する作業をコマンドラインで
できますか?
376名無しさん募集中。。:02/10/11 00:51 ID:S3S2D3lZ
>373
そういう作成・実行するCOM Addinがリソキに入っていたような気がするんだけど、
Scheduler.SchedulingAgentなProgId持つやつ。
持っていないので、なんともいえない。
タスクってセキュリティコンテキストを違うところにできるしね。自動に作成・実行できたら穴なんじゃないかな。

>375
できますよん。説明するのが面倒なので、
mk:@MSITStore:C:\Program%20Files\Microsoft%20Windows%20Script\ScriptDocs\Script56.CHM::/html/wsmthcreateshortcut.htm
をみてね。
377373:02/10/11 09:03 ID:4r94Tb6C
>>376ども。
確かに実行できたら穴です(w
しかし諸事情で,Admin権限でしか動かないスクリプトを制限ユーザが動かす必要が出てきました。
しかもフリーソフトは使わずに軽作業で…。
更に,ユーザの好きな時に実行できる必要があります。

1つ考えたのは,タスクスケジューラでログオン時実行にして常駐させ,普段は隠しておく,
なんてのですが,何か他に画期的な方法はないものか。。
378373:02/10/11 09:05 ID:4r94Tb6C
ちなみに,タスクとパスワード設定は管理者権限で作成するので,問題はないです。
379名無し~3.EXE:02/10/11 12:36 ID:qUec8PhK
VBA見たくF1押すだけでヘルプ起動し、キーワード入れてくれたら名ァ……
380379:02/10/11 12:40 ID:qUec8PhK
あ、例えば、オブジェクトブラウザで参照設定した後、各オブジェクトを閲覧
しているときにF1押したら、ヘルプで検索してくれる機能(VBAなど)も
Wscriptで出来たら名ァ……
381名無し~3.EXE:02/10/11 14:25 ID:Ihh3hJW+
テキストファイルから
正規表現 [a-zA-Z0-9\._-]*\@[a-zA-Z0-9\._-]*
にマッチした単語だけ抜き出してテキストファイルに書き出す
スクリプトありませんか
382名無し~3.EXE:02/10/11 16:59 ID:CjWUwiuc
>>381
awkを使え。
383名無し~3.EXE:02/10/11 17:27 ID:OC0JHqAa
つーかその正規表現ならfor-nextでなんとかなるだろう。
384名無しさん募集中。。:02/10/11 22:10 ID:rNnNEIjJ
>377
そういうことならユーザ偽装かなぁ。スクリプト実行時だけユーザを変えるってやつ。
ASPのサンプルがMSDNにあったと思ったんだけど、今見たらASP.NET版にリニューアルしてしまって使えん。
ADSIでADsを操作してユーザ変更してCACLS.EXEをEcho付で実行して権限取得みたいなの。
具体的にはうろ覚えにて説明できん。すまん。

>379
こっちはCHMヘルプクンで実現してますよ。
>380
こっちはWSH補完クンがズバリそのものなんだけど…、680さんお願い。オブジェクトツリーでのフィルターたのんます。ダメ?
リンクは>>85参照のこと。

>381
smtp.freeserve.ne.jpみたいなボトルメールがやりたいの?
Adultサイト巡ってもいないのにアワビを大量にお届けされちゃったりしてあんま幸せな思い出がないんだよなー。アレ。
逆にSPAM元のアドレス大量にもってFrom:・To:・X-Mailer:・Reply-ToをAnd:一致でメールボックスから削除するスクリプトきぼーんしたいほど。
385名無し:02/10/11 23:30 ID:dwredRMK
ど初心者なんですが、どなたかお答えください。
WSHでダイアログを使いたいと考えてます。
で、某SeraphyScriptDialog をDLしてきたんですが、動かす事すらできません・・・

「Regsvr32.exeにDLLへのフルパスを指定して実行するだけ」らしいんですが、それすらできない人間は使うなということでしょうか?
386名無し~3.EXE:02/10/11 23:37 ID:qUec8PhK
みささん、シェル環境はDOSですか?エクスプローラですか。
ぼくはDOS窓内でCygwinのbashを使ってますが、
bashを使っていると、
explorer(エクスプローラー)、iexplorer(IE)などが起動しません。
notepadは起動しますが……

環境変数PATHはちゃんと、通っているのですが……
DOSに帰るとちゃんと実行されるのですが……

387名無し~3.EXE:02/10/11 23:42 ID:emTxdOPM
サスペンドやシャットダウンする スクリプトって可能ですか?
388385:02/10/11 23:57 ID:dwredRMK
家のパソコンでいろいろやったらできました。
ご気分を害された方申し訳ありません。
389名無し~3.EXE:02/10/12 02:02 ID:j1gTfKFq
>>387
可能。
Windows.FAQに、
Microsoftが配ってるサスペンドやシャットダウンするスクリプトへのリンクが載ってるページがある。
390名無しさん募集中。。:02/10/12 10:49 ID:da6YuRBj
>386
私はみさではないのでシェル環境についてはスルーしますが。
Cygwin使う時はパスはPATH環境変数も取ってくるけど、基本的には
mount C:\Program Files\Internet Explorer /bin
とかで入れるんでないの?違う?Cygwin使った事ないんで分からんわ。
391名無し~3.EXE:02/10/12 12:17 ID:s6t54I+c
>>386
(OS書いてないから予想だけど、多分)Win9xのDOS窓だから。
NT系のコンソールなら問題ない。
392名無し~3.EXE:02/10/12 18:34 ID:4uxwqVD3
>>386
試しにフルパスでやってみたら?

で、フルパスでならうまくいく場合は、

which explorer

とかの結果を確かめる。
393386:02/10/12 23:36 ID:cdV2XjZk

x on windowsってのを使い出してから、この現象っす。
Win2000で、Win+Rから
cmd /k bash --login -i
で、起動してるっす。

[a]~$ which iexplorer.exe
/usr/bin/which: no iexplorer.exe in (/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/cygdrive/d/WINNT/s
ystem32/:cygdrive/d/WINNT/:cygdrive/d/app/:/cygdrive/d/HOLON/XonWindows/home/Administrator/bin)
Sat Oct 12 (23:36:45)
[a]~$ which explorer.exe
/usr/bin/which: no explorer.exe in (/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/cygdrive/d/WINNT/sy
stem32/:cygdrive/d/WINNT/:cygdrive/d/app/:/cygdrive/d/HOLON/XonWindows/home/Administrator/bin)
Sat Oct 12 (23:36:51)

394前スレ680:02/10/13 01:03 ID:GPEhIkKk
>>384
>>380はWSH補完クンとは全く関係無いような・・・。

>オブジェクトツリーでのフィルター

現時点ではちょっと難しいです。すみません。

#名無しさん募集中。。さんってDana使ってたんじゃ・・・。
395名無しさん募集中。。:02/10/13 07:19 ID:KEH6Pn6l
>394
確定したワードなら、調べるとこなんかCHMヘルプクンそのものかな・・・と。

ツリーだとフルパスをキーとして持たないといけないからデータが大変そうですね。
わっかりました。では.NET Framework補完クンを座して待つことにします。(違

#補完クン・ヘルプクンが便利なのでTeraPadの方に傾向していて現在併用中です。
#でもカスタマイズしすぎて、なかなか移行には程遠いんですけれどね。
396392:02/10/13 14:20 ID:ZwanlkiY
>>393
which の結果がそれだと、パス通ってないと思う。

ところで、スレ違いなのでこれ以上続けるならCygwinスレでどうぞ。
X on Windowsスレでもいいけど。
397999:02/10/13 14:51 ID:23DFWQTt
補完クンがTeraPad起動時に自動起動してほすぃ
398999:02/10/13 16:04 ID:23DFWQTt
perlからWin32oleを利用することが多いんですけど、
補完クン・ヘルプクンを使いたいために、いったんvbsでファイル作成してから
.plに変更してます。
なにかいい解決法ありませんか?

それから、補完クンですが、Ctrlキーで候補一覧が消えないようにできませんか?
399前スレ680:02/10/13 23:28 ID:nWsM+PSO
>>397
「ツール」→「ツールの設定」→「編集」で「ツールの編集」を出し、
左下の「起動時に実行」にチェック

>>398
「簡易JScript/VBScriptコード補完ツール」ですから・・・。(^^;
私がperl知らない(使わない)っていうのも大きいですが・・・。

出来ますけど、消えてくれないと不便じゃないですか?
TeraPad以外のエディタはキーカスタマイズできるんで、
何が割り当てられてるか分からないですし。
400400:02/10/14 12:45 ID:29a5tg6u
親フォルダを取得しようとして、二つの書き方を見つけたけど結果が異なります。
このスクリプトを、日本語名フォルダとASCII名フォルダに入れて比べてみてください。
親フォルダが日本語の場合、sdnは親フォルダが日本語でなくなるまでさかのぼって返すんですが。
Windows98SE, WSH5.6日本語版。

...バグ?

Set objFile = CreateObject("Scripting.FileSystemObject")

sfn = WScript.ScriptFullName
sdn = objFile.GetFile(sfn).ParentFolder
sdn2 = objFile.GetParentFolderName(sfn)

MsgBox"This file : " & sfn & vbCrLf & _
"Parent folder : " & sdn & vbCrLf & _
"Parent folder2: " & sdn2
401名無しさん募集中。。:02/10/14 13:36 ID:cxaIMHS6
>396
見ても答えられなかったので、指針&誘導ありがとー。

>399
補完クンの方で仕様を拡張できるなら->を.と同一視するとか。
元質問者の方で全自動置換マクロみたいな物を作るか。
択一ですね。.は正規表現とかでよく使うから置換判別は難しそうですね。
でも、HTMLや、XMLのコメントを書く時に-->って使うんだよなー。.
興味あるけど、関係はないのでsage。

>400
ParentFolderは9x系だとそういう動作するんですよね。
NT系だと正常な動作します。
直接その問題と関係ないけどその書き方だとsdnにはFolderオブジェクトを入れようとして
入らないから、代わりに規定のPathプロパティの内容が入っているという状態ですよ。
402400:02/10/14 18:27 ID:29a5tg6u
>401
了解しました。おとなしくGetParentFolderNameを使います。
結構有名なバグなんでしょうか…?(しかし、くぐっても見つからなかった)
あと思い違い指摘にも感謝です。
403名無しさん募集中。。:02/10/14 22:33 ID:KwggrLO0
>402
ttp://www.oak.dti.ne.jp/~niku/R3_temp.swf?inputStr=%96%7B%93%96%82%BE%81%41%47%6F%6F%67%6C%65%82%C5%82%E0%8C%A9%82%C2%82%A9%82%E7%82%C8%82%A2%81%49

VBスレで見かけたのをWSHでリライト。
Const adSaveCreateOverWrite = 2
Const adTypeBinary = 1
Const adTypeText = 2
Function GetLupin(DT)
Dim astWord, i, sDest, oFS
Set oFS = WScript.CreateObject("Scripting.FileSystemObject")
Set astWord = WScript.CreateObject("ADODB.Stream")
sTempFile = oFS.BuildPath(oFS.GetParentFolderName(WScript.ScriptFullName), oFS.GetTempName)
astWord.Open:astWord.Type = adTypeText:astWord.Charset = "Shift_JIS"
astWord.WriteText DT
astWord.SaveToFile sTempFile, adSaveCreateOverWrite
astWord.Close
astWord.Type = adTypeBinary:astWord.Open
astWord.LoadFromFile sTempFile
oFS.DeleteFile sTempFile
Set oFS = Nothing
Do Until astWord.EOS:GetLupin = GetLupin & "%" & Right("00" & Hex(AscB(astWord.Read(1))), 2):Loop
astWord.Close
Set astWord = Nothing
End Function

Set window = WScript.CreateObject("InternetExplorer.Application")
window.Navigate2 "http://www.oak.dti.ne.jp/~niku/R3_temp.swf?inputStr=" & GetLupin(InputBox("タイトル表示したい文字を入力", "ルパン三世風タイトルメーカー"))
window.visible = True
404名無し~3.EXE:02/10/15 02:13 ID:ZP/mhqBT
cygwinが駄目なガッコのラボ内のWinマシンで
ローカルマシンの階層の深いフォルダを共有にして、アクセスしやすくしてます。
\\lab11\my\experiment
\\lab12\my\result
僕はadmin持ってるので、作業開始時に共有化するのですが
ログアウトするとき、共有を切るのを忘れてしまいます。
そこで、スクリプトを書こうと思ったのですが、
WMIオブジェ使うみたいです!!
しかし、情報すくないっす。共有化をネットワークドライブに割り当てる例は沢山あったけど……
どこか情報ありませんか?探してます。

また、ネットワーク共有をDOSから設定するためNTのコマンドってないですよね。
405名無し~3.EXE:02/10/16 04:27 ID:5emX1nCn
テキストファイルから正規表現にマッチしたところだけ
 抜き出してテキストファイルに書き出す(js)
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1022248177&res=24
それを窓(HTA)から使う
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1022248177&res=25
406名無し~3.EXE:02/10/16 07:41 ID:Rgd63seC
>>404
net share
とりあえずコマンドプロンプト開いて net help share でヘルプが見れる。
407名無し~3.EXE:02/10/16 13:40 ID:PqrlAE14
>404
WSHのリファレンス読むべし。
検索:WMI
408名無し~3.EXE:02/10/16 22:43 ID:SN/am3XR
Live2chで、自動的に、最新のテレ東スレを表示させるスクリプトを書いてみた。
'---------------------------------------------------
set IE=Wscript.CreateObject("InternetExplorer.Application","IE_")
IE.Navigate("http://live3.2ch.net/weekly/subject.txt")
do : WScript.Sleep 6300 : loop
sub IE_DocumentComplete(ByVal pDisp, URL)
dim surl,str,line,sstart,send,ic,WSHShell
send = -1 : ic = 0 : surl = ""
str = IE.document.body.innerText
IE.Quit
do
sstart = send+2
send = InStr(sstart,str,vbNewLine,1)
if 0=send then exit do
line = Mid(str,sstart,send-sstart)
ic = InStr(1,line,"テレ東",1)
if 0<>ic then exit do
loop
if 0<>ic then surl = "http://live3.2ch.net/test/read.cgi/weekly/" & Left(line,10) & "/"
set WSHShell = WScript.CreateObject("WScript.Shell")
WSHShell.Run """C:\Program Files\Live2ch\Live2ch.exe"" " &surl
WScript.Quit
end sub
'---------------------------------------------------
いちおう動くので良かったのですが、不満というか疑問が。
2行目で Navigate したあとは、DocumentCompleteイベントを待つだけなのだが、
無駄ループさせないで終わらせるとイベントが受け取れない。
大した事はないとはいえ、無駄と分かってループするのはドーカと思うので、
イベントを待つだけの処理でスマートな方法ってありませんか。
このスレの300番あたりでも、関係ありそーな話は出てるみたいですが、
違う解決方法に話が移っちゃってるんで分かりませんでした。
409名無し~3.EXE:02/10/17 12:51 ID:/NpoxRKx
>408
イベントハンドラに持っていってもらうのも一つの手だけど、(むしろHTML内スクリプトではそっちしか書けない)
バッチらしい解決法で>39あたりに。
無論、書き方の好みだとは思いますが。
410名無し~3.EXE:02/10/17 16:55 ID:SwPIsf6i
>408
IE.ReadyState が、4 (READYSTATE_COMPLETE)でないなら、
 (もっと短い間隔で) Sleep を繰返す、とかは?
 IE.Busy の確認も必要なのかな。

HTA にしてしまうとか、
<hta:application windowState="minimize">
<script language="VBScript" for="iframeName" event="onload">
' iframeName.document.body.innerText
window.close()
</script>
<iframe id="iframeName" style="display:none" src="http://〜/〜"></iframe>
htaタグの属性で、もっと、IE.Visible が false と同じような指定が
 あるのではと思うけど判らず。
411名無し~3.EXE:02/10/19 00:35 ID:1wQFg/mi
教えて君で申し訳ないけど、
過去ログや、
ttp://www.roy.hi-ho.ne.jp/mutaguchi/wsh/
ttp://member.nifty.ne.jp/aya/wsh/
などで、今までに、
「既にあるファイルをrenameする。ファイル名はファイルの一行目」
というスクリプト出てました?出てるなら、ありか教えてください。
困ってます。
412名無し~3.EXE:02/10/19 05:55 ID:SCftuzbZ
> 403 を見て驚いた。VBS では、SJISコードを取れるのか、知らなかった。
それに、"ADODB.Stream" に文字コードを指定してるし。

<script type="text/javascript"> // HTML
var n, c = prompt('SJISコードは?','あ')
if(c){ execScript( 'n=Hex(Asc(c))', 'vbscript'); alert(n) }
</script> ファイルの文字コードを変えても、SJISコードが返る。

<job> <!-- .wsf --> <script language="VBScript">
Function SJisCharCode(c): SJisCharCode = Asc(c): End Function
Function fromSJisCharCode(i): fromSJisCharCode = Chr(i): End Function
</script><script language="JScript">
String.fromSJisCharCode = function(){ // String.fromCharCode() に合わせるなら?
for(var i=0, str =''; i<arguments.length; i++) str += fromSJisCharCode(arguments[i])
return str }///
String.prototype.SJisCharCodeAt = function(n){ // 文字列.charCodeAt(n) に合わせるなら?
return (code= SJisCharCode(this.charAt(n))) < 0 ? (code <<16 >>>16) : code ; }///
WScript.Echo( fromSJisCharCode(33440) +'\n'+ String.fromSJisCharCode(0x82A0, 33442, 0x82A4)
+'\n'+ SJisCharCode('あ') // Asc(c) から戻ってくるのが、負数?、上位ビットの 1 を 0 に。
+'\n'+ (SJisCharCode('あ') <<16 >>>16 )+'\n'+ 'あいう'.SJisCharCodeAt(0).toString(16) )
</script></job> 詰め過ぎ、ごめん。

SJISコードが判ったからといって、何か役に立つのと言われると困るけど。
ファイルに書き込もうとすると、エラー起こす文字を、? にするとか、、
var c = '\xa0'//   を渡してみる
execScript( 'c=Chr(Asc(c))', 'vbscript'); alert(c) // ?(3f)になる
 (長い文なら、window.clipboardData を使うとかの方が、、、)

次に、MSDN を(嫌々)見にいく事に。
413名無し~3.EXE:02/10/19 05:57 ID:SCftuzbZ
//文字コード(セット)の変換、
src_filePath = "x:\\〜\\abc.xxx"; dest_filePath = "x:\\〜\\abc_after.xxx"
src_charset = "" // 元のファイルの文字コード
dest_charset = "" // 変換後の文字コード
// 上二つには、"shift_jis" "iso-2022-jp" "euc-jp" "unicode" など
var src_STM = new ActiveXObject("ADODB.Stream")
var dest_STM = new ActiveXObject("ADODB.Stream")
src_STM.Open()
if(src_charset) src_STM.Charset = src_charset // 設定しなければ、"unicode" とみなされる
src_STM.LoadFromFile(src_filePath)
//var str1 = src_STM.ReadText(10); src_STM.Position = 0 //※ 10文字保存
dest_STM.Open()
if(dest_charset) dest_STM.Charset = dest_charset // 設定しなければ "unicode" に変換

src_STM.CopyTo(dest_STM)
//dest_STM.Position = 0; var str2 = dest_STM.ReadText(10) //※
dest_STM.SaveToFile(dest_filePath, 2) // 2 新規作成上書き
src_STM.Close(); dest_STM.Close();
//WScript.Echo( (str1==str2) +'\n\n'+ str1 +'\n'+ escape(str1) +'\n\n'+ str2 +'\n'+ escape(str2) )
//※ スクリプト中で扱う分には、二つの文字列は同じ、ユニコード。

上では、元のファイルの文字コードがあらかじめ判ってないとならないが、
もし、何かファイルを開いた時、その文字コードを調べようとするなら、
var ascii_STM = new ActiveXObject("ADODB.Stream")
ascii_STM.Charset = "iso-8859-1"; ascii_STM.Open()
ascii_STM.LoadFromFile(filePath); var str = ascii_STM.ReadText(); ascii_STM.Close()
WScript.Echo( escape(str) ); // ここからの判定の仕方は、?、
バイナリで開いても js からはお手上げ、vbs の AscB の様にはいかないみたい。
414名無し~3.EXE:02/10/19 08:13 ID:H/RWVH5W
>411 、判らないけど、こういうような意味かな。
var maxSize = 50;
var FS = new ActiveXObject("Scripting.FileSystemObject"), errStr =''
for(var i=0, path, str, File, Stm, Re; i<WScript.Arguments.length; i++){
    if(FS.FileExists( path= WScript.Arguments(i) )){
        if( !(File= FS.GetFile(path)) )continue
        if( !(Stm= File.OpenAsTextStream()) )continue; str =''
        while(!str && !Stm.AtEndOfStream)str = Stm.ReadLine(); Stm.Close()
        if(str){ if(str.length >maxSize)str = str.substr(0, maxSize)
            str += (Re=File.Name.match(/\.[^.]+$/)) ? Re[0]: '';
            if(File.Name !=str)try{ File.Name = str
            }catch(e){ errStr += File.Name +' '+ e.description +'\n' } }///
    }//
}if(errStr)WScript.Echo(errStr)

>412 >>16 まずった。

>>372 11 行目、
pW.document.title.replace 、document が抜けてた!
415名無し~3.EXE:02/10/21 03:59 ID:SQc6N/cZ
>412  16桁ずらして戻してなんてしなくとも、
var n, c; if(c = prompt('SJISコードは?','あ')){
    execScript( 'n=Asc(c)', 'vbscript')
    alert( (n < 0 ? ((n + 65536)+'\n'+(n ^ -65536)) : n) ) }
数字の事で何故かなど考えたくもない(考えても、まっ白になるだけなのだが)。

かといって文字の事も考えたくはない。
var ascii_STM = new ActiveXObject("ADODB.Stream")
ascii_STM.Charset = "iso-8859-1"
function 文字コード判定(filePath){
    ascii_STM.Open(); ascii_STM.LoadFromFile(filePath)
    var str = ascii_STM.ReadText(); ascii_STM.Close()
    if(/^[\xfe\xff]{2}/.test(str)) return "unicode"
    var high = false, esc = 0 // 0x80 以上のバイトと、0x1b(esc) の有無、
    for(var i=0, ch; i<str.length; i++){ ch = str.charCodeAt(i)
        if(ch > 0x7f){ if(ch !=0x80 && ch<= 0x9f) return "shift_jis" // [0x81-0x9f] がある
            high = 1; i++ }
        else if(ch==0x1b) return "iso-2022-jp" // 0x1b(esc)、(数が偶数あるとかに?)
    }///
    if(high)return "euc-jp"; return "iso-8859-1"
}/// これでは使い物にならないか。
ファイル無理やり覗くと、"utf-8" は、0xEn が、2-3 バイト毎に現われるようだし、
"utf-7" は、+ と - に2バイト文字部分が囲まれているようなのだが、
どうやって他と区別できるのか、、しかしユニコードかと思っていたら全く訳判らない。

スクリプト書くのは、こんな事したいからじゃないし、
 内側の仕組みなんかを知りたいからじゃない等と言ってみたくなる。
でもWindowsから教えてくれるサービスがないようなので、自前で何とかしないと、
 混在が普通とすれば、ファイルまとめて処理する時など、不便この上ないでしょ。
416名無し~3.EXE:02/10/21 04:00 ID:SQc6N/cZ
>>371 WMI、続き(付け足し)。
クエリを試す HTA 、(結果表示をコピーした時、字下げある様にした)
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1022248177&res=26
イベントの通知(NotificationQuery)を試す HTA
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1022248177&res=27
 やはり、FileやDirectoryの付くクラスはだめ。
SDKに何が書いてあるのか、読めないので、Queryの書き方も、どう使い道があるか
さっぱり判らない。読めたとしても、、?
 喰えないご馳走は、まずい(がさい)と決め付けて納得するしかないか、

>371 と、>405
ttp://do.sakura.ne.jp/~junkroom/.... に書き込む時、
&〜; が表示から消えてしまう事に気付かなかった。
 &amp;〜; としないといけなかった。
res=23 と res=25 (のHTA)で、表示の隙間を作るのに何箇所か &nbsp; を、
 htmlタグの title(吹出し・チップ)中での改行に &#10; を入れていたのだが、
417411 :02/10/22 09:52 ID:eAcC+WT+
>>414
「一行目→ファイル名」バージョンから
「任意の行、情報→ファイル名」に変更したいのですが、
while(!str && !Stm.AtEndOfStream)str = Stm.ReadLine(); Stm.Close()
をファイル全体行読み取りに変更した後、どのように書けばいいのか
検討が付きそうにないです。なにかいいサンプルあれば教えてください。
418名無し~3.EXE:02/10/22 09:54 ID:eAcC+WT+
それから、みなさんはWindowsで書いたスクリプトを
Unix上でも使いたい場合はUnixで動くインタープリタは何使ってます?
NJS JavaScript Interpreter とかですか?有名どころとして。
419名無し~3.EXE:02/10/22 13:08 ID:eAcC+WT+
御願いです。助けてください。
じつは、
ttp://member.nifty.ne.jp/masarl/article/ruby-win32ole/excel/xlsjoin.rb
にあるxlsjoin.rbというtoolをCygwin環境で使っているんですが、このtoolを
使うことを前提に後輩の卒論のアンケートファイルのフォーマットについて
アドバイスして、このツールを紹介しました。Cygwin環境だから
xlsjoin.rb a.xls b.xls c.xls
がドラッグアンドドロップで出来るものと思っていましたが、標準のruby
ではそれが出来ないみたいなんです。僕のアホな勘違いでした。
そこで、思いついたのが
1.WSH経由でこのrubyスクリプトを呼び出す
2.WSHでこのrubyスクリプトをラッピングする。
3.VBSでxlsjoin.vbsを書いてしまう。
のどれかです。自分で勉強しようと思ってましたが、忙しい後輩に迷惑が
かかると大変なので、皆さんに何かアドバイスを頂きたくてここへきました。

なんでも結構です。アドバイス頂けませんでしょうか?
420411,417,418,419:02/10/22 13:13 ID:eAcC+WT+
あ、後輩はUNIXのコマンドをいまさら覚えている暇はなく、
いちいちこのためだけにCygwinのシェルを立ち上げれないわけです。

 #あと、大学のすべてのマシンにCygwinが入っていないので、話がややこしい。
421名無しさん募集中。。:02/10/22 23:32 ID:zQjX/bko
>419
ruby知らないんだけど、とりあえず1.に1票。リライトはできる限り避けないとね。
あと、無確認な予想だけど適切なモジュールが入っていないと動かなくない>xlsjoin.rb
まぁそこはクリアしたと仮定して、
For i = 0 To WScript.Arguments.Count - 1
sCommand = sCommand & " " & WScript.Arguments(i)
Next
WScript.CreateObject("WScript.Shell").Run "ruby xlsjoin.rb" & sCommand

か。
他のは後々困った事があり次第ということで。
Cygwinが入っていないと、どのように困る可能性がでてくると言うのでも可。

#HP見た限りそういう動作させるなら、自分だったらExcelのVBAで作るけどなぁ。
422名無しさん:02/10/23 00:58 ID:vLudiLUF
エクセルからファイルを開くダイアログを呼び出してますが、開くディレクトリを指定できないでしょうか?
423名無し~3.EXE:02/10/23 01:37 ID:HpWrdZbW
>422
前もってカレントディレクトリを指定する。
424名無し~3.EXE:02/10/23 05:02 ID:8iCBDeci
$ls
今までは、例えば、
c:\tmp(/cygdrive/c/tmp)
$ruby xlsjoin.rb a.xls b.xls c.xls
としていたのを今回、
c:\tmp(/cygdrive/c/tmp)にxlsjoin-wrap.vbsという名で
頂いたものを置いてみました。複数ファイルをドロップすると
何もおきませんでした。パスの問題でしょうか?
425名無し~3.EXE:02/10/23 05:18 ID:8iCBDeci
すみません。以下のファイルをダウンロードして、
ruby -e 'puts $:'
の出力するディレクトリにてきとーにコピーしてください。

http://member.nifty.ne.jp/masarl/article/ruby-win32ole/file-system-object/file-win32.rb
http://member.nifty.ne.jp/masarl/article/ruby-win32ole/common/win32ole-ext.rb
http://member.nifty.ne.jp/masarl/article/ruby-win32ole/excel/excel.rb

xlsjoin.rbはこれで動くはず。

あ、それから、うえのパスの問題、
"ruby xlsjoin.rb" & sCommand
のruby,xlsjoin.rbの両方絶対パスに指定しましたが、動きませんでした。

うーん、どうしてだろ。

426名無しさん募集中。。:02/10/23 12:57 ID:QEkxVrDu
>425
申し訳ない。何度か書いているけど、Cygwin関係分からないんだ。
この単純なコマンドラインでダメなら、ばっちり引っかかっているんだろう。
もし答えられるとしても、誰かのフォローがあった後になると思う。(その時点では既に役には立たないだろうが)

あと確認なんだけど、1.このコマンドラインはDOSプロンプト上で実行出来るのか。
2.require 'getopts'
はいいの?

誰か続きHelpお願いするage。
427425:02/10/23 13:47 ID:8iCBDeci
>>426
丁寧にどうもです。
僕がrubyにこだわった理由はコマンドラインから実行できるからです。
xlsjoin.rb -o all.xls hoge-*.xls
みたいにshellのグロビングが使えたり、他のツールとの関連が容易だったり
するからです。

でもじつは、ほぼ同じ働きをするVBAコードがあるのですが、
VBAってコマンドラインから実行できないはずですよね?
このコードをVBSから呼ぶようにすればいいと思いますが、やり方判らないんですよ。
そのコード貼った方が話早いでしょうか?
428横レス:02/10/23 14:05 ID:m2YU9OWm
>>425
私は以下の手順でできました.

1. Cygwin 版 Ruby と win32ole をインストール.
2. C:\cygwin\usr\local\lib\ruby\site_ruby に xlsjoin.rb,file-win32.rb,
  win32ole-ext.rb,excel.rb をコピー.
3. デスクトップに以下のショートカットを作成.
    リンク先 : C:\cygwin\usr\local\bin\ruby.exe C:\cygwin\usr\local\lib\ruby\site_ruby\xlsjoin.rb
    作業フォルダ : "C:\Documents and Settings\fumihiko\デスクトップ"
4. マイ ドキュメント フォルダに a.xls,b.xls,c.xls を作成し,これらを
  3. のショートカットにドラッグアンドドロップ.
5. デスクトップに xlsjoin.xls が作られる.

環境変数 PATH や RUBYPATH が正しく設定されていれば、ruby.exe や
xxlsjoin.rb へのパスは省略できます。が、自信がないならフルパスを指定
してください。

wsh から呼び出したりラッパーを作ったりする必要はありません。

# >419 の質問の仕方では、具体的に a.xls,b.xls,c.xls を何にドロップした
# のか、どう上手くいかなかったのか分からないです。
429422:02/10/23 20:12 ID:0JxvCyJR
カレントディレクトリの設定をしようとしましたが、WSHで設定してもNG。
エクセルでやろうとしてもやり方が悪いのかエラーで止まってしまいます。
どういう書式でやればWSHでエクセルのカレントディレクトリを変更できるのでしょうか?
430名無しさん募集中。。:02/10/23 22:49 ID:HpWrdZbW
>427
C:\book1.xlsに、
Sub test(data1,data2)
Worksheets("sheet1").Cells(1, 1) = data1
Worksheets("sheet1").Cells(1, 2) = data2
End Sub
というマクロがあるとして、VBS側に
Dim oExcel
Set oExcel = WScript.CreateObject("Excel.Application")
oExcel.Workbooks.open "C:\book1.xls"
oExcel.Run "test","data1","data2"
Set oExcel = Nothing
で、VBSからVBAマクロを引数付で動かせます。あとは工夫次第でいかようにも。

>428
横レスthx。なんとなくどこら辺に問題を抱えているのかが見当がついた。
確かめていないし、確実な事はこちらの方からは何もいいだせないけれどね。

>429
まぁ、ひとまずおちけつ。こんなコードではエラーも出ないというところまで絞ってから、
積み重ねていった方が良く出来る。
VBAのサンプルドゾー。
Sub test()
ChDir "C:\WINNT\SYSTEM32"
s = Application.GetOpenFilename()
End Sub
431名無し~3.EXE:02/10/24 03:22 ID:iq8e0+DH
Dim StdIn, StdOut
Set StdIn = WScript.StdIn
Set StdOut = WScript.StdOut


Set xlObj = CreateObject("Excel.Application")
xlObj.Visible = True
xlObj.Workbooks.add

Dim l As Integer, i As Integer
l = 0: i = 0
Do While Not StdIn.AtEndOfStream
str = StdIn.ReadLine
ss = str.Split(" ")
For i = 1 To ss.Length
xlObj.ActiveSheet.Cells(l, i) = str(i)
Next i
l = l + 1
Loop

432431:02/10/24 03:26 ID:iq8e0+DH
標準入力から読み取って、スペースを区切りにして
excelのセルに入れていくコードがわかりません。
上でエラーになりました。
433名無しさん募集中。。:02/10/24 12:44 ID:EcTjp2be
>432
コードを見てもまだ絞りきっていないようだから今の段階ではエラーの行数を見て潰すしかないね。

たとえば、SplitメソッドはVBSにはない。Split関数ならある。
そもそもSetで代入しない物はVB系では全て値型変数であって参照型オブジェクトじゃない。
値型変数にはメソッド、プロパティは存在しない。
同様に値型配列変数にLengthプロパティはない。UBound関数で上限を取得する。
434427:02/10/24 22:57 ID:doXOA7zL
>>428
アドバイス有難うございました。
ショートカットを利用すれば出来ることなんですね。
なんとなく知っていたものの今回は思いつきませんでした。
助かりました。

>>430
頂いたコード試しました。これはかなり便利ですね。431にあるような
標準入出力が使えれば、かなり便利にExcelVBAが利用できますね。
頑張って勉強しようと思います。
ところで、430にあるコードですが、スクリプト実行後も
Excelのプロセスが残りません?僕の環境だけでしょうか?
以下のようにして保存すればいいのかな?(但し動かない。意味不明エラー)

Dim oExcel
Dim aa As Workbook
Set oExcel = WScript.CreateObject("Excel.Application")
Set aa= oExcel.Workbooks.open "D:\z\my.xls"
oExcel.Run "est","data1","data2"
aa.SaveAs "D:\z\my.xls"
Set oExcel = Nothing

435名無しさん募集中。。:02/10/25 00:10 ID:R/z/c8na
>434
2:VBSではAs句はつかえません。
4:参照をセットする時は引数を括弧でくくる必要があります。
5:estはコピペミスでしょうか?
それとチョンボ。プロセスはこのままでは残りますね。
Excelの開放については、罠が結構あります。
一番見て簡単なApplicationオブジェクトレベルのものに引っかかってしまった状態。
Nothingする前に
oExcel.DisplayAlerts = False
aa.Save
oExcel.DisplayAlerts = True
oExcel.Quit
が必要です。
つーかデバッグ時は.Visible = Trueしとけって>自分
436名無し~3.EXE:02/10/26 11:30 ID:hRhobfJI
Cygwin は Windows 標準装備じゃないから除外しませんか?
437名無し~3.EXE:02/10/26 13:36 ID:xjIqYRoN
こんな質問過去にありましたか?

例えば、2chスレをブックマークに登録する時に最後のl50ってのを
付け忘れて、いちいちFavorite開いて、右クリックして……
のような操作がめんどくさいのでコマンドラインや
「ファイル名を指定して実行」などからWSHスクリプト走らせて操作するって
できますか?
438名無し~3.EXE:02/10/26 23:40 ID:g9ggfFbW
>>437
favoriteへのショートカットつくっとくしか早い気がする
439名無し~3.EXE:02/10/27 00:55 ID:pRb7L7Va
favoreteはエクスプローラだと開くのに数秒待たされます
440名無しさん募集中。。:02/10/27 01:38 ID:BAK/0aHI
>436
コマンド(DOS)プロンプトに重なるとこは取れます。コマンドライン・標準入出力ならWSHと連携も出来るし。
もちろん純粋にCygwinの問題に関しては既に誘導もあることだし放置ということで。

>437>439
それが便利なのかよくわからん。
出来ることと、やれば省力または定型化出来ること。メリットのあることを考えてみよう。
IEのお気に入りの変更かい?
そんなにたくさんはないような気がするんだが。
見当違いかもしれないのでちょっと判断保留。
441名無し~3.EXE:02/10/27 01:59 ID:naLa1SkR
>>437
・過去にそのような質問は(おそらく)無かった
・そのようなスクリプトは(おそらく)作成可能。

誰も作ってはくれないと思うが(作ってくれという依頼でもないし)、
作成自体は可能だと思うので、挑戦してくれ。
作成できたら発表してみると、誰かが助かるかも知れません。

ただ、2chに限定して考えてるなら、
専用ブラウザを使ったほうがいいと思うな。
442名無し~3.EXE:02/10/28 10:47 ID:o0BYarxY
>>437
つーか「最新50」のアンカーを対象にお気に入り登録したほうが賢明。
443431:02/10/28 16:17 ID:ByqdDmEP
スペース区切りではない(vbTAB)けどできました。tsv2xls.vbsかな?
-----------------
Option Explicit

Dim WshShell:Dim objArgs:Dim strPath

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

If objArgs.Count <> 1 Then
  MsgBox "Usage : cscript tsv2xls.vbs [outputfile]"
Else
  strPath = WshShell.CurrentDirectory & "\" _
   & objArgs.Item(0)
  Call TsvStdIn2Xls(strPath)
End If
444431:02/10/28 16:17 ID:ByqdDmEP

Sub TsvStdIn2Xls(strPath)
  Dim StdIn:  Dim xlApp:  Dim wbNew:  Dim wsNew:  Dim rngDst:  Dim vntData:  Dim strData
  Set StdIn = WScript.StdIn:  Set xlApp = CreateObject("Excel.Application")  
  Set wbNew = xlApp.Workbooks.Add: Set wsNew = wbNew.Worksheets(1):  Set rngDst = wsNew.Cells(1, 1)

  Do While Not StdIn.AtEndOfStream
    strData = StdIn.ReadLine
    vntData = Split(strData, vbTab)
    rngDst.Resize(1, UBound(vntData) + 1).Value _
      = vntData
    Set rngDst = rngDst.Offset(1)
  Loop

  wbNew.SaveAs strPath:  wbNew.Close
End Sub
445431:02/10/28 16:19 ID:ByqdDmEP
$ dir | cscript tsv2xls.vbs out.xls
みたいに使う。
446431:02/10/28 16:21 ID:ByqdDmEP
なんどもすみません。
Unixみたく、cscriptって省略できないんですか?
先頭に
#!c:\winnt\cscript.exe
入れるみたいにして
447名無し~3.EXE:02/10/28 18:56 ID:G/MCWYIJ
>>446
ftype /?
assoc /?
448431:02/10/28 21:14 ID:ByqdDmEP
この場合、

ASSOC .vbs=VBScript
FTYPE VBScript=cscript.exe %1 %*

のようにしていいのでしょうか?

なぜか、新たにエラーが出るようになりました。

 #どういうことなんだろう……
449名無しさん募集中。。:02/10/28 22:58 ID:tI39zpS6
>442がいいことを言った。
逆転の発想だけど
キャッシュを利用するなら処理対象が多量にあるし、他の利用もありそう。更に2chブラウザでは想定外の隙間を埋められるという意味でも良いかな。
アプローチとしては、
キャッシュから2ちゃんのアドレスをあさる。
見つけたら全て所定のディレクトリ(Favoritesの子ディレクトリを想定)にショートカットを作成。と。
最初の案とはえらく違うがこんなもんではいかがですか?>質問者

>446
wscript //h:cscript
で既定のスクリプトホストを変更できるけど。
すでに447さんが答えてた。

>448
今動いているものが掲載したものならエラーのメッセージと行数を告げた方が良いのでは?
450431:02/10/28 23:13 ID:ByqdDmEP
@V:$ cat abc.tsv
1 2 3 4
2 3 4 5
3 4 5 6
4 5 6 7

@V:$ cat abc.tsv | cscript.exe tsv2xls.vbs output.xls
Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

入力エラー: ファイル拡張子 ".vbs" を持つスクリプト エンジンはありません。

@V:$ cat abc.tsv | tsv2xls.vbs output.xls
./tsv2xls.vbs: Option: command not found
./tsv2xls.vbs: Dim: command not found
./tsv2xls.vbs: line 5: syntax error near unexpected token `CreateObject("'
./tsv2xls.vbs: line 5: `Set WshShell = CreateObject("WScript.Shell")'
451431:02/10/28 23:15 ID:ByqdDmEP
$ cat abc.tsv | cscript.exe tsv2xls.vbs output.xls
で通った段階で、
$ cat abc.tsv | tsv2xls.vbs output.xls
がしたいがために、
ASSOC .vbs=VBScript
FTYPE VBScript=cscript.exe %1 %*
を実行しました。すると上のエラーが出るようになりました。



452431:02/10/28 23:23 ID:ByqdDmEP
判りました。
ただ、ファイル属性を変更するとき
右クリックするのが面倒なときはよくattribコマンドを
1.コマンドライン
2.ファイル名を指定して実行
などから実行しますが、それと同じ感じで、
「ファイル名を指定して実行」からコマンド打てれば、
ショートカット名の補完も効くし便利、と思いました。

繰り返しますが、
「ファイル名を指定して実行」から
hoge \WINNT\system32\dummy
のようにしての「dummyのプロパティ」は
開けないのですよね?
453431:02/10/29 00:03 ID:SnnQOWcE
結局WSHを入れなおしました。
でも、wscript //h:cscript したけど、
$ cat abc.tsv | tsv2xls.vbs output.xls
とはできないみたいです。 
454名無し~3.EXE:02/11/01 09:43 ID:FGWMLi+A
age

455名無しさん募集中。。:02/11/02 18:40 ID:Kqci75nq
ttp://www.dotnetframework.de/scripting/dotnetscripting/dsh.asp
…??デンマーク語分からないんですけど。
CSC等のリンカ作ってスクリプトのみで実行するように振舞うのと比べてどんなメリットがあるんだろうか?

>452
VBでShellExecuteExを使ってファイル・フォルダのプロパティを開く関数を見つけたのでリライトしてみようとした。
受け渡し引数SHELLEXECUTEINFOは構造体なので
WSHで構造体を扱う DynWrap Helper コンポーネント
ttp://members.tripod.co.jp/IUnknown/WSH/dwhelper/
を使ってね。

Struct.TypeDef("DUMMYUNIONNAME") = " hIcon : h ,hMonitor : h "
Struct.TypeDef("SHELLEXECUTEINFO") = "cbSize : l, fMask : l, hWnd :l, lpVerb : r, lpFile : r, lpParameters : r, lpDirectory : i, nShow : l, hInstApp : h, lpIDList : r, lpClass : r, hkeyClass : l, dwHotKey : l, DUMMYUNIONNAME : * ,hProcess : h"
これじゃ、ダメなのか。TypeDefメソッドの取り得る値のリファレンスが欲しい所。ダメですか>IUnknownさん

>453
CScriptって使ったことないからこんな些細な変更でとか思ったけど、歯が立たない。降参です。
456名無し~3.EXE:02/11/05 11:38 ID:q+Vgfqxu
>372 の IE 右クリックから保存、意外と便利なので
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1022248177&res=28

>415 の "iso-8859-1" で読込んで、文字コードの判定をするは、間違ってた。
 0x80-0x9fの間は、元のままでなく、2バイト文字に。
ちょっと長くなってしまったので、ここのソースアップ板でなく、こちらに。
ttp://yuriken.hp.infoseek.co.jp/_pail/mojiSetAlt.html → mojiSetAlt.lzh
 (ポップアップ広告、出るのが申し訳ない)、(判定のやり方は、進歩なし)
457名無し~3.EXE:02/11/11 11:47 ID:uDBG3E85
う〜 age
458名無し~3.EXE:02/11/11 22:38 ID:xzPO2X8D
D&Dしたショートカットのリンク先をファイラで開くことは出来ますか?
エクスプローラでは開けたんですが。
459名無し~3.EXE:02/11/11 22:51 ID:/lqWfTvg
目的のファイラが、そういう操作に対応してるかどうかだけの問題な気がするが・・・・?
460 :02/11/12 00:00 ID:LSjguke1
http://www.google.co.jp/

のテキストボックスにキーワードを入れた後に、"Google検索"ボタンを
クリックさせる方法がわかりません。

どなたか教えて下さいませ。

461名無し~3.EXE:02/11/12 00:59 ID:gDeTVvo8
>>460
こんなんで。
'---------------------------------------------------
set IE=Wscript.CreateObject("InternetExplorer.Application","IE_")
IE.navigate "http://www.google.co.jp/"
WScript.Sleep 60000
msgbox "http://www.google.co.jp/ が見れませんでした"
WScript.Quit
sub IE_DocumentComplete(ByVal pDisp, URL)
IE.visible = True
IE.document.f.q.value = "機動戦士ガンダムSEED"
IE.document.f.btnG.click()
WScript.Quit
end sub
'---------------------------------------------------
googleで"機動戦士ガンダムSEED"を検索します。
10秒待ってhttp://www.google.co.jp/が開けれなかったら
エラー出して終了します。
462 :02/11/13 08:25 ID:qCqNHjhj
>>461

有り難うございます。
勉強になりました!
463名無し~3.EXE:02/11/13 16:35 ID:KLdH/4Ps
ただ単にURL開いた方が手っ取り早い気がします。
464名無し~3.EXE:02/11/13 18:03 ID:pXzUDUm5
>>463
烈しく同意。

ただ、http://www.google.co.jp/ というのが単なる例でしかなく、
実際の対象ページが、ボタンを押したときの動作が予め判らないページだったら
単にURLを開くだけの手っ取り早い方法が使えないので。
465名無しさん:02/11/13 23:18 ID:tFZ8jYLs
ご教授ください。
Set Word = CreateObject("Word.Application")
などとしてその都度Wordを起動するのではなく、すでに開いているWordを操作したいのです。
(つまり自動で完結するのではなく、Word側のVBAマクロに処理を渡した後に人間がチェックするので)

WshShell.AppActivate "なみなみ.doc"
などとした後、(他のソフトはともかく)なぜかWordはディレイを入れてもsendkeysを受け付けてくれない。

すでに開いているWordを操縦するにはどうすれば?
466名無しさん募集中。。:02/11/14 00:30 ID:zBHoVNc8
>465
On Error Resume Next
Set Application = GetObject(, "Word.Application")
If Err.Number = 0 Then
Application.Selection.Paste
End If

こんな感じかな?
467名無しさん:02/11/14 00:56 ID:1kPbRfr5
> 466
なるほど! うまくいきました。
ありがとうございましたっ!
468名無し~3.EXE:02/11/14 16:07 ID:glcRx0db
>>466
それ、on error使わない方法ってあります?
469名無し~3.EXE:02/11/14 16:28 ID:UD5HEoS/
>>468
オブジェクト取得に失敗したとき用に必要。
If Err.Number=0 … の中に
On Error Goto 0 を入れれば、以降は普通にエラーが出てくれる
470名無し~3.EXE:02/11/14 22:40 ID:dny24Dt0
Windows9xで
・デスクトップ上のネットワークコンピュータアイコンを出し消しする。
・標準のブラウザをNNに変更する。


誰かマジ作ってください。
471名無しさん募集中。。:02/11/15 00:22 ID:bgIfhZ24
>468-469
確かにOn Error Goto 0で閉じないと(ん?ステートメントだから閉じるではないか)、美しくないなぁ。
そこら辺を踏まえて…次レス。

>470
出し消しみたいに手軽なのはどうも無理だと思う。(再起動必要)
Const sKeyName = "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoNetHood"
With WScript.CreateObject("WScript.Shell")
On Error Resume Next
lValue = CInt(.RegRead(sKeyName) = 1) + 1
If Err.Number <> 0 Then
lValue = 1
End If
On Error Goto 0
.RegWrite sKeyName, lValue, "REG_DWORD"
'.Run "C:\WINDOWS\RUNDLL.EXE USER.EXE,ExitWindowsExec", 0, True
End With

2番目のはレジストリエディタで
HKEY_CLASSES_ROOT\htmlfile\shell\open\command
の値を変更してください。(そっちの方が早い)
472名無し~3.EXE:02/11/15 11:54 ID:7JF9KvIg
s-jis→eucの文字コード変換ができません。
検索してもVBのものしか出ておらず、
strconvが使えないVBSではどうやるのか
教えて下さい。
473名無し~3.EXE:02/11/15 12:30 ID:15cPm3Xy
>472
WSHではバイト配列の扱いが面倒なので、プログラム上はUnicodeで行って、
出力の際に変換するほうが良いと思うぞ。
お遊びで>>403みたいな物をVBから移植してみたが、参考になるだろうか?
474名無し~3.EXE:02/11/15 12:55 ID:7JF9KvIg
>>473

ありがとうございます。バッチリです。
475462です:02/11/15 21:12 ID:RnzhGV6G
先日はGoogle検索ボタンの件でご指導頂き有り難うございました。

今回も同じボタンクリックの質問なのですが、Googleのソースと
内容と違いがあるので、こちらのHPのボタンが自動でクリック出来ませんでした。

http://www.c-pland.com/fcgi/fam/

の、認証するのボタンをクリックするには、>>461 をどう修正すれば
解決できますでしょうか。

宜しくお願いいたします。
476462です:02/11/15 21:17 ID:RnzhGV6G
すみません。

http://www.c-pland.com/fcgi/fam/  ではなく

↓の掲示板の掲示板へ入室ボタンです
http://www.35hr.com/rent/bbsloga/mkgp/rits2002.html

477名無し~3.EXE:02/11/16 06:22 ID:z1OzdhBR
>476
type="submit"ボタンを押したいなら
forms[0].submit()じゃないのか。
478名無し~3.EXE:02/11/20 10:38 ID:SJcvumjK
htmlファイルにWSHを<script language=のところに埋め込んで、
このhtmlファイルを開いたクライアント上で実行することは可能ですか?

署名とかをつかって、特定のサイトのみWSHを実行できるようにしたいのですが、ご存知のかたいらっしゃったら教えていただけますか?
479名無し~3.EXE:02/11/21 05:50 ID:GSi0z/+9
>478
WSH使うのなら、とても人の嫌がるページが出来そうだね。
おそらくイントラだろうと思うんだけど、
FSOを許させて、(←これが大前提)
ストリームに書き込んで、ローカルに保存して、実行だね。
<script language=〜に書き込むのにはあまりふさわしくないコードを多く含むから。
独自ドメインを取得できるのなら、ゾーンを信頼済みに置くのがいいのかも。
480名無し~3.EXE:02/11/21 12:23 ID:4UXJ8bZb
>479
ありがとうございます。
FSOとかストリームとかちょっと分からないのですが、
調べてみます。
htmlにコードを書くのは、あまりよろしくないという感じですね
481名無し~3.EXE:02/11/21 22:05 ID:gn5Udrjh
>480
クライアントサイドスクリプト(html埋め込み、外部問わず)なら、
普通に書いているしセキュリティも(多分)検証されているだろうけど、
同じスクリプトでもWSHはアプリレベルの権限を持つからやっぱよろしくはないよね。

WSHは逆にWebサーバにPOSTするのによく使います。
定型文書とか暗号化して送りたいって時に便利。

ただし、上記と一緒のメカニズムで提供すると、Webサーバ側の穴になるので厳禁。
482名無し~3.EXE:02/11/25 21:32 ID:QWFnN1Ft
WSHって、VBScript以外の言語つかるのですか?
483名無し~3.EXE:02/11/25 21:34 ID:ILlnAVhd
うん
484名無し~3.EXE:02/11/28 19:40 ID:VH2Zvlfj
HTMLページ上からボタン等を使って下記の処理を実行したいと思い、
WSHで処理できそうなところまでこぎつきました。

■IEブラウザでページ(このページに処理を実行させるボタンを置く)の
 [全て選択]
 [コピー]
■Excelを新規に開いて
 [貼り付け]

サンプルから拾って見よう見まねで
「新しく開いたブラウザに指定ページを読み込んだ後」上記の
処理を実行する.wsfは作成できました。

wsfファイルをダブルクリックで実行させることはできますが、
これを「HTMLページ上のボタン等から実行」するには
どうしたらいいのでしょうか。
アドバイス等いただけると助かります。
サンプルを組み合わせただけの初心者ですみません。

下にコード書きます。
485名無し~3.EXE:02/11/28 19:48 ID:VH2Zvlfj
(484続き)
-------------------------------------------------
selectcopy.wsf
-------------------------------------------------
<JOB ID="ref">
<REFERENCE GUID="{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}"/>
<SCRIPT LANGUAGE="JavaScript">
// IE起動
var IE = WScript.CreateObject("InternetExplorer.Application");
IE.Visible = true;
IE.Navigate("http://www.yahoo.co.jp/");
WScript.Sleep(10000); //10秒待つ(すごく手抜き)
IE.ExecWB(OLECMDID_SELECTALL, OLECMDEXECOPT_DODEFAULT);
IE.ExecWB(OLECMDID_COPY, OLECMDEXECOPT_DODEFAULT);
// EXCEL出力
var objXL = WScript.CreateObject("Excel.Application");
objXL.Visible = true;
objXL.WorkBooks.Add();
objXL.ActiveSheet.Paste;
</SCRIPT>
</JOB>
-------------------------------------------------
このコードでは「ヤフを開いて全選択コピー」してますが、私が実行したいのは
たとえば、ヤフの[検索]ボタンを押したら「そのページを全選択コピー」したい
のです。
486名無し~3.EXE:02/11/28 20:44 ID:pWVG+bJP
>484-485
出来無かないけど、単純にクエリーストリングをつなげたURLをナビゲートしちゃダメかな?
検索したい文字をあらかじめ取得しておいて、
http://search.yahoo.co.jp/bin/search?p=
に>403のGetLupin関数を使って得られた文字をくっつけてNavigateする

ヤフーは文字セットEUCなので最初から9行目のところのCharsetプロパティをEUC-JPに変えてね。

487名無し~3.EXE:02/11/29 19:04 ID:GpvSb6Us
484>486
ご指南ありがとうございます。私の質問の書き方が悪いために、
私の意図することが伝わっていないようです・・。すみません。

つまるところ、
「あるページ上のボタンを押したら、そのページを全選択+コピー→Excelに貼り付け」
をしたいのです。
(やふ云々の例えが紛らわしくしてしまいました。忘れてください)

詳細な質問ページを作成しましたので、よろしければご覧いただいてアドバイスいただけると
助かります。無理を言ってすみませんがよろしくお願いします。

【質問サンプル】ttp://www.geocities.co.jp/SiliconValley/8925/sample.htm
488名無し~3.EXE:02/11/29 19:19 ID:cWk71vR6
特定のアプリケーション(私の場合はDOS窓)が動いているか調べるスクリプトは作れますでしょうか?
489名無し~3.EXE:02/11/30 06:43 ID:OjLECgyB
>487
484良く読み直したらそういう風に書いてあった。早とちりすまん。
例えだと、http://www.yahoo.co.jp/が動的に生成されるアドレスなわけだ
で、検索ボタンををトリガにして、その(検索される前の)ページを、コピーしたいわけだね。

大枠としては、WSHにて分かっているURLをナビゲート。
>39のような手法を取って目的のURLに到着出来れば、
form内のinput type=submit(か?)のnameをハンドリング
ハンドラに>485のIE.ExecWB以降を記述。
かな。
ちなみに要素のハンドリングは、
IEdocument.all.btnclick.onclick = btnClick;
のようにしておいてbtnClick関数を作る。
これで出来ないなら、そこのform要素内だけでもコピペしてもらえると、何か手伝えるかもしれない。

>488
WMIのサンプルドゾー。開いているcmd.exe(9xならcommand.comか)のProcessIDを取得します。
i = 0
Dim alPid()
ReDim alPid(1000)
For Each Process in GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery("SELECT * FROM Win32_Process WHERE NAME='cmd.exe'")
alPid(i) = Process.ProcessId
i = i + 1
Next
If i > 0 Then ReDim Preserve alPid(i - 1) Else Erase alPid
MsgBox Join(alPid, ",")
490488:02/11/30 12:20 ID:EAh/ohbK
>>489
ありがとうございます。

ファイルまたはクラスがみつからず、うまく動いてくれませんがいろいろ考えてみます。
491名無し~3.EXE:02/12/02 19:05 ID://dHEiYe
487>489
再度のアドバイスありがとうございます。
しかし、プログラミング初心者過ぎて「ハンドリング」の意味すら掴めません・・。

目的URLのHTMLに
----------------------------------------
<FORM NAME="AAA">
<INPUT TYPE="button" VALUE="選択+コピー" NAME="COPY">
</FORM>
----------------------------------------
だとしたら、.wsfに
----------------------------------------
  ・・・
IE.Navigate("目的のURL");

IE.document.AAA.COPY.onclick = btnClick;

Function bntClick(){
IE.ExecWB(OLECMDID_SELECTALL, OLECMDEXECOPT_DODEFAULT);
  ・・・
// Excel出力
  ・・・
}
----------------------------------------
と書けばよいのでしょうか・・。恐れ入りますが、再度ご教授いただけるとありがたいです。
492名無し~3.EXE:02/12/03 00:34 ID:7Yv1pLr3
>490
そー言えば、OSは何でしたっけ?
場合(95,98,NT)によってはWMIのインスコが必要です。コンポーネントは>3を見てね。

>491
そそ。あと注意したいのはハンドリングする際に制御を奪っちゃうのでもしHTML中でイベントとして使っているならハンドラ内で戻してやるのが吉。
HTML中
<INPUT TYPE="button" VALUE="選択+コピー" NAME="COPY" ONCLICK="ClickEvent();">

wsf中
function bntClick(){
IE.ExecWB(OLECMDID_SELECTALL, OLECMDEXECOPT_DODEFAULT);
  ・・・
// Excel出力
  ・・・
IE.document.parentWindow.execScript "ClickEvent()","JScript"
}

やりたい事から予想すると、おそらくもう一回あるだろうな。出来る限り答えるよ。
493名無し~3.EXE:02/12/03 18:54 ID:1cP0wuTl
491>492
詳細なご説明ありがとうございます。おっしゃる通りに書いたのですがなかなかうまくいきません・・。

<テスト1>
1.wsfを実行し、目的のページを表示
2.[選択+コピー]のボタンを押しても何も実行されません。

<テスト2>
1.仮に、wsfから自動でボタンがクリックされるようにしてみる。IE.document.AAA.COPY.click();
2.btnClick関数が呼び出され、目的の処理が実行される。
3.Excel出力後、Window Script Hostエラーダイアログが表示される。
-----------------------------------------------------
スクリプト: wsfファイル名
行:30(IE.document.parentWindow.execScript("ClickEvent()","JScript");が書いてある行)
文字:4
エラー:エラー 80020101のため操作を完了できませんでした。
コード:80020101
ソース:(null)
-----------------------------------------------------

問題点1:ボタンを押しても動かない
問題点2:(実行できたとして)エラーが発生する(らしい)

何か、対処策・回避策など思い当たりますでしょうか?
HTMLの方にJavascriptなど、処理を書く必要があるのでしょうか・・。
たびたび済みません・・。
494名無し~3.EXE:02/12/03 22:50 ID:7Yv1pLr3
>493
そのエラーはドキュメントが準備されていない。
waitは十分にとっていますか?
例としてvbsだけど>39みたいに
495名無し~3.EXE:02/12/04 17:51 ID:sCcaWB1f
493>494
wait処理はいれてませんでした。
ttp://member.nifty.ne.jp/aya/wsh/さんのところのロード待ち関数を借用して
---------------------------------------------------
IE.Navigate("目的URL");
WaitLoad(); <-----ここに入れるようにしました。
IE.document.AAA.COPY.onclick = btnClick;
---------------------------------------------------

「IE.document.parentWindow」を正しく認識できていないのかと思い、
「IE.document.parentWindow.execScript("ClickEvent()","JScript");」の代わりにとりあえず、
---------------------------------------------------
IE.document.parentWindow.execScript("alert('○○が発生しました!!');","JScript");
---------------------------------------------------
としたところ、目的URLウィンドウ上にアラート表示できました。
(なので「IE.document.parentWindow」は正しく認識されている)

ところで、上記は仮にwsfから自動実行した場合の結果なのですが、
本来のHTML上のボタンを押して実行するためにはHTML上に「ClickEvent()」の関数を記述しなければ
ならないのでしょうか?

ソースアップ板にHTMLとwsfの全内容を貼りました。33です。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1022248177&res=33&fi=no

ここがおかしい!という個所がありましたらご指摘いただけるとありがたいです。
レスいただけるご厚意に甘えぱなしで申し訳ないです。あとちょっとの気もするのですが・・。
496488:02/12/04 18:54 ID:YODnz2ek
OSはwin98、NTです。
後ほど>>3 を試してみます。
ありがとうございます。
497名無し~3.EXE:02/12/05 01:21 ID:jcu/iNjc
>495
後もう少しですね。
まだwaitがうまく動作しているのかが疑問ですけど。

>本来のHTML上のボタンを押して実行するためにはHTML上に「ClickEvent()」の関数を記述しなければならないのでしょうか?
誤解させちゃったようだから補足しておくと、ClickEvent()というのはWeb上のスクリプトを想定しています。
WSHによってイベントを横取りしますので、正しい挙動にさせるために必要というわけです。

あくまでReadOnlyな相手(Webリソース)に対するのに必要な記述と覚えて置いてください。

さて本題に移ります。
本当に動的に変わるURLと内容なら取り得るすべはありません。
といっても、無理だといっているわけではないです。(無理なら始めから無理と言っている)
でも、何らかのきっかけとなるトリガは必要です。
たとえば、
ハンドリングしたいボタンがあるリソースとしてグルーピング化できるユニークなIDがURLの一部であると仮定します。
例は前にあげたhttp://search.yahoo.co.jp/bin/search?p=〜とかが例として適当かな。
URLのここまでが一緒ならハンドリングしたいボタンが必ずあるっていう具合。
スクリプトを書くのはそこを聞いてからにしておこう。まずそういうIDがありますか?
今後の流れとしては、
全ての動作しているIEを検査、
該当IDが無ければ潜伏。(いやな言葉だな)
あれば発動し、イベントをハンドリング。
という感じになります。

下手にJSで書いてもいらぬ未検証があったりして失敗したから、次回から実際に検証しているVBSで書きます。
498名無し~3.EXE:02/12/05 17:36 ID:Z6OCycax
495>497
ご解説ありがとうございます。
本日は時間が取れず、いただいたアドバイスを検証・理解しきれませんでした。
明日以降にまた質問等書き込みせていただきたいと思います。よろしくお願いします。
499名無し~3.EXE:02/12/06 19:40 ID:KD1EpLbz
495>497
アドバイスいただいたことをいまいち理解しきれないのでボタンを配置したいページの
内容を書きました。ソース板34です。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1022248177&res=34&fi=no

という形でsearch.php3自身に検索条件を渡して結果を同一ページに表示します。
(実際は間にphpの処理が書き込まれてます)
検索条件の引渡しはPOSTでは見えませんが、GETで渡すと
http://〜/search.php?flg=search_start&yomi=よみがな&tel=電話番号
のようになるとのことで、これが使えますでしょうか。

かなり訳わかんなくなってきてます。すみません。
500名無し~3.EXE:02/12/07 11:18 ID:WNUYrS95
>499
ああ、サイト運営者か。今までの説明は利用者前提だから
そういう条件ならかえって回りくどいと思う。

1.別ボタンにActiveX有効メンバーのみの物を書く。
2.あくまでWshを別途配布とし、警告を発しない&ワンクリックアクションというメリットを追求する。

の2つが考えられるが、どっちをとりますか?
501名無し~3.EXE:02/12/09 18:49 ID:HnOCsTEh
499>500
ご提案ありがとうございます。レスが遅くなってすみません。
どっちがどうなのかということすらわかってないので、決めかねるのですが・・。
このボタン機能のページを利用するのは自分(管理者)ではなく、顧客なので
余分なもの(wsfファイル?)が無くて済むならそれに越したことは無いのですが・・。
でも1.のActiveXは全くわからないのである程度わかった(かもしれない)2.Wshの方が
教えていただくのがよい鴨しれません。
要は簡単にできそうな方法で・・ということに尽きますが、いかがでしょうか・・。
また明日来ます。
502名無し~3.EXE:02/12/09 23:55 ID:ni7jLxhK
>501
顧客って言葉に引きっ!
ほとんど想定してた使い方って社内ユーズとか友達同士とかのレベルだったからなぁ。

その観点からして2は一般的ではない、と思うんですわ。1は一般的ではないにしてもイントラならありえるって感じ。
2でもせめてそのページをみてるIEはという事ではなくWshから起動されるIE限定ってことにしておいた方が良いか。

自分はスクリプトかいて金もらうような身分じゃないし楽観的に考えるほうだけど客がいる以上責任はもてないよなぁ。
503名無し~3.EXE:02/12/10 10:29 ID:D2C5MQkB
501>502
うーん・・すみませんでした。
今までご教授いただいた中から自分なりに再検討してみます。
長々とお付き合いいただきましてありがとうございました。
お騒がせしました。
504名無し~3.EXE:02/12/12 15:30 ID:lkYdGGMX
すいません。IEの右クリックで呼び出すVBScriptについてなんですが、

アンカー付きの画像やアンカー上から呼び出した場合とページ全体から呼び出した
場合を判別する条件式はどうのようにすればいいのか教えて下さい。
505名無し~3.EXE:02/12/12 21:33 ID:o4Ahp+U/
>504
external.menuArguments.event.typeが
"MenuExtDefault", "MenuExtImage", "MenuExtControl","MenuExtTable", "MenuExtTextSelect", "MenuExtAnchor", "MenuExtUnknown"
の内のいずれかだね。
何らかの都合か知らんが、よく最後のになってしまうので注意して。
506名無し~3.EXE:02/12/13 13:41 ID:smwEsSMa
external.menuArguments.event.srcElement.tagName
これも見てみれば
507ひろゆき:02/12/15 00:37 ID:3Eozr/yo
こんにちは。みなさんお元気ですか?
2ちゃんねるの管理人の、西村博之です。
2ちゃんねるは最高の荒らし掲示板です。匿名でムカつくやつをけちらすことができるところがいいですね!
みなさんもどんどん、むかつくやつを誹謗中傷しましょう!
逝ってよし! はかっこいい!
508505:02/12/15 00:49 ID:E2augZ3H
>506
あ、これなら誤動作しないですね。
質問者じゃないけど、どうやったもんかと思ってました。
509名無し~3.EXE:02/12/16 19:44 ID:vfd+ZpFn
event.srcElement.tagNameって
<a><img></a>の場合「IMG」になっちゃうんだよね。

アンカーかどうかだけだったら
external.menuArguments.document.activeElement.tagName
が「A」(もしくは「AREA」)かどうか判別した方が使えるよ。
510名無し~3.EXE:02/12/17 11:28 ID:lt1cvGi7
> <a><img></a>の場合「IMG」になっちゃうんだよね。
この場合は、parentElement.tagName が A なら アンカーとすべし
511名無し~3.EXE:02/12/17 13:41 ID:FtkJPhOy
そういえば関係ないけどずっと前に、
「MP3のプレイリストを・・・」とかってあったけど
わざわざWSHでやるのがすごいね。

dir *.mp3 *.wav *.wma /B > list
512名無し~3.EXE:02/12/18 00:32 ID:rMKeOaVo
お題
中級者以上には朝飯前と思うんだけど・・

特定のテキストファイルを読み込んで、"2ch"という文字列を含む行だけ
を別のファイルに書き出すための、スマートなコードを募集してます。
513名無し~3.EXE:02/12/18 00:46 ID:vkuwxZ0b
素直に教えてくださいといえばいいのに
514名無し~3.EXE:02/12/18 00:48 ID:hf2PqnOk
作ってみたが、512が素直じゃないので
教えない。
515512:02/12/18 08:50 ID:Msaq2GjV
教えてください。
516名無し~3.EXE:02/12/18 09:13 ID:61HXNRXe
>>512
dim fso, file, ts, regEx, ret, T, S
set fso = CreatObject("Scripting.FileSystemObject")
set file = fso.GetFile("C:\2ch.txt")
set ts = file.OpenAsTextStream(1)
set regEx = New RegExp
regEx.IgnoreCase = false
regEx.Pattern = "2ch"
T = ""
S = ""
do while ts.AtEndOfStream <> true
S = ts.ReadLine
ret = regEx.Test(S)
if ret then
T = T & S & vbCRLF
end if
loop
ts.close

set file = fso.GetFile("C:\2ch_new.txt")
set ts = file.OpenAsTextStream(2)
ts.Write(T)
ts.close
517512:02/12/18 09:49 ID:5isaUJhN
>>516
ありがとう!!
ちょいと試してみたところ、うまく動きますた。
感謝します。
518名無し~3.EXE:02/12/18 21:02 ID:PasHouoX
cscript.exeとwscript.exeのどちらからスクリプトが起動されているかを
スクリプト内で判断することはできますか?
519518:02/12/18 21:05 ID:PasHouoX
って、WScript.FullNameってのがあるじゃん…。
WScript.ScriptFullNameじゃ取れないと思ってダメかと思ってた。
うつ出し脳。
520名無し~3.EXE:02/12/19 02:55 ID:9ApZHzQK
>>512
FIND "2ch" C:\2CH.TXT >>C:\2CH_NEW.TXT

BATだと1行でできる罠(笑)
521名無し~3.EXE:02/12/20 02:28 ID:s0g4dmHV
コマンドでできるような処理をWSHで書くとめちゃくちゃ冗長になるってのは
散々既出なわけだけど、計算とか文字列処理とか入ってくるとバッチでは
書けなかったり面倒になったりするのでWSHとかにもお世話になりたい。こ
の連携がもっとスムースだといいんだけど。。

で、質問なんですが、

1) wscriptで実行されているスクリプトからExecメソッドでコマンドを実行す
  るとコマンドプロンプトのウィンドウが開くんだけど、これを開かずに標準
  出力を受け取る方法はありますか?

2) vbsやjsでコマンドラインツールを作っていて引き数にワイルドカードを使
  いたいときどうしてますか?
522名無し~3.EXE:02/12/20 20:17 ID:XHaJOl7a
>>521
DelphiでEXE作る。
523名無し~3.EXE:02/12/21 07:00 ID:xdc848L5
>521
1)の方を作ってみた。
関数はいちいち説明する必要もないと思うけど、一応
sCommandはコンソールアプリのコマンド
lTimeoutは0で全て完了するまで同期、他の値はコマンドが終了してからの待ち時間(ms)。(コマンド間違い or 9x系のための対処)

ttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1022248177&res=35&fi=no

2)の場合総ざらいを取得しておいて、ワイルドカードを含む文字列を正規表現に展開してログ解析関数にかける。
また、ファイルのみのワイルドカードだったら、1)を使ってCommandStdOutBySilence("dir /s /b *.vbs", 1000) & CommandStdOutBySilence("dir /s /b *.js", 1000)
とかやっても。
524名無し~3.EXE:02/12/22 00:01 ID:OoGSaGuo
htaを勉強したいんですが、いいサイトか本はないでしょうか?
525名無し~3.EXE:02/12/22 12:08 ID:5jhuCK0Q
>524
HTA特有なところは下記リンクくらいで十分かと。
むしろ、必要になるのはIEコンテナに収まるActiveXの知識と、DHTML、HTMLの基本の方が重要じゃないかな。
http://www.geocities.co.jp/SiliconValley-PaloAlto/5042/hta/hta_application.html
http://www.asia.microsoft.com/japan/msdn/workshop/author/hta/overview/htaoverview.asp
526521:02/12/23 01:03 ID:+IL5dUIA
>523
亀レスすみません。
RunメソッドでWindowStyle指定してcommand.com (or cmd.exe)を実行しろ、
標準出力はテンポラリファイルにリダイレクトしろってことですね。
ウィンドウがチラっと開くのを防ぐだけのためになんでこんな面倒なこと
せなあかんねんとは思うけど、まぁいいや。
ワイルドカードも dir でできました。  ありがとう。
527523:02/12/23 07:02 ID:0gE93A3X
>526
お役に立ててうれしい限り。
要件の割にはちったー長いけど、wsfで使えばライブラリ代わりにインポートできるし。
でも、本番で稼動させるのなら全くの寡黙で動作するって重要だと思う。
作業しているウィンドウのフォーカスを取られるのだって嫌だ。少なくも自分はそう。

ちょっとネタ。
Run As Nt ユーザの権限を変更して実行するコマンド。NT3.51以降。
2ちゃん発とかあったからどこかなと思ったけど、このWin板ダターヨ。
ttp://www.42ch.net/~runasnt/
2000以降ならRunAsコマンドが搭載されているなんて事も知らなかったし。勉強になるなぁ。
528名無し~3.EXE:02/12/25 23:43 ID:UBz1Ib0J
WScript.StdOut.WriteLine("Hello,world!");

↑これを
cscriptで起動すればちゃんと表示されますが
wscriptで起動すると動きません。
wscriptの場合、標準出力は無いのでしょうか?
標準出力に代わるものとしてはどんなものがありますか?
529名無し~3.EXE:02/12/26 01:08 ID:Q6x25lHO

  ノ"~⌒;"゙ヽ.
  i' ィ-―‐ー-i゙;
  !  l ,.、  ,.、l. l
  ゙i j ' ー ,' ー .lj   ______
  ヒ,i  ,_r,,j_、 j  ‐{ echoデイイヤン
   !ゝ.゙`ー' ソ    ̄ ̄ ̄ ̄ ̄ ̄
   l  `'=テ"
530名無し~3.EXE:02/12/26 01:36 ID:kqdORZtr
>>529
いや、Echoだとwscript起動でダイアログになるんで
ログを垂れ流したいときには不向きなんだよね
すなおにcscriptで行くしかないのかな
531名無し~3.EXE:02/12/26 04:41 ID:3ExvKVYg
ファイルに書き出して終了時にエディタで開くとか
532名無し~3.EXE:02/12/27 17:41 ID:VPO/AwhK
wscrptだと、たとえコマンドプロンプトから起動しても標準出力が割り当てられないんじゃないかな。
生のAPIたたければ、標準出力をプロンプトに出すことはできるはず(でもできても多分別窓になると思う
533名無し~3.EXE:02/12/28 02:13 ID:covk0VG6
>>532
その別窓の作り方がわかればもう少し自由度アップするんですけどね〜
難しいっすな
534N88BASICで止まってる32歳:02/12/28 15:27 ID:jEwK3JUU
すっかり話題から消えたhfnetchkですが( >52 あたり)
今頃になってWSHで自動化するスクリプトにチャレンジしています。
# 最終的にはレポートをBASP21で送信するところまでやりたい。

さて、とりあえずローカルにあるstksecure.xmlの日付を取得して
新しいファイルを比較しようと思ったんですが、
ネット上にあるファイルの日付の取得方法がわかりませんでした。
# いや、探し方がヘタなんでしょうけど。

しょうがないのでIEオブジェクト作ってNavigateかけて
イベントのDownloadBeginを検出したら
ダウンロードウィンドウをアクティブにしてキーを送れば・・・、
と思っていたのですが
AppActivate "ファイルのダウンロード"
としてもそこにフォーカスが移りません。

何を間違えてるのかヒントだけでもいただけませんか?
535532:02/12/28 16:42 ID:iwnCJ4jd
AllocConsoleっつーAPIっぽいが・・・果たしてこれがwshからまともに利用できるか
536523:02/12/28 17:38 ID:CPVem3/E
>533>535
Execメソッドじゃダメなの?
別窓が開く事が前提でいいなら521もExecで標準入出力を取得設定していたと言う話できていたので…。
537名無し~3.EXE:02/12/29 04:17 ID:1xSwrfMK
JavaScriptで、新しくクラス定義するとき
コンストラクタやメソッドのオーバーロードって出来ますか?
オーバーライドなら出来るみたいなんだけど・・・
538名無し~3.EXE:02/12/29 11:33 ID:tCH/vdH2
できますよ。
539名無し~3.EXE:02/12/30 02:27 ID:fr2gACFT
>>537
エラーぶっこくんだけどIE6じゃダメなの?
540名無し~3.EXE:02/12/31 08:17 ID:9Tv9HGca
>537
スクリプトって同じ関数があると後優先で上書きするって言うのが原則だからオーバーライドともちと違うんじゃないかな?
ためしに、下のを順番変えてみて。
function Circle (xPoint, yPoint, radiusX, radiusY)
{
this.x = xPoint; // 楕円の中心点の x 要素。
this.y = yPoint; // 楕円の中心点の y 要素。
this.rX = radiusX; // 楕円の横軸。
this.rY = radiusY; // 楕円の縦軸。
}
function Circle (xPoint, yPoint, radius)
{
this.x = xPoint; // 円の中心点の x 要素。
this.y = yPoint; // 円の中心点の y 要素。
this.rX = radius; // 円の半径。
this.rY = radius; // 円の半径。
this.r = radius; // 円の半径。
}
Circle.prototype.area = function()
{
return this.pi * this.rX * this.rY;
}

Circle.prototype.pi = Math.PI;

var aCircle = new Circle(5, 11, 99);
WScript.Echo(aCircle.area());
541名無し~3.EXE:02/12/31 08:35 ID:9Tv9HGca
>534
ttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1022248177&res=36&fi=no
単純にナビゲートしていくとそのプロセス自体がマークされているからね。
振る舞いの穴をつくようなスクリプト。

>540
これじゃ、誤解されちゃうね。ただでさえオーバーロードとオーバーライドで語感が似ているのに。
今の段階では、コンストラクタのオーバーロードサンプルです。(ただエラーが出ないってだけで、まともの動作にならないけどね)
名前のくくりって重要なのでareaメソッドじゃ同じ物しか作る事ができないよ。
オーバーライドを確認するためには、同じメソッドを追加してみてね。
542名無しさん:03/01/03 17:08 ID:5axN5h7E
                      □□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□■■□□□
□□■■■■■■■■■■■■■■■■■■□□
□□□□□□■■□□□□■□□□□□□□□□
□□□□□□■■□□□□■■□□□□□□□□
□□□□□■■□□□□□■■□□□■■□□□
□□□□□■■■■■■□■■□□□■■■□□
□□□□■■■□■■□□■■□□■■■□□□
□□□■■■□□■■□□■■■■■□□□□□
□□■■□■□□■■□□■■□□□□□□□□
□■□□□□■□■■□□■■□□□□□□□□
□□□□□□■■■■□□■■□□□□□□□□
□□□□□□□■■□□□■■□□□□□■□□
□□□□□□■■□□□□■■□□□□□■□□
□□□□□■■■□□□□■■□□□□□■■□
□□□□■■□□□□□□■■■■■■■■■□
□□□■■□□□□□□□□■■■■■■■□□
□□□□□□□□□□□□□□□□□□□□□□
543名無し@2ch:03/01/05 03:49 ID:HvD03/Ci
  
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
  λ_λ    / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ( `ー´) < つぅか、お前が氏ねばいいんじゃネーノ?
  /   ノつ  \_________________
 (人_つ_つ

544名無し~3.EXE:03/01/05 08:20 ID:hGUmPa+/
do
msgbox"あぼ〜ん"
loop
545N88BASICで止まってる32歳:03/01/06 10:17 ID:eEUSgfsn
>541
レスどうもです。
# なぜか3行目で構文エラーになってしまったのですが?
# とりあえず「;」をとるといけたのでその辺は後から考えます。

これだと前回ieでDLしたフォルダに保存するんですね。
DLではなく「開く」にして指定したフォルダに
自動的に展開するように改造してみたいと思います。
546名無し~3.EXE:03/01/07 19:59 ID:cy9rPq4v
クリップボードから文字列を取り出したいんだけど
どうすればいいかな?
547名無し~3.EXE:03/01/07 20:01 ID:b2qUDWSl
>>546
IEのセキュリティホールを使え。

過去ログ嫁
548名無し~3.EXE:03/01/07 20:13 ID:cy9rPq4v
>>547
(゚∀゚)サンクスコ
やっぱセキュリティーホールを使うしかないのか・・・
549名無し~3.EXE:03/01/07 20:17 ID:yhFqCdK6
>>546
WSHPlusとか
550名無し~3.EXE:03/01/08 00:43 ID:r4/WBtVX
>546
JScript.NETでFCL使うとか。
import System.Windows.Forms;
package FCL {
class Clipboard {
function get Text() : String {
var iData : IDataObject = System.Windows.Forms.Clipboard.GetDataObject();

if(iData.GetDataPresent(DataFormats.Text)) {
return String(iData.GetData(DataFormats.Text));
}
}
function set Text(newText : String) {
if (newText == "")
throw "Can't set a blank text.";
System.Windows.Forms.Clipboard.SetDataObject(newText , true);
}
}
}
こいつをjsc /t:library でコンパイル。
dllファイルをシステムフォルダに置いてregasmして後はCreateObjectで呼び出す。
MsgBox WScript.CreateObject("FCL.Clipboard").Text
ム板の受け売りなんだけど落ちちゃったから載せておく
551IP記録実験:03/01/08 21:31 ID:ulySXiJ0
IP記録実験
http://qb.2ch.net/test/read.cgi/accuse/1042013605/

1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。

27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?

38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27
鋭いです。

73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。
552名無し~3.EXE:03/01/09 02:30 ID:6FVhv24+
祈念かきーこ

>>ヒロユキタン

いつまでやるですか?
553名無し~3.EXE:03/01/09 03:15 ID:1uq/A53E
           ∠ ̄\
            |/゚U゚|  ヤレヤレ
       ___|__|____
      / \       ___\
     .<\※ \____|\____ヽ
        ヽ\ ※ ※ ※| |====B=|
        \`ー──-.|\|___l__◎..|ヽ
          ̄ ̄ ̄ ̄| .| ̄ ̄ ̄ ̄|
               \|        |〜
554名無し~3.EXE:03/01/09 03:58 ID:MimXLy8s
諦めな。
555名無し~3.EXE:03/01/09 13:04 ID:/vlSaoj9
●持ちは串刺せてもあんまり関係ないですか?
556名無し~3.EXE:03/01/09 14:55 ID:CIdr3jre
誰か、出るっ、出ますうっ のテンプレでセンスのいいやつ考えて。
557名無し~3.EXE:03/01/11 12:48 ID:dGt0FfQH
WSHからDirectXって触れへんのん?
558名無し~3.EXE:03/01/11 14:27 ID:mLbDgXQ4
師匠!
WSHからすでに起動しているWordのマクロを実行するにはどうしたらいいのでしょうか?
キーボードショートカットを登録してsendkeysで送ってもいまいち動きません。
559名無し~3.EXE:03/01/11 21:26 ID:MU28TOJJ
>537
遅レスだけど DWHelper のソースが参考にならないかな?

http://members.tripod.co.jp/IUnknown/WSH/dwhelper/

引数の型チェックによるオーバーロードなんかもやっているし
結構参考になると思います。この作者の方はもう顔を出さないのかな。

ちなみにページがUTF-8で書かれているのでエンコードをUTF-8に
しておかないとみれません。自分は昔それでなにも表示されなかった。
560 :03/01/13 13:14 ID:ZoO6+NqN
お知恵を貸してください。

>>461
のようにボタンをクリックする方法は分ったのですが、
GoogleのHPにある、文字が表示されたリンク先を
開きたい場合はどうすれば宜しいですか?。

例えば・・・。
http://www.google.co.jp/ にある。

ヘルプ - 広告掲載について - 人材募集 - Googleについて - Google in English

これらの文字をクリックして表示させるか、URLを取得する方法を教えてください。


561名無し~3.EXE:03/01/13 13:20 ID:ACqbWXYl
>>560
なんのためにDOMがあるのか(略
562560:03/01/13 13:28 ID:ZoO6+NqN
>>561

申し訳ありません。
方法を教えてください。(泣
563名無し~3.EXE:03/01/13 17:25 ID:ACqbWXYl
>>562
どこでどう詰まったのか書いてくれ。
それじゃ一から組まなきゃならないじゃないか。
それはさすがにメンドイ。

それに何がやりたいのかいまいちわからないしな。

>>461の例の途中で、http://www.google.co.jp/開いたの確認した後で
aElms = IE.document.getElementByTagName("a")
とかを使うくらいしか言えないよ。
これで、ページ内のa要素の配列が取れるので、
ループまわしてそれぞれのhrefの値を書き出すとか。
指定文字列にはってあるリンクを取得したいのならそれぞれのinnerHTMLの値を、
指定文字列と比較すれば出来るんじゃないの?
564名無し~3.EXE:03/01/13 22:14 ID:mTPFwoKP
何だか最近こういうこと多いな〜
565名無し~3.EXE:03/01/13 22:15 ID:pPqDiFXa
閉鎖〜閉鎖〜(´人`)ナムナム
566名無し~3.EXE:03/01/13 22:19 ID:dcC4sVg+
自作自演だなw
567名無し~3.EXE:03/01/13 22:20 ID:ZPHRoncI
訴えられると捕まるは全然違うだろう。
568名無し~3.EXE:03/01/13 23:35 ID:3xqemcXi
バナクリ一発でいくらだ?金くらいやるぞ
規制解けや

( ´∀`)つI
569山崎渉:03/01/15 14:05 ID:ce+8bkar
(^^)
570名無し~3.EXE:03/01/16 01:51 ID:TQgc0t0A
WindowsXPでActiveScriptRuby使ってます。
リモートからcygwinのsshで入ってcscript hoge.rbってやると、
>入力エラー: ファイル拡張子 ".rb" を持つスクリプト エンジンはありません。
って言われてしまいます。

ローカルからの実行は問題ありませんし、".vbs"はsshからでも正常に
実行できているようなんですが、何が問題なんでしょうか?
571名無し~3.EXE:03/01/16 21:20 ID:eu/6Lsj2
リモートにActiveScriptRubyが登録されてないだけとか?
*.rbが実行されるのはリモートのプロセスじゃないの?
572名無し~3.EXE:03/01/17 00:16 ID:b9vtEPz3
レジストリのキーの削除はWSHで出来たんだけど、
値の削除が出来ない(エラーとなる)。
RegDeleteでは無理なの?
573名無し~3.EXE:03/01/17 00:20 ID:gqTW8WgN
"値"=-
は、と適当に言ってみる
574572:03/01/17 00:34 ID:b9vtEPz3
自分で値を作成してテストしたら削除できました。
でも、"HKLM\Software\Microsoft\Windows\CurrentVersion\SharedDLLs"の中の
値を直接指定すると削除失敗になるんだよなぁ。
SharedDLLsのキーを指定すれば削除できるけど、中の値をいくつか削除したいのです。
うまい方法ありますかね?
575572:03/01/17 00:40 ID:b9vtEPz3
おそらく値のパスの¥に原因がありそうだ。
でも”を入力してもステートメントの末尾が不正となる・・・。
576名無し~3.EXE:03/01/17 01:05 ID:tSssaXWr
CSV形式のファイルから個々のデータ(文字数がきまっていない)を取得するために、次のように考えました。

1行ずつ読み込む。
Instrで区切り文字 , の位置を取得。
Midでデータ抽出。
1行が終わるまで繰り返す。

もう少しスマートな方法があれば教えて頂けないでしょうか。
577名無し~3.EXE:03/01/17 01:32 ID:SSUWrAkJ
>>576
vbsならSplit関数
JScriptならsplitメソッド
578N88BASICで止まってる32歳:03/01/17 11:10 ID:E49aCGl6
>545
自分で書いて今思った。
「自動で指定したフォルダに展開って、
実行するプログラム次第でウィルス配布できちゃうじゃん」
579名無し~3.EXE:03/01/17 23:11 ID:GSHuW8qc
スクリプト起動時に与える引数(URL)をIE6で開くってのは簡単にできまふか?
580名無し~3.EXE:03/01/17 23:24 ID:Nb4b5wEF
wscript.arguments
581名無し~3.EXE:03/01/18 00:25 ID:EswiZ9sj
Set window = WScript.CreateObject("InternetExplorer.Application")
window.Visible = True
window.Navigate2 WScript.Arguments(0)

何で、Visible = True がデフォじゃないんだろう。
582名無し~3.EXE:03/01/18 00:35 ID:EswiZ9sj
>578
ナビゲートさせるURLが信頼にたる所なら大丈夫でしょ。
危険か、そうでないかの違いなんて大抵そのくらいのもん。
583名無し~3.EXE:03/01/18 08:37 ID:oBdJr58X
>580 581
どうもです!
584名無し~3.EXE:03/01/18 20:03 ID:hoiMgpn9
donutPで、今開いている全てのページ(全てのタブ)へのショートカットを作成するスクリプト作ってくださいお願いします。
585名無し~3.EXE:03/01/18 20:49 ID:z2PDnqON
>584
見返りは何ですか?
586名無し~3.EXE:03/01/18 22:40 ID:Tcg9IaT5
見返りとして感謝の書き込みがありますが実際には「パソヲタ暇人だな(藁」と思われています。
587名無し~3.EXE:03/01/19 03:45 ID:egiOUZII
give and take ってやつですね。
588名無し~3.EXE:03/01/19 12:49 ID:oC5VipCX
なんでだろ〜なんでだろ〜♪
589名無し~3.EXE:03/01/21 00:21 ID:DPy1471J
safe!
590名無し~3.EXE:03/01/21 12:34 ID:v65MT7Kf
〜11さん、121さん、業務連絡です〜

「フォルダのカスタマイズ」スレでお呼びです。

〜失礼しました〜
591名無し~3.EXE:03/01/23 00:18 ID:xw56rObn
再帰的にドライブ内のすべてのファイルを
フルパスでテキスト出力するにはどぅすればいいのですか?
592名無し~3.EXE:03/01/23 00:50 ID:ERxp01Cw
>>591
再帰的に行えば良いんじゃないですか。
593名無し~3.EXE:03/01/23 01:10 ID:vTjEcb4J
Set FS = CreateObject("Scripting.FileSystemObject")
p = "C:\My Documents"
t = "C:\ファイルリスト.txt"
Set F = FS.GetFolder(p)
If F.Files.Count + F.SubFolders.Count > 0 Then
filelist F,t
Msgbox "完了"
Else
Msgbox "ファイルorフォルダが無い"
End If
Wscript.Quit 0

Sub filelist(obj,outfile)
Set F = FS.CreateTextFile(outfile,True)
F.WriteLine obj.Path & vbCrLf
If obj.SubFolders.Count > 0 Then
For Each F1 In obj.SubFolders
F.WriteLine F1.Name & "\"
Next
If obj.Files.Count > 0 Then F.WriteLine ""
End If
For Each F1 In obj.Files
F.WriteLine F1.Name
Next
F.Close
End Sub
594名無し~3.EXE:03/01/23 06:23 ID:posASX8x
IE(DonutP)でhtml中の一番大きい画像を保存するというのをしたいんです。
が、htmlからその画像だけを保存する(画像を右クリック→「名前をつけて画像を保存」と同じ)
やり方がわからないので、画像の自体のタブを改めて開き、そのWebBrowserに
execWB()で保存しています。

教えて欲しいのはhtmlから直接画像を保存する方法と、保存ダイアログに対して
ユーザーが「保存」したか「キャンセル」したかを知る(保存したらそのタブは閉じたい)
方法です。
595594:03/01/23 06:33 ID:posASX8x
//if (big1 != null) 以降が?
var DonutP, nIndex, doc, icol, wb;
DonutP = new ActiveXObject("DonutP.API");
nIndex = DonutP.TabIndex
doc = DonutP.GetDocumentObject(nIndex);
icol = doc.images;
if (icol != null) {
 var i, img, big1, sq;
 // big1に一番面積の大きい画像が入る
 big1 = icol.item(0); //行数制限のため略
 if (big1 != null) { //ここからどうすれば?
  WScript.echo("Biggest image is ", big1.src);
  //画像に直でなければ新しいタブを開き直にする
  if (doc.URL != big1.src) nIndex = DonutP.NewWindow(big1.src, 1);
  wb = DonutP.GetWebBrowserObject(nIndex);
  WScript.sleep(500);
  wb.execWB(4, 0); //この結果(?)を知ることはできるのか?
 }
}

596名無し~3.EXE:03/01/23 15:13 ID:oF9cMhhf
>594
直接の解答じゃないんだけど、
http://yasai.2ch.net/win/kako/1002/10026/1002654665.html
の51(最後のレス)でバイナリを取得する方法が載ってるよ。
597名無し~3.EXE:03/01/23 23:50 ID:posASX8x
>>596
うーむ…とりあえず保存の方はctrl+s,wで文字通りしこしこやりますわ。
598名無し~3.EXE:03/01/29 15:14 ID:7f+6PsFD
みんなVBS使ってるみたいですけど、やはりJSより、VBSのほうが
メリットが多いんでしょうか?
599名無し~3.EXE:03/01/29 21:08 ID:EX5zLZGb
>>598
あんまり変わらん。
俺はEnd Ifが嫌いだからJScript。
JScriptで無理そうだったらPerlScript。
600名無し~3.EXE:03/01/29 21:51 ID:/TciGv6D
>>598
MsgBoxがいろいろ使える
shift_jisコードを取得できる
ぐらいしか知らない俺はJS愛用者。
601名無し~3.EXE:03/01/30 13:46 ID:9TrqUka1
ADSIを使ったときに、VBSのvbNullだかNothingだかを引数に渡す必要があるメソッドを使うときに、
JScriptのnullを渡してもダメだったことがある。そのメソッドを呼ぶラッパーをVBSにして解決したんだったかな。
602名無し~3.EXE:03/01/31 01:45 ID:IEzuafW/
WSH でprintf みたいなのってできなんですか?
あとカンマ付き数字とか。
603名無し~3.EXE:03/01/31 03:36 ID:5a6JnVtu
フォーマット出力したいってこと?
文字列連結できるんだしいらないと思う
必要に応じて正規表現でもなんでも使えるし
それとも可変長引数の関数が作りたい?
604名無し~3.EXE:03/02/08 01:19 ID:WLqmucgm
vbsでapplication.activateを安定して動作させる方法はないのでしょうか?
どうも不安定な気がしますが。
605MS KILLER:03/02/08 02:18 ID:I7fePjq0
MSがVLか?OEMか?OEM(プレイン版)かを見分ける方法は
PID(プロダクトID=3桁)なのだ
55380-OEM-0011903-×××××のようにOEMと書いてあればOEMということになるのら〜
OSを調べるにゃらばマイコンを右クリックした後にプロパティで見つけられるのら〜
OFFICE製品も同じにゃり
調べるにはWordやExcelを立ち上げヘルプのバージョン情報を見るのら〜
OEMとは出ないが360など300番台はプレイン版と判明するぞ〜

さて、このPIDはどのように生成されているかというと・・・
皆しゃんがインストール時に必ず入力するあのCDケースの裏に張り付いている生意気なキー(CD-KYE)である!!
OEM命にょ奴は友人の製品版をこそっとGETせよ^^;

ちにゃみに・・VL版はCD-ROM自体に細工があるので
VLメディアをインスコしゅる時にはCD-KYEは求められないにょだが
VL専用KEYが必要にょろ〜

アクティベーションもない、夢のCD-ROMをGETしよ〜!!
誰でも入手が可能なにょら〜
ヨドバシカメラやK'sや大型電化店で購入可能なり
友達とお金出し合ってどんどんコピーしちゃいましょう!!^^
受け取ったVLは無制限に使用可能!!
CDも焼き放題!!
一攫千金も夢ではないじょ〜。。。!!!
口の堅い連中に売って売って売りまくるのじゃ〜〜
わしみたいにハワイに別荘を買いなしゃれ〜

VLでは、当然じゃが無償サポートはないけどいらんいらん!んなもんは^^
606名無し~3.EXE:03/02/11 17:44 ID:e+Nk9ftW
>604
たとえば、どのアプリの何と言うタイトル文字で、一致文字を何にしたらActivateしないとか、
また、タスクバーはへっこんでActivateはしないとか不安定にもいろいろあると思う。
PIDで指定しているにもかかわらず、Activateしないとか。
そこら辺のところはどうなんでしょ?

話は変わって質問。
任意の不定形配列の最大次元数を求めるにはどうやるんでしょか?
たとえばav = Array(Array(0, 0, 0), Array(0, 0, 0), Array(0, 0, 0), Array(0, 0, 0), 0)
だと2を取得したい。
最悪Evalで求めるんだろうけど、それでも効率的なアルゴリズムでやった方がよいだろうがどうも考えつかない。

定型配列の次元数はUBoundの第2引数をエラーになるまで増やしていって求めたんだけど。
607名無し~3.EXE:03/02/12 07:36 ID:hKFdoq5Y
>>606
[0]プロパティが定義されてるかどうかだけのチェックだけど
こういう事ではない?

<script type=text/JScript>
av = [ [ [ "oo" ] ], "pp", [ [ "rr", [ "tt" ] ] ] ];
alert( ff( av ) + "次元配列")

function ff(xx){ // 引数は配列
  dim = 0;
  while(xx[0] != undefined){
    dim++;
    yy = new Array(0);
    j = 0;
    for(i = xx.length; i--;){
      if(xx[i][0] != undefined){
        for(k = xx[i].length; k--;){
          // xxの各要素に配列があったらその各要素を格納
          yy[j++] = xx[i][k];
        }
      }
    }
    xx = yy;
  }
  return dim; // 戻り値は数値、配列以外なら0を返す
}
</script>
608606:03/02/12 23:33 ID:jLvC/d6n
>607
うお、既存の物と関数名とsrc属性以外何も変更せずに差し替えたら無事動きました。
ありがとうございます。

JSってオブジェクトなんだなぁって改めて実感しました。
ちょっと感動。VBSだとこうは行かない。
[0]プロパティってなに?ってな具合だからね。

スクリプトの配列は0ベース固定だから問題ないし。
609604:03/02/14 01:19 ID:iNB+Q1ro
遅れましたが・・・
他人のつくったC++のソフトに自動でキーを送りたいのでActivateで送ろうと思ったんですが・・・
タイトル文字そのものを一致させたり数文字だけにしたりいろいろやったんですがだめでした。

606さんの書かれているPIDとは何でしょうか?
確実な方法があるのでしたら教えていただけませんでしょうか。
610名無し~3.EXE:03/02/14 02:08 ID:MwVDmdoI
trueが変えるまでちょっと間をおいて、10回ほど繰り返すだけじゃダメなの?
611606:03/02/15 11:16 ID:JQb3cUba
>609
そういえば、11さんの掲示板にOutlook ExpressをActivateするにはutlook Expressで判別すればいいと書いてあったな。

> 606さんの書かれているPIDとは何でしょうか?
oWshShell.SendKeys "^f", 50
oWshShell.SendKeys "ProcessId{ENTER}[ENTER}{ENTER}[ENTER}"

それとサンプル。他アプリをWSHから起動できる場合はこっちの方が良いかも
Set WshShell = WScript.CreateObject("WScript.Shell")
Set oExec = WshShell.Exec("calc")
WshShell.Run "mspaint.exe", 1, False
i = 0
Do Until WshShell.AppActivate(oExec.ProcessID) Or i > 10
WScript.Sleep 100
i = i + 1
Loop
If Not(WshShell.AppActivate(oExec.ProcessID))Then WScript.Quit(0)
WshShell.SendKeys "4{+}32{ENTER}", 50
612名無し~3.EXE:03/02/16 16:44 ID:9vKhKcWV
wshでのアプリケーション操作のコマンド等についてまとめられたサイトや書籍をご存知ないでしょうか?
613612:03/02/16 16:46 ID:9vKhKcWV
偶然にも-611と内容がかぶり気味ですね。
わたしはword等を操作したいと考えております。
sendkeysより確実かと思いまして・・・
614名無し~3.EXE:03/02/16 20:20 ID:IZB3uYJt
>612-613
See →>>465-466
IE,Word,Excel等のOLE Automation対応アプリならApplicationオブジェクトさえ取ってしまえば、
後は如何様にも、むしろDHTML,VBAの知識の方が必須になります。

残念ながら、他のOLE Automation対応アプリは詳しいサイトすら知らない。
誰か知りませんか?
615名無し~3.EXE:03/02/17 07:57 ID:Z6mdgs10
レジストリの
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\
以下がOLE対応アプリケーションなんだよね多分。
確かにどれをどうやって使えばいいのやら。
616名無し~3.EXE:03/02/17 17:59 ID:2upt9II7
>>614
オブジェクトブラウザ見れば、うっすら分かるじゃん。
617名無し~3.EXE:03/02/18 17:37 ID:rFkf4lYt
unix系のtestコマンドみたいなのってあります?
618名無し~3.EXE:03/02/18 22:32 ID:KJdSR5ml
>616
ん〜、まーそれはそうなんだけどね。
一番初めの時は外枠の方で、安心が欲しいって思う時もあるんよ。
ライセンスやSDK等で問題だったりその他条件が合わず、同じ物をさがさなアカン羽目になるつっーのは一番避けたいしね。
ちょっとコードレベルに近づいて、クラスの構成に矛盾が生じていないかとか。
結局、何が出来るの?ってのは、言う通りオブジェクトブラウザを見たほうが早いな。(Webの完成度に期待するよりもと言う意味で)
でも、よくわかるサンプルコードも出来れば期待して。

>617
なにそれ? ファイルかディレクトリかを判断するコマンドかい? 用途詳細キボンヌ。
619名無し~3.EXE:03/02/19 01:51 ID:g8FN5OgU
620名無し~3.EXE:03/02/19 22:40 ID:JRcU1WTo
>619
なるほど、詳細は分かった。
で、関与するファイル情報をコマンド一つにまとめる意義が良く分からない。
タイムスタンプ比較判断するのなら、FSOで十分。
アクセス権まで知りたいのなら、WMIを使う。
属性を知りたいのなら、Explorerで見てくださいというのが一番だろう。
621名無し~3.EXE:03/02/20 09:26 ID:QDr5LUQI
>属性を知りたいのなら、Explorerで見てくださいというのが一番だろう。
FileSystemObject でFile.Attributesを参照できたはず
622名無し~3.EXE:03/02/20 23:25 ID:7eEOT34l
>621
一番(手っ取り早い)だろう。だね。
質問者の意図が汲みあぐねているのは、知りたい事は何か、ひょっとしたら違う事なんじゃないかなぁと思ってる。
バッチでどうのこうのするときのためのコマンドらしいからscript内で置き換えて同様のコマンドは?って事で良いんだと思うんだけど。
ひょっとしたら、無ければ作るぜーって言う人かもしれない。
#それだと意欲を萎えさせることを言ったかなー。まずったな。
623名無し~3.EXE:03/02/22 16:54 ID:lJtPMnnc
scriptでPCの日付、時間を変更したいのですが可能ですか?
624名無し~3.EXE:03/02/22 23:43 ID:Xpluf9FR
>623
こんな感じかな。
Set Shell = CreateObject("WScript.Shell")
datGreenwich = DateAdd("h",-8,Now())
Shell.Run "cmd /c date " & Year(datGreenwich) & "-" & Month(datGreenwich) & "-" & Day(datGreenwich), 0
Shell.Run "cmd /c time " & FormatDateTime(datGreenwich, vbLongTime), 0

9X系ならcmd→command
625名無し~3.EXE:03/02/23 02:23 ID:Ny2Rr/Bo
WMI ってどーよ
626623:03/02/23 02:50 ID:BKn3L3Rn
>624
やりかたわかりました。
ありがと〜
627名無し~3.EXE:03/02/23 07:35 ID:56b8RDd2
>>625
どーよって何がだよ。
628名無し~3.EXE:03/02/23 23:10 ID:bm2rjuH+
>>627
便利かよ?
629名無し~3.EXE:03/02/24 01:58 ID:P9I68CNc
>>625
煩雑!
630名無し~3.EXE:03/02/24 20:10 ID:w6M8kOAE
>>628
便利だよ。
631625:03/02/26 03:36 ID:TJFan47Y
つまり、煩雑だが便利 ということか
632名無し~3.EXE:03/02/28 00:07 ID:L0zKPuD1
IEのキャッシュを削除するにはどうしたらいいでしょうか?

ありがちな操作なのでどこかにあるハズ、と思って
googleってみたんですが上手く見つけられませんでした。

今はこんな感じでごまかしています。

var Shell = WScript.CreateObject( "WScript.Shell" );
Shell.Exec("rundll32.exe shell32.dll,Control_RunDLL inetcpl.cpl");
WScript.Sleep(500);
Shell.Sendkeys( "%F" );
WScript.Sleep(10);
Shell.Sendkeys( "%D{ENTER}" );
WScript.Sleep(10);
Shell.Sendkeys( "%D{ESC}" );
633名無し~3.EXE:03/02/28 11:04 ID:S11gxenz
>>632
漏れはwshなんて使わずに
キャッシュフォルダの中身を全部消すような
del /s/q *.*なバッチ作ってごっそり消してるけど。
別にこれで問題があったことはないなぁ
634632:03/02/28 14:03 ID:3T0YNNjV
>>633
シンプルに行けと。
複雑に考えすぎてたみたいです。

つかね、書式間違えてdel /s /q *.* c:\〜〜 とかやっちゃって
デスクトップのファイル全部消えちゃいました。(゚∀゚)テヘッ
635624:03/03/02 13:01 ID:ZynoVCOP
しまった、GMT - JST = -9 やん。
そのままでは恥ずいので、www.yahoo.co.jpサーバからGMTを取得するScript

Set xh = WScript.CreateObject("Microsoft.XMLHTTP")
xh.Open "HEAD", "http://www.yahoo.co.jp/", False
xh.send Null
sDate = xh.getResponseHeader("Date")
sDate = Replace(Mid(sDate, 6, 20), " ", "-", 1, 2)
datGreenwich = CDate(sDate)
636名無し~3.EXE:03/03/02 16:03 ID:4eS80+tv
最近スクリプトをはじめて、IEを操作しようと次のようにしたら、
PC(ノート、ディスクトップ)によってエラーになったりならなかったりします。
IEを立ち上げた状態で
set IE = GetObject( ,"InternetExplorer.Application")
とすると、ディスクトップではエラーが出ます。
PCはどちらも WinXpSp1 IE6Sp1 です。

なぜエラーが起こるのでしょうか?
お願いします。
637名無し~3.EXE:03/03/02 16:12 ID:liO9Z2wd
ディスクトップ
638名無し~3.EXE:03/03/02 16:25 ID:ZynoVCOP
>636
GetObjectでIEのインスタンス拾ったこないから分からなかった。
確かに429エラーが出てるね。
替わりにこれじゃだめかい?

For Each window In WScript.CreateObject("Shell.Application").Windows
    Set document = window.document
    If TypeName(document)="HTMLDocument" Then
        'ここにIEオブジェクトを使うコードを記述

    End If
Next
639名無し~3.EXE:03/03/02 16:57 ID:4eS80+tv
>>638
Shell.Applicationですか!
こんなコレクションが有るとは知りませんでした。
感謝です。

ただ、気になるのがGetObjectのエラーです。
何故か、ノートPCではIEを拾える・・・
両方でエラーになっていれば気にしないんですけどね。
IEをGetObjectするなってことなのかな。

ありがとうございます。
640名無し~3.EXE:03/03/05 16:18 ID:ZEWloBUi
最近VBScript使い始めたんだが、
Declareで直接Win32APIを使うことが
できないんだな。
ちょっと鬱ダ...
641名無し~3.EXE:03/03/05 16:22 ID:ZEWloBUi
DynaCallというcomをインストール
すれば可能ということは(一応直接呼べないと書いたが)、
>>3を読んで承知済み。
642名無し~3.EXE:03/03/05 17:18 ID:KAcWeQRR
InvokeVerbで、右クリックメニューのサブメニューは
呼べないんでしょうか。
ワンクリックで画像の入ってるフォルダを
縮小版にしたり、詳細表示にしたりしたいんですが……
643642:03/03/06 18:10 ID:YtGxBAQ2
sendkeyで解決したことにしちゃいました
644名無し~3.EXE:03/03/07 00:25 ID:05b4HYue
かなり間抜けな質問かもしれません。
(vbsはファイルコピーくらいしかやったことがありません)

PC1,PC2・・・と、複数台のPCがつながっているとします。
それで、ですね。
たとえばPC2上で、「もしかしたら起動しているかもしれない」
とあるアプリを、PC1から有無をいわさず終了させる、
なんてことは可能なんでしょうか。
645前スレ680:03/03/07 02:20 ID:0Aphu0X5
こばわ〜。おひさしぶりです。
WSH補完クンをPerlでも使えるように画策中であります。
よろしければご意見などいただければと。

WSH補完クンver0.41β
http://www.geocities.co.jp/SiliconValley-Oakland/4672/wshcp041beta.zip
646名無し~3.EXE:03/03/07 02:29 ID:tcxV9xgU
>>645
.cgiに対応していただけると
647前スレ680:03/03/07 02:44 ID:0Aphu0X5
>>646
了解しました。
648名無し~3.EXE:03/03/07 03:55 ID:vJxZoIZm
>>642
まったく同じ事を考えてました。
出来ないですか?
649名無し~3.EXE:03/03/07 12:13 ID:v4ej44yU
いろいろ考えたけど、FolderItem,FileItemでも無いんだよ。
Explorer右ペインのコンテキストメニューかコマンドメニューにしかないもの。
650名無し~3.EXE:03/03/07 15:16 ID:6ZISkNBx
WSH(VBScript)で例外のトラップをかけようとすると、
構文エラーとなります。VB(A)では可能です。
On Error GoTo ラベル
・・・
Exit Sub
ラベル:
例外処理
Resume Next
としたいのですが、ご教授下さい。
651名無し~3.EXE:03/03/07 18:54 ID:kvkefgIu
>>650
ありません。

On Error Resume Next
で我慢してください。
652前スレ680:03/03/07 23:11 ID:2X4zTevD
バージョンアップしました。

WSH補完クンver0.41β2
http://www.geocities.co.jp/SiliconValley-Oakland/4672/wshcp041beta2.zip

・スペースで確定したときも引数情報を出すようにした。
・->{でもポップアップするようにした。
・}での確定時に{を付加するのをやめた。
・対応拡張子を*.pl,*.cgiに変更。
・pl.txtを作成。
・その他。
653名無し~3.EXE:03/03/07 23:55 ID:5TX+prUi
>>652
これって、EmEditerでも使えるのでしょうか?
654名無し~3.EXE:03/03/08 00:00 ID:51ATOpeE
>>653
MASA TEXT EDITERなら使えますよ。
655前スレ680:03/03/08 00:23 ID:C8+hyCJE
>>653
TeraPad, VxEditor, MKEditor, K2Editor用ですので使えません。
おそらく対応も不可能だと思います。

>>654
MASA TEXT EDITERにも未対応です。桂様には申し訳ありませんが、
今後も対応する予定はありません。
656名無し~3.EXE:03/03/08 00:54 ID:pg3nxTNO
>>655
残念。対応エディター使ってみようかなぁ。
どれがお勧めですかね。
657前スレ680:03/03/08 01:47 ID:C8+hyCJE
>>656
私的にはVxEditorですがレジストリ使うのがイヤならTeraPadってトコでしょうか。

VxEditor
 ・ツール登録機能があるので、外部ツールを使いやすい。
 ・マクロ言語がECMAScript(JavaScript)のサブセットなので、JScript使いならすぐ使えます。
TeraPad
 ・ツール登録機能があるので、外部ツールを使いやすい。
 ・DoMacro>>85っていうTeraPadを操作できるCOMが公開されてます。
K2Editor
 ・正規表現による強調表示が強力です。色分けにこだわるならこれ。
MKEditor
 ・この中では唯一のタブ式エディタです。プロジェクト管理とかもできるみたいです。
  ただし、外部ツールを利用する機能は一番貧弱です。
658名無し~3.EXE:03/03/08 02:26 ID:n0zpEX8w
>644
sIP = "192.168.1.5"
For Each oExec In GetObject("winmgmts:{impersonationLevel=impersonate}!//" & sIP & "/root/cimv2").ExecQuery("SELECT * FROM Win32_Process WHERE ExecutablePath='C:\\Program Files\\Internet Explorer\\IEXPLORE.EXE'")
oExec.Terminate(1)
Next

別PCのIEを強制終了するサンプルです。

>645
お久しぶりです。
PerlScriptでのテストには参加できそうにないのが残念です。
Vx使ってみようかな。
ちょっと、TeraPadみたいに簡単にはツールの登録が出来ない。Helpクンも登録良く分からないです。
659名無しさん募集中。。:03/03/08 02:45 ID:n0zpEX8w
最近ハンドル書かないから忘れてた。おひさしなんて書いても名乗らなきゃ気味悪いよね。

>658のHelpクンの方は登録できました。っていうか方法忘れていただけで簡単でした。スマソ
660前スレ680:03/03/08 02:47 ID:s3Ddz3aD
>>658
お久しぶりです。ってどなたなのかわからないんですが・・・。
(このスレ、コテハンの方がいなくなってしまいましたね。)

VxEditorならTeraPadと同じ感覚で登録できると思うんですが・・・。
readme.txtの通りにしてもうまくいかないんでしょうか?
「ツールのプロパティ」ダイアログの「オプション」タグで、「ツールを有効にする」に
チェックが入ってますでしょうか?
661前スレ680:03/03/08 02:51 ID:s3Ddz3aD
>>659
ぐはあっ!見事に入れ違ってしまった・・・。

名無しさん募集中。。さんだったのですね。いや、おひさしぶりです。
うまく登録できたようでなによりです。
662名無しさん募集中。。:03/03/08 09:43 ID:n0zpEX8w
>660
補完クンの方も拡張子判別しているとはつゆ知らず(無題)のままで試していたのが原因でした。
すごいね、ASPでも出来るんだ。
localhost←→ディレクトリ名変換スクリプトでも組んでみようかな。

それとお願い。.wsf,.wscの方にも対応を・・・。
663名無し~3.EXE:03/03/08 11:39 ID:pg3nxTNO
>>657 ありがとう
664前スレ680:03/03/08 23:22 ID:urKg+vXX
>>662
対応しました。

WSH補完クンver0.41
http://www.geocities.co.jp/SiliconValley-Oakland/4672/wshcp041.zip
665名無し~3.EXE:03/03/09 22:25 ID:XT29my8+
ごみ箱にファイルを捨てることってできますでしょうか?

よろひく。
666名無し~3.EXE:03/03/09 23:26 ID:cS7oOBoP
ホームページなどのプルダウンリストから自動で項目を選択させることは可能でしょうか?

リストの中身は変わる可能性がありますので{down}を指定回数送るなどはできません。
現在リストの何が選択されているかを取得できればと思うのですが・・・
667名無し~3.EXE:03/03/10 07:29 ID:lA63PHkW
可能だよん
668名無し~3.EXE:03/03/10 09:42 ID:BO9T93MZ
そこら辺のごみ箱にファイルをポイッと(違

つまらねぇ
逝ってくる。
669名無し~3.EXE:03/03/10 12:42 ID:hkWAnvMu
670名無し~3.EXE:03/03/10 17:58 ID:cfCzLaBk
WSHでコンピュータ名を変更することってできます?
671名無し~3.EXE:03/03/10 18:48 ID:CMbimc2j
WSH使ってこの↓ページ
http://www.proxymania.com/page1.html
のプロキシをxxx.xxx.xxx:8080形式のtxtファイルで抜き出す
ことは可能ですか?
672665:03/03/10 20:19 ID:taXi2zA9
>>669 ありがとやんした。今度から調べてから聞きます。
673名無し~3.EXE:03/03/10 20:22 ID:taXi2zA9
// どうぞ >>671

var filename = "testfile.txt";
var url = "http://www.proxymania.com/page1.html";

var ie = new ActiveXObject("InternetExplorer.Application");
ie.Navigate(url);
ie.Visible = true;
while (ie.Busy || ie.ReadyState != 4) {
WScript.Sleep(100);
}

var s = "";
var trs = ie.document.all.tags("TR");
if (trs != null)
for (var i=0; i < trs.length; i++)
if (trs[i].cells.length == 6 && trs[i].cells(5).innerText == "Whois")
s += trs[i].cells(0).innerText + ":" + trs[i].cells(1).innerText + "\r\n";

ie.Quit();

var fso = new ActiveXObject("Scripting.FileSystemObject");
var a = fso.CreateTextFile(filename, true);
a.Write(s);
a.Close();
674666:03/03/11 00:04 ID:xT66PqG6
できればヒントをいただけませんでしょうか・・・
675671:03/03/11 00:35 ID:f57ojh9Y
>>673
おおキタ−キタ−キタ−−−−−−−−
凄いッス
676671:03/03/11 00:45 ID:f57ojh9Y
一発でウマくいきました。
どうもありがとうございました。
677名無し~3.EXE:03/03/11 03:39 ID:dHb62xN7
お久しぶりです。お元気ですか?

ファイルを右クリックしたときのメニューに
「一つ上の階層に移動」、「一つ上の階層にコピー」の機能を
追加するような項目を一発作って頂けませんか?
678名無し~3.EXE:03/03/11 05:14 ID:IBMkVENy
WSH使ってこの↓ページ
http://www.cybersyndrome.net/pla_tmp.html
のプロキシをxxx.xxx.xxx:8080形式のtxtファイルで抜き出す
スクリプト誰か作って…。
まだ勉強中なもんで自分ではよくわからん。
679名無し~3.EXE:03/03/11 05:24 ID:iVlPsiw0
「勉強中」なら正規表現使えるエディタでもつかって
串の一覧から該当する物をどうやったら抽出できるか考えろ。
680名無し~3.EXE:03/03/11 05:40 ID:Qxhxwopl
串リストが欲しいだけ茶うんかと。
681名無し~3.EXE:03/03/11 05:57 ID:BCPCTj4w
DMSなら作ってやってもいいぞ
682名無し~3.EXE:03/03/11 12:38 ID:Zbvb1bIa
>681
DMSってDMonkeyScriptですか?
683名無し~3.EXE:03/03/11 13:43 ID:RuLpVzQ+
あるスクリプト内で別のスクリプトを処理できませんか?
今はFileSystemObjectで全部読み込んでからeval()でまかなっているんですが。
いい方法があったら御教授お願いします。
684名無し~3.EXE:03/03/11 14:04 ID:ofIlqXwP
>>681
自分で作ったんでもういいです。
>>679のいう通りちょっと考えたら出来ました。
思ったよりは難しくないな。
685名無し~3.EXE:03/03/11 14:33 ID:yVqfpv2j
DMSはアプリケーションの組込用として日本で広く知られているが
一応スクリプティングホストはあり、WSH同様の使い方が出来る。
686644:03/03/13 00:59 ID:nWZ+EcJX
>>658
見捨てられたと思ってたら、レスついてたんですね
ありがとうございます
僕にはかなり背伸びしたレベルみたいですが
何が何でも解読して、さっそく明日ためしてみます
687山崎渉:03/03/13 16:32 ID:z3yp78lS
(^^)
688677@今週のホシュ委員長:03/03/15 02:36 ID:5c5EN/JP
age
689ヒマなので亀レス:03/03/15 09:15 ID:TeZ4tXv9
690名無し~3.EXE:03/03/15 19:40 ID:i3S8insT
作れないなら作れないと言う。
691名無し~3.EXE:03/03/15 21:10 ID:lxSy1yDG
bat なら 20文字程度だしねぇ
692名無しさん募集中。。:03/03/16 09:31 ID:sxUH92O0
>670
XPか2003でよければこんなのもあるよ
sComputerName = "NewComputerName"
sUser = "UserName"
sPass = "Password"
For Each oCS In GetObject("Winmgmts:root\cimv2").InstancesOf("Win32_ComputerSystem")
  oCS.Rename sComputerName, sPass, sUser
Next

>677
こんなんで良いんでしょ?ショートカットをSendToに入れてくれ
Dim oFS, sTarget
Set oFS = WScript.CreateObject("Scripting.FileSystemObject")
For Each sTarget In WScript.Arguments.Unnamed
  If oFS.FileExists(sTarget)Then
    oFS.MoveFile sTarget, oFS.GetParentFolderName(sTarget) & "/../"
  End If
Next
693677:03/03/16 10:45 ID:xCCMkWHN
おはよう御座います。
激しく便利ですね。これ。
嬉しくてみんなC:\に持って行きそうな勢いです。嬉しいです。

それと
MoveFile→CopyFileと勘で弄って偶然出来たのですが、有ってますよね?

ありがとう御座いました。
694名無しさん募集中。。:03/03/16 11:50 ID:sxUH92O0
暇になったがネタなしモード。

>693
そそ、課題って言うのを忘れていたよ。

>666
そういや、解決したかなぁ。
動的にリストボックスが変化する面白いURL教えてくれたら作らなくもないよ。

>686
OSがNT,95,98の場合WMIのインスコが必要かもしれないから、2行目でエラーが出る場合は>3を見てね。
695名無し~3.EXE:03/03/16 15:40 ID:71cRsc7R
それにしてもWSHの入門本って少ないね。VBAなら腐るほどあるのに。
使えば便利だが無くてもなんとかなってしまうからか。
696名無しさん募集中。。:03/03/16 18:21 ID:sxUH92O0
入門本よりもヘルプ印刷したほうが良かったりしてね。
書籍といえば有用なCOMの解説本がもっとほしい。
DLLヘルの害悪がまことしやかに囁かれているけど、
ユーザーサイドからすれば、用途さえ絞り込りゃいいだけで、こんなに便利な物使わなけりゃ損。
まぁそれだってRubyの邪道本の受け売りなんだけどね。

VBAも使い道が定まっているから絞りやすいんだろうね。
とはいえ、あまり合格点が出せる本ってあまりないとは思う。
定まっているなら定まっているなりに
如何にコードを書かないで(流用して)プログラムになるかと言うところまで到達しないとニーズにそぐわないと思う。(決め付け)
697666:03/03/16 23:33 ID:dpjrpD00
教えて頂いたURLやその他いろいろ調べました。
JAVAスクリプトとかの知識が要るみたいですね。
パクッたサンプルをいじり倒してなんとかなるかもしれません。

それにつけてもVBSもJスクリプトも参考書が少ない・・・
698名無し~3.EXE:03/03/17 22:48 ID:/V6PA5o6
>>696
始めにインストール&ファイルの開き方等でページを使い、肝心なコード
はこれをこのまま打てば動くよってそりゃ動くだろうさ!てのが多いな>VBA本
結局読み終えても何一つ自分では作れない罠
699名無しさん募集中。。:03/03/18 00:40 ID:y5bwmI4p
>697
DHTMLとJavaScriptポケットリファレンスの2冊はお勧め。
問題を解決するだけだったら後者の著者のホムペ見ればすむってこともあるが勉強用として。

>698
禿同。
後、IDEの使い方が書いてあったりとか、リファレンスでもないのにオブジェクトごとにまとめてあったりとか。目的の方が優先じゃないのかと小一時間(ry
700名無し~3.EXE:03/03/18 01:42 ID:wUaBmf7Q
ラッキー700get
701名無し~3.EXE:03/03/18 23:57 ID:jsC6KCjH
>>638 にあるような方法で
Web 表示されたフォルダのHTMLをいじることは無理でしょうか?
702名無しさん募集中。。:03/03/19 23:16 ID:ZIIOC4Xw
>701
えっーと、(汗 
まず先に、何で直接いじらないのかを知りたい。

ドキュメントタイプは"IShellFolderViewDual"ね。
で、やってみて報告しる。
703701:03/03/20 00:10 ID:AptJRTY7
>>702
ありがとうございます。そのキーワードで出てきた
こちらの方法でできました。
http://www.roy.hi-ho.ne.jp/mutaguchi/bbs/list18.shtml

document.Script だったんですね。
document だけでやろうとして詰まってました。

で、理由は ActiveXを警告なしで使いたかっただけです。
704名無し~3.EXE:03/03/21 18:55 ID:+hZjd7GQ
コピー終了を知らせてくれるようなスクリプトもしくはプログラムって作成できないものですか?

[仕様]
HDDからHDDへの大容量コピーの終了を知らせてくれる(wavを鳴らす・メールで携帯に送信)


大容量なので10G以上のコピーを行う時に時間予測も付かないし困ってるんですが…。

CPU使用率等はほとんど低くそういうメソッドは使用出来ないと思い、
色々探してるのですが・・・。
705名無し~3.EXE:03/03/21 19:17 ID:2wUNbluG
>>704
HDDが予定の容量になったらアラートってな感じの処理では不満?
(置き換えが多いと総容量自体は増えないか……)
706名無し~3.EXE:03/03/21 19:24 ID:Iu5/5z+M
FireFileCopy等でコピーしてプロセスが終了したら通知とかはどうかな
WshScriptExecのStatusプロパティ使って
707704:03/03/21 19:25 ID:+hZjd7GQ
>>705
レスありがとうございます。
他でも質問してみたんですが、
コピーダイアログのウインドウハンドルを取得して、ダイアログが消えたら終了
と言う返答を頂きました。
プログラム初心者なんですが、WSHはこういうのを簡単に処理できますか?
できるようだったら覚えようと思うんですが…。
出来ればその終了を携帯メールに送信できるようにしたいんです。
これなら何時どこに居ても終了したのがすぐに解るので…。
708704:03/03/21 19:26 ID:+hZjd7GQ
>>706
上記にも書いたのですが、理論的には同じような方法なんでしょうか?
可能なようでしたらWSHを覚えてみようと思ってます!
709名無し~3.EXE:03/03/21 19:37 ID:Iu5/5z+M
>>708
こんな感じでいいんじゃないかな。
FFCの引数の仕様とかよく知らないから出来るかは不明。
//JScript
var WshShell = new ActiveXObject("WScript.Shell");
var oExec = WshShell.Exec("calc");//calcの部分を実行するプログラムのコマンドラインに

while (oExec.Status == 0){
WScript.Sleep(500);
}

//ここに終了時の通知処理を書く
710名無し~3.EXE:03/03/21 20:48 ID:Iu5/5z+M
メールで通知するスクリプト作ってみた
DMonkeyScriptだけど
50行あるんだけどどうしようか
711704:03/03/21 22:16 ID:+hZjd7GQ
>>709
そのプログラムだとcalcが呼び出されてるようなんですが、calcって計算機でしたよね?
どう使うのか…自分なりに調べてみます。

>>710
本当ですか?! すばらしい!ありがとうございます。
>>1に書かれてあるソースアップ板にお願いできますか?
しかし、凄いですね。私はできるのかなぁ。解らないなぁと色々調べて困ってた
のにさらっと作れてしまうもんなんですね。感謝いたします。
是非試させてください。ありがとうございます。

DMonkeyScriptは初めて知ったんですが、Irvineの作者さんが作られてるんですね。

712名無し~3.EXE:03/03/22 00:01 ID:d6wR6BU0
>>710
拝見したいです
おながいします
713名無し~3.EXE:03/03/22 00:03 ID:VlzHcX1w
バイナリデータをファイルに書き込みたいのですが以下のようにすると
「エラー: 引数が間違った型、または許容範囲外であるか、競合しています。」
となります。どうするのが正解でしょうか?

s = WScript.CreateObject("ADODB.Stream");
buf = "\1\2" // バイナリデータ
s.type = 1; // adTypeBinary
s.open;
s.write(buf); // ここでエラー
s.SaveToFile("a.bin", 2); // adSaveCreateOverWrite
s.close();
714名無し~3.EXE:03/03/22 00:34 ID:cNFtPijl
http://pc2.2ch.net/test/read.cgi/win/1041010552/42-43n
糞スレ再利用
DMonkeyScriptHostはこちら
ttp://sourceforge.jp/projects/dmonkey

以下の行を探して適当に書き換え
FFC_PATH = 'D:\app\File\FireFileCopy\FFC.exe';
s.host = '';
s.mail['To'] = '';
s.mail['From'] = '';
715704:03/03/22 01:38 ID:jBFz/xu6
おぉ。ありがとうございます!

早速試させていただきました。WSHに関しても初心者なのですが、
書き換え行ともに終わらせまして、さっそくスクプトを実行したのですが、
Excpetion; EActiveXError(34)=>Exec
と言うエラーが返って来ます。
そのラインの(cmdline)部分のようなのですが、何が悪いのかちんぷんかんぷんです。
ちょっと自分で調べてみます。
716名無し~3.EXE:03/03/22 01:59 ID:cNFtPijl
パスの指定のしかたが間違ってるんじゃない?
717704:03/03/22 02:53 ID:jBFz/xu6
>>716
何度か試してるんですが、やはり同じところでエラー出るんですよ。
コピー元フォルダを指定とコピーするファイルを指定を過ぎた時点で出るんです。
エラー行のところは、var oExec = ws.Exec(cmdline);なので、
cmdlineの部分のcmdline = FFC_PATH+from+to+FFC_OPTION;を見てやって、
FFC_PATHは確実に合ってるかどうか等も確認してるんですが・・・。
FFC_OPTIONはこの状態で大丈夫でしょうから。。。

s.host ・s.mail['To'] ・s.mail['From'] も書き換えてるんですが謎です。
もう少し頑張ってみます。すみません。。。
718名無し~3.EXE:03/03/22 04:06 ID:+mE0a4aU
FFC_PATHにスペースが入ってるというオチじゃないよね。
719名無し~3.EXE:03/03/22 04:14 ID:+mE0a4aU
もしくは単にWSHのバージョンが古いとか・・・。
Execメソッドはver5.6からだったような。
720名無し~3.EXE:03/03/22 05:27 ID:cNFtPijl
戦闘国家がまだ出てないね。
グローバルフォースは遊びやすくて好きだったんだけど。
721名無し~3.EXE:03/03/22 05:29 ID:cNFtPijl
やべ、誤爆った
722名無し~3.EXE:03/03/22 09:14 ID:Ifc8WOA0
スンマソン
WScript.Arguments みたいにバラバラじゃなくて
全部つながてて ""も処理されていないパラメーターは
取得できないんですか?
723704:03/03/22 09:37 ID:jBFz/xu6
>>718
そういうオチは用意されてなかったようですw

>>719
ずばりソレでした!v5.1のまま使用しちゃってました。
v5.6にすると動作確認できました。ただ、Subjectが文字化けしちゃってるのを除いて…。
でも十分です!有難うございます。DMonkeyScriptHostも凄いですね。
WSHに移植できるのか解りませんが、まずは過去スレから読み直しながら勉強したいと思います。

作成してくださった>>710様 レスを下さった方々。本当にご丁寧にありがとうございました。
724名無し~3.EXE:03/03/22 10:05 ID:dGTmQU9s
>>723
スレ違いなのでアレですが
コピーが終了したらWAVを鳴らす、というのであれば
単純にバッチ(DOSコマンドのバッチ)でできるかも知れませんね。
あれならひとつの処理が終了するまで次の処理に進みませんので。
725名無し~3.EXE:03/03/22 11:28 ID:s6QnJd8M
DMonkeyスレってどっかにありましたっけ?
726名無し~3.EXE:03/03/22 18:02 ID:oSdobmmc
>>725
ないんじゃないかな。
需要あるなら立ててもいいけど。
727名無し~3.EXE:03/03/23 23:14 ID:e+jBkBs8
ファイルスタンプの年月日を特定の期日に変更できるスクリプトって作成できるものですか?
よくあるファイルスタンプツールでは、時間設定まで有って…。
時間等は別に変更しなくて良いので、年月日を変更したいのですが…。
728名無し~3.EXE:03/03/24 01:56 ID:ZmE7iov5
WSHにはDOSの
・ファイル結合
copy /b a.txt+b.txt c.txt

・リネーム
ren a.txt b.txt

に当たる処理を容易に行える命令はないの?

729名無し~3.EXE:03/03/24 03:46 ID:zcvTmdSc
Dim WSH
Set WSH = CreateObject("WScript.Shell")

WSH.Run "cmd /c copy /b a.txt+b.txt c.txt",1,True
WSH.Run "cmd /k ren a.txt b.txt",1,True
730名無しさん募集中。。:03/03/24 04:34 ID:MV8cQtQK
音声ファイルを鳴らすときはメディアプレイヤー使ってこんな感じで
CreateObject("WScript.Shell").Run "mplay32.exe /Play /Close ""C:\Documents and Settings\hogehoge\My Documents\My Music\dekai_oto.wav""", 0, True

>727
過去ログ >41にタイムスタンプ変更のスクリプトがあるよ。
Shell変数を関数内に持っていけば関数単独で使えます。

>728
そこら辺の(内部、外部問わず)コマンドアプリとして用意されている物は、無理にWSHでやる必要ないんじゃないのかな。
それらをWSH標準で用意されているコマンドで行うには各々3〜4行は必要だよ。

>729
Runメソッドの第2引数を0にすると裏でやっている感じでいいかもね。
731名無し~3.EXE:03/03/25 18:13 ID:Tl2fgLPU
・ある文字列を含む行を書き換える(出現は一行だけ)
・指定した行を書き換える

このいずれかを行いたいのですが、どうやれば良いんでしょうか。
732名無し~3.EXE:03/03/25 18:31 ID:eK6eqiKK
10 F=0
20 OPEN "入力ファイル名" FOR INPUT AS #1
30 OPEN "出力ファイル名" FOR OUTPUT AS #2
35 IF EOF(1) GOTO 80
40 INPUT #1,A$
50 IF F=0 AND INSTR(A$,"検索文字列")>0 THEN F=1:A$="書き換えますた"
60 PRINT #2,A$
70 GOTO 35
80 CLOSE #2
90 CLOSE #1
733名無し~3.EXE:03/03/25 18:38 ID:eK6eqiKK
ああっ 指定した行を書き換えてなかった
ので追加
15 C = 0
45 C=C+1
46 IF F=0 AND C=指定行番号 THEN F=1:A$="書き換えますた"
734名無し~3.EXE:03/03/25 18:56 ID:Tl2fgLPU
>>732
ありがとうございます。
これで目的のことは出来そうですが、WSHでやりたいです。
引き続きよろしくお願いします。
735字下げが心配:03/03/25 19:06 ID:eK6eqiKK
Set FS = CreateObject("Scripting.FileSystemObject")
f = False
c = 0
Set F1 = FS.OpenTextFile("入力ファイル名",1)
Set F2 = FS.CreateTextFile("出力ファイル名",True)
While Not F1.AtEndOfStream
 a = F1.ReadLine
 c = c+1
 If f = False And c = 指定行番号 Then
  f = True
  a = "書き換えますた"
 End If
 If f = False And InStr( a, "検索文字列" ) > 0 Then
  f = True
  a = "書き換えますた"
 End If
 F2.WriteLine a
Wend
F2.Close
F1.Close
736名無し~3.EXE:03/03/25 19:33 ID:Tl2fgLPU
>>735
ファイルが見つかりませんとかいわれたんですが、
ちょっと修正したら無事に動きました。ありがとうございます。
これで思いが果たせます。
737名無し~3.EXE:03/03/27 01:00 ID:eXhirq6s
WSHでCPU使用率を知ることはできますか?
738名無し~3.EXE:03/03/27 02:57 ID:9Tbm/G4L
ファイルの最終更新時間を取得するにはどうすれば良いですか?
ローカルのファイルじゃなくてサーバーにあるファイルです。
739名無し~3.EXE:03/03/27 05:38 ID:go33MPKm
ぶっちゃけDMonkeyの方がお勧めだよな。
Win32API呼べるしDLLで簡単に拡張できるし。
740名無し~3.EXE:03/03/28 11:23 ID:uMr6zkcg
新手登場か!?
http://tanuki1215.netfirms.com/
DialogCreator1.0
741名無し~3.EXE:03/03/28 12:21 ID:TyC3krfn
>>738
LAN上のサーバのファイルであれば
FileSystemObjectのFileオブジェクトのDateLastModified プロパティで取得できるのでは?

WebやFTPサーバ上の日付時刻取得はわからん
742名無し~3.EXE:03/03/28 12:53 ID:sJwZty4i
>738
HTTPサーバにあるファイルなら
>>635のDateをLast-modifiedに変更すれ(当然URLも)、文字列の加工を少し変更する必要があるかも。
サーバ側の自己申告制なので対応していないこともある。実際例yahoo.co.jp/もそうだったし
743名無し~3.EXE:03/03/29 00:27 ID:vf9DjLfQ
すでに起動しているアプリケーションのオブジェクトの取得はどのようにすればよいでしょうか。
要するに起動中のIEのdocumentオブジェクトを取得したいんですが・・・
744名無し~3.EXE:03/03/29 13:52 ID:ZTmaDYPR
>>743
>>636-639 このへんかな?
745名無し~3.EXE:03/03/29 14:46 ID:KwKUzBv4
Win2000のシャットダウンが遅くなる現象ですが、
http://support.microsoft.com/default.aspx?scid=kb;ja;814770
前スレの479を参考に終了処理スクリプトを作ってみました。

lSec = 10 '待ち時間(秒)
Set WshShell = WScript.CreateObject("WScript.Shell")
iButton = WshShell.Popup ("シャットダウンしますか?"& vbCrLf & _
"(何も押さないとキャンセルされます)",lSec,,vbExclamation + vbOkCancel)
If iButton = vbOK Then
WshShell.Run "C:\temp\hoge.bat",2,true
Set oSystemSet=GetObject ("winmgmts:{impersonationLevel=impersonate,(Shutdown)}") _
.InstancesOf("Win32_OperatingSystem")
For Each oSystem In oSystemSet
oSystem.Win32Shutdown 1
'0 ログオフ
'1 シャットダウン(電源は切れない)
'2 再起動
'4 強制終了?
'8 電源オフ
Next
End If

で hoge.batの中味は
NET STOP SPOOLER
exit
の2行。何かもうちょっと上手くできそうなんですが・・・アドバイスあったらよろしく。
746名無し~3.EXE:03/03/29 16:20 ID:7OP5qzuG
>>745
んなことしなくていいから、
ログオフスクリプトでSPOOLER止めれ
747745:03/03/29 18:49 ID:KwKUzBv4
>746 「ログオフスクリプト」で検索してみたら、
ttp://www005.upp.so-net.ne.jp/piron/soft/logoff.htm
確かにこっち使った方が簡単ですね。サンクス!
748名無しさん募集中。。:03/03/29 20:23 ID:tGJuT0rj
>737
Ctrl+Shift+Escでタスクマネージャを見れば同じ話だが、それだとExecutablePathが分からないので
CodeRedU対策も兼ねてちょっと作ってみた。
ttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1022248177&res=37&fi=no
Excelが入って無いと表示できないのはご愛嬌と言う事で。
749名無し~3.EXE:03/03/29 20:54 ID:II0mO8sg
>>748 ありがとうございます。でも、
GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery("SELECT ExecutablePath, ProcessId, KernelModeTime FROM Win32_Process")
この部分でエラーが出てしまいます。

Win XP Pro、WSH Ver 5.6です。
750名無しさん募集中。。:03/03/30 00:24 ID:twpkit9o
>749
XPで動作確認してみたけど特にWMIサーバに接続するところではエラーは出なかったので、
おそらくディフォルトの名前空間の違いだろうとは予想はつくものの、いまいちっと自信がない。
ttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1022248177&res=38
それとExcel依存をなくしてみました。
751737=749:03/03/30 02:08 ID:P8CLRQeh
>>750 たびたびありがとうございました。
でもやっぱりなぜかうちの環境では動かないんですよ。

作って頂いたものを参考にJavaScriptで書き直したら
一応なんとか動くものが出来ました。
全体でのCPU使用率はLoadPercentageでOKなんですよね。

var prc = GetObject("winmgmts:{impersonationLevel=impersonate}")
.ExecQuery("SELECT LoadPercentage FROM Win32_Processor");
var e = new Enumerator(prc);
var p = e.item();
WScript.echo( p.LoadPercentage );
752名無し~3.EXE:03/03/30 17:45 ID:nLz/ZcU7
Win98無印+WSH5.6環境です。
DOSプロンプト上でCtrl+C(アプリ終了)を実現したいと思い、
以下のようなスクリプトを試しに作ってみたのですが、
なぜかNumLockをオフにするキーコードが働いてしまいます。
Winアプリとはキーコードが違うのでしょうか?

因みにNumLockをオフにするキーコードのようですので、
スクリプト実行前にNumLockがオンになっていないと、
この現象が発生したことに気付かないと思います。
─────────────────────
option explicit

Dim WshShell, SendKey
Set WshShell = WScript.CreateObject ("WSCript.shell")
WshShell.run "command /K ping -t 192.168.0.1"

WScript.Sleep 10000

Set SendKey = WScript.CreateObject ("WSCript.shell")
SendKey.SendKeys "^C"
─────────────────────
753名無し~3.EXE:03/04/01 01:28 ID:CaoZPOh3
クリップボード使用サンプルキボンヌ
754名無し~3.EXE:03/04/01 05:18 ID:4zdIe0iz
DMonkeyだとこんなに簡単。
(new Clipboard).asText = (new Clipboard).asText.toUpperCase();
755名無し~3.EXE:03/04/01 22:13 ID:ZWvgKnCg
>>753
前スレのショッパナヨメ
756名無し~3.EXE:03/04/01 22:48 ID:efoWUCh9
アクティブではない一番手前にあるウィンドウを操作する方法を
教えてくださいな。
757名無し~3.EXE:03/04/02 06:48 ID:n4Q94Ljm
アクティブでないってのがいまいち意味不明だがDMonkeyだとこんなに簡単。
DLL = new DynaCall;
DLL.register('user32.dll', 'PostMessage', 'i=hcll', 'f=s', 'r=l');
DLL.register('user32.dll', 'GetForegroundWindow', 'i=', 'f=s', 'r=h');
Handle = DLL.GetForegroundWindow();
DLL.PostMessage(Handle, 0x0010, 0, 0);
758名無し~3.EXE:03/04/02 09:58 ID:M9bpjWDE
Dmonkeyスレになったのか、ここ?
759名無し~3.EXE:03/04/02 14:59 ID:IlscjiH5
DMonkeyのスレ立てようか?
760名無し~3.EXE:03/04/02 23:26 ID:1W9dYbiv
しつも〜ん
Microsoft.XMLHTTPを使ってダウソしたHTMLファイルから
DocumentObjectを作るにはどうしたら良いんでせうか?
InternetExplorer.Applicationを使うんならダウソもこっち
使った方が楽だなぁ。
761名無し~3.EXE:03/04/03 12:32 ID:DZNjqtZz
>>759
ECMAScript総合とかは?
広すぎるかな。
762名無し~3.EXE:03/04/03 13:54 ID:lEjF5cNL
>>761
VBScriptが
763名無し~3.EXE:03/04/03 14:22 ID:h/SMsbuB
バッチ処理全般
764名無し~3.EXE:03/04/03 14:42 ID:0MOdYwEi
質問させてください。
会社でWin2000使用し、各自のユーザ名でログインしている状態です。

ショートカットをクイック起動バー(クイックランチ)内に作成する場合
Set link = Shell.CreateShortcut(DesktopPath & "\◎◎.lnk")
この部分はどのユーザでも利用できるようにしたい場合どのように書けばいいのでしょうか?

クイック起動バー(クイックランチ)のフルパスは以下の通り
C:\Documents and Settings\ユーザ名.グループ名\Application Data\Microsoft\Internet Explorer\Quick Launch

765名無し~3.EXE:03/04/03 22:44 ID:IpRxFfD2
>>764
試してないけど、WshNetworkオブジェクトのUserNameプロパティで
ユーザー名を得てパスを生成すれば良いんじゃないかな。
http://www.microsoft.com/japan/developer/library/script56/wsprousername.htm
766765:03/04/03 23:06 ID:IpRxFfD2
ちがった、そんな面倒なことしなくても
WshShell.SpecialFolders("AppData") で十分だった。
767名無し~3.EXE:03/04/04 02:54 ID:zgDD9No2
>>638 のshell application が効かないマシンがあるんですが、何がいけないのでしょうか?

ちなみにWINNTマシンです。
768名無し~3.EXE:03/04/04 08:21 ID:5aq7itks
>>765=766
レスありがとうございます。
今確認したので、これから試してみたいと思います。
後ほどご報告します。
769名無し~3.EXE:03/04/04 08:38 ID:5aq7itks
>>765,766
動作しました。ありがとうござました。
770名無し~3.EXE:03/04/04 23:40 ID:5LoBTCiO
>767
Shell.ApplicationオブジェクトはInternet Explorer4.0をシェル統合モードでインストールしていないと使えません
771名無し~3.EXE:03/04/05 01:13 ID:eguymFX2
テキストファイルの文字列置換って、
一度ファイルを開いてから閉じるまで、
ひとつの文字列しか置換できないんですか?
一気に二個、三個の文字列を別々の文字列に置換するのは無理?
772名無し~3.EXE:03/04/05 02:46 ID:a6z/E/d9
>>771
>>735 の続きか?
いくらでもできるだろ
773保守:03/04/10 13:13 ID:PGf6DaoO
774名無し~3.EXE:03/04/10 13:29 ID:D41eTbu5
>>773
ブラクラ?
775名無し~3.EXE:03/04/10 14:05 ID:VFZaOJaP
>>774
やらないか・・・ だった。。。。。。
ひろゆき、おまえもか!!
776名無し~3.EXE:03/04/10 16:13 ID:D41eTbu5
>>775
見たけど、意味わからず。
説明してくろ。
777名無し~3.EXE:03/04/10 16:48 ID:5iLKMdhT
hoge = WScript.CreateObject("hoge")
hoge = new ActiveXObject("hoge")

どっち使っても同じですか?
778名無し~3.EXE:03/04/10 16:53 ID:FJjj3c3P
>>777
CreateObjectは第二引数でイベントをどうにか出来るらしい
779名無し~3.EXE:03/04/11 02:23 ID:IKT9O4uQ
WSHでレジストリのREG_BINARY値を読もうとするとエラーになりますが
これを可能にする方法またはActiveXご存じの方おられませんか?
780779:03/04/11 03:00 ID:IKT9O4uQ
自己解決しますた。配列に格納されるわけですね。
Array = Obj.RegRead(Reg_Binary_Value)
で読み出したものを配列として扱えばいいのか。
781名無し~3.EXE:03/04/16 17:34 ID:aefzn8sd
レジストリのサブキーやデータ名の一覧は取得できないのでつか?
RegRead では無理っぽいけど・・・
782山崎渉:03/04/17 11:32 ID:zaKXYlZf
(^^)
783名無し~3.EXE:03/04/17 13:16 ID:rEnj3MjB
sine
784名無し~3.EXE:03/04/18 10:19 ID:f+ANqcD/
ファイルやフォルダをゴミ箱に入れる方法を教えてください。
785名無し~3.EXE:03/04/19 17:42 ID:5fw6j0oV
wshを使ってCD-ROMドライブのejectは可能ですか?
786781:03/04/19 20:28 ID:BGndVqWi
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/enumkey_method_in_class_stdregprov.asp
ここのVBScriptをJScriptに直すにはどうすればよいですか?

On Error Resume Next

const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."

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

strKeyPath = "SYSTEM\CurrentControlSet\Services\WMI"
oReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubKeys

For Each subkey In arrSubKeys
WScript.Echo subkey
Next

787名無し~3.EXE:03/04/19 23:30 ID:eTi+a/C4
>>786
VBScriptとJScriptの両方を覚える
788名無しさん募集中。。:03/04/20 00:40 ID:8AoGynH/
>784
CreateObject("Shell.Application").NameSpace("C:\Documents and Settings\hogehoge\My Documents\test.doc").Items.Item.InvokeVerb "削除(&D)"
>785
CreateObject("Shell.Application").NameSpace("F:\").Items.Item.InvokeVerb "取り出し(&J)"

>786
全てインスタンスから生成するってのはダメかね。

var HKEY_LOCAL_MACHINE = 0x80000002;
var strKeyPath = "SYSTEM\\CurrentControlSet\\Services\\Wmi";

var oLoc = new ActiveXObject("WbemScripting.SWbemLocator");
var oSvc = oLoc.ConnectServer(null, "root\\default");
var oReg = oSvc.Get("StdRegProv");
var oMethod = oReg.Methods_.Item("EnumKey");

var oInParam = oMethod.InParameters.SpawnInstance_();
oInParam.hDefKey = HKEY_LOCAL_MACHINE;
oInParam.sSubKeyName = strKeyPath;
var oOutParam = oReg.ExecMethod_(oMethod.Name, oInParam);

aNames = oOutParam.sNames.toArray();

for(var i = 0;i < aNames.length; i++) {
WScript.Echo(aNames[i]);
}
789名無し~3.EXE:03/04/20 00:49 ID:ThDa30J4
htm内のスクリプトから、自信のフルパスを得る方法はありますか?
右クリメニュー拡張のhtml内で利用したいのですが、
WScript.ScriptFullNameが使えませんでした
790789:03/04/20 01:00 ID:ThDa30J4
あ、
document.location.pathname
だとパス内のスペースが %20 になってたので、
他にもエンコードされる文字があるかも知れないので
もし別の方法があるなら知りたいのです
791名無しさん募集中。。:03/04/20 01:28 ID:8AoGynH/
>789
window.location.pathname
言葉通りなら上記だろうけど、多分下記の事を言ってるんだろうな。
external.menuArguments.location

>788
自己レス。インスタンスを生成するメソッドの間違い。
それと、上の2行以外全てtry…catchでくくらないとならない。

>787
コレクションとしてインデクサ的にも扱えたら(特にoMethodあたり)VBSでは得られないメリットがあるんだけど…。
これじゃね。
792名無しさん募集中。。:03/04/20 01:36 ID:8AoGynH/
>790
失礼、見ずにカキコしました。
ちょっと、思いつかないなぁ。パス。
%数字の文字があればカスタム例外発火とか。
793山崎渉:03/04/20 05:46 ID:WgXFv/cQ
   ∧_∧
  (  ^^ )< ぬるぽ(^^)
794名無し~3.EXE:03/04/20 08:19 ID:ThDa30J4
>>792
ありがとう。
最初からJavaスクリプトにすればデコードも可能みたいなんですけど、
もともとVBスクリプトで記述された物(htmファイル十数個)を改造したいので・・・

今現在はReplaceで%20のみ置換で事足りてるんですが、
%数字を全部自前でデコードするよりもスマートな方法があればと思い、質問しました。
795786:03/04/20 13:24 ID:q6WpRA3D
>>788
ありがとうございます!できました。
でも思ってたのよりずっとややこしいので素直にVBSにします。
796名無し~3.EXE:03/04/21 04:04 ID:1EgCu/MK
>>794
%20などになってしまうのは、URIエンコーディングされてるんでしょ。
vbsにもescape 関数と unescape 関数が実装されているらしいから
それを使えば一発っぽい。

Dim str
str = unescape("hoge%20moge")
MsgBox str
797名無し~3.EXE:03/04/21 04:11 ID:1EgCu/MK
>>796は、MSがescape と unescape はURIデコード/エンコードに使うな!
と言ってるのを承知の上ね。
798名無し~3.EXE:03/04/21 21:14 ID:HFwUR7cF
M$ってほんと、きたない会社だな。
JScriptやVbScriptみてるとほんとに実感するよ、
799名無し~3.EXE:03/04/21 23:20 ID:FYj9PiqP
ちと教えて下さい。
AキーBキーにそれぞれ

Aキー=↓←B
Bキー=↓→A

のキーを送るファイルを作成し 割り当てます。
でもこれだと Aキーを押すと 最後のBキーを送る部分に反応してしまい
ループしてしまいます。これを防ぐにはどうしたらいいでしょう?
800名無し~3.EXE:03/04/21 23:44 ID:VwVOEjp+
>>799
Aさんが押されたとき、Bさんに
「いま処理中なんでよろしく」 と
電話をかければいい。

(゚∀゚)OK?
801名無し~3.EXE:03/04/22 00:27 ID:QA9InSC2
>>797
vbsにescapeとunescapeがあるの知りませんでした。
後で試してみます
ありがとう
802784:03/04/22 15:05 ID:ONk5n/CD
>>788
遅れましたがありがとうございます。
803名無しさん@Meadow:03/04/22 18:55 ID:dqAsMxep
wsh で IP アドレスをソートするうまい方法って無いでしょうか?
804名無し~3.EXE:03/04/22 20:02 ID:10Z8i+jh
StrCompと各種ソートアルゴリズム使えば出来そう
805名無し~3.EXE:03/04/22 20:52 ID:NUNXNy/m
32ビット整数に変換してからソートした方が速そうな気がする。
806名無しさん@Emacs:03/04/22 21:59 ID:2Y9272w7
Perl ならシュワルツ変換で一発ソート出来るんですよねぇ。

807名無し~3.EXE:03/04/22 23:01 ID:NHasfRBD
JScriptの配列に入れてsortメソッドじゃ駄目かえ?
808名無し~3.EXE:03/04/22 23:48 ID:Gr9AhRfK
>>800
んー もうちょっとヒントもらえませんか?
809名無し~3.EXE:03/04/24 18:10 ID:vTzUCQ7S
印刷やプリンタの設定ダイアログなどの出し方を教えてください。
810sage:03/04/26 03:16 ID:tk+TcTt2
どっかで、DHTMLとVBSだかなんかで、IEのツールバーが作れるという
デモをしているページを見た記憶があるのですが、どなたかご存じ
ないですか?

あの時ブックマークしておけばよかったとつくづく後悔中...
811名無し~3.EXE:03/04/26 03:49 ID:Ysz8rsZr
便乗質問。
テキストファイル等をを印刷したいんですが何かいい方法ないでしょうか。
一時的に整形したhtmlファイルを作成してieコンポの印刷機能とかですか?


812名無し~3.EXE:03/04/26 03:59 ID:6uleG2lG
>>811
ワープロか、テキスト印刷ソフトのほうがレイアウト調整が楽だと思うけど。
813 :03/04/26 04:04 ID:+oHZfc9f
自分が紹介した人が広告メールもらうたびに1円だってよ。
紹介した人が紹介した人、つまり孫だな。
そいつが広告メールもらっても1円。 メールは大体毎日一通くらい。
つまりな、自分が10人に紹介する(登録させる)
         ↓
そいつらが10人ずつ紹介する(登録させる)
         ↓
つまり、自分の子供と孫が110人になる。 んで広告メールが送られるたびに110円。
しかも子供と孫は半永久的に増え続ける。
一つわかってほしい。それは…怪しくない!
孫以下は収入にならない→つまりネズミ講じゃない。
メールもらって現金返還。このシステム知ってるだろ?
それのおいしい話だよ。
んじゃ、ここから登録してくれ。がんがれ。
http://www.we-love.to/paid/index.pl?id=kura0613
814名無し~3.EXE:03/04/26 04:13 ID:Ysz8rsZr
>>812
wordのヘルプみてみまつ。
815名無し~3.EXE:03/04/29 00:21 ID:BwGnRFR5
すみません、

WSHShell.AppActivate "Express" 'タイトルが"Express"で終わるウィンドウを探し、それを前面に表示させる。
WSHShell.SendKeys "^+M" 'Ctrl+Shift+MのキーコードをOutlook Expressのウィンドウに送る。「すべてダウンロード」のショートカットキーです。

↑ このようじゃなく、ウィンドウをアクティブにしないでキーを送りたいんですけど、不可能でしょうか?
816名無し~3.EXE:03/04/29 01:29 ID:2Gp0Uh3A
wsh単体じゃ無理
817名無し~3.EXE:03/04/29 13:31 ID:VvfdmlPV
DCOMについて詳しいサイトないかしら?
818名無し~3.EXE:03/05/04 18:55 ID:Q+ObosgI
もしMyProgramフォルダー中にP_Main.ldbというファイルが存在しなければ
同フォルダー中のP_Main.mdeというファイルを開いてよし
というふうにしたかったんですが、以下ではダメみたいです

Dim fs , MyFileName
Set fs = CreateObject("Scripting.FileSystemObject")
If fs.FileExists("C:\MyProgram\P_Main.ldb") = False Then
MyFileName = """C:\Program Files\Microsoft Office\Office\MSACCESS.EXE"" ""C:\MyProgram\P_Main.mde"""
Call Shell(MyFileName, 1)
End If

型がちがう、とか。
できたら何か助言ください
819名無し~3.EXE:03/05/04 21:01 ID:mXlSOrKM
何行目でエラー出た?
とりあえず
Set objWS = CreateObject("WScript.Shell")
を追加して、
Call Shellの部分を
objWS.Run MyFileName
にしてみろ
820名無しさん募集中。。:03/05/04 21:51 ID:dxSdFZR0
>810
本当にScriptオンリーだった?
WSCをRegsvrして\\HKLM\Software\Microsoft\Internet Explorer\Toolbar\{clsId}に登録
クラスのほうはIDeskBandとIObjectWithSiteとIPersistStreamとIInputObjectを継承せなあかん
mktyplibでインターフェイス定義したODLをタイプライブラリにコンパイル
後はわからんなぁ

>817
日本語のサイトではないねー。あってもよさそうな気がするんだが。
まぁ、WSHではコンポとして利用している形でしか利用できないし、WshRemoting以外では設定の変更すら必要ないからね。
821818:03/05/04 23:11 ID:N4RTAAyh
>>819
思いっきり感謝です
↓一発で行けました

Dim fs, MyFileName, objWS
Set fs = CreateObject("Scripting.FileSystemObject")
Set objWS = CreateObject("WScript.Shell")
If fs.FileExists("C:\MyProgram\P_Main.ldb") = False Then
MyFileName = """C:\Program Files\Microsoft Office\Office\MSACCESS.EXE"" ""C:\MyProgram\P_Main.mde"""
objWS.Run MyFileName
End If

どうもAccessVBAとごっちゃにしてたみたいです。
VBAも覚えたてみたいなもんですが、文法も大体一緒だし
この程度ならそのまま書いても動くだろうと思ってました。
甘かったです。
いま実験してみたんですが、

Call Shell("C:\WINDOWS\CALC.EXE", 1)

↑この書き方は、AccessVBAでは動いても、VBSではダメですね
822名無し~3.EXE:03/05/07 14:41 ID:3ahuWz44
HTMLでActiveX使ってお気に入りや履歴を埋め込み表示させることはできるのですが、、
IEやエクスプローラのエクスプローラーバーから実行出来る「履歴の検索」っていうもの可能なのでしょうか?
823名無し~3.EXE:03/05/07 18:05 ID:EstsbhRH
こいつのことか?

<object CLASSID="clsid:55136805-B2DE-11D1-B9F2-00A0C98BC547"></object>

ただしこれをぐぐってみたが資料は出てこなかったぞ。
全て手作業でプロパティなどを解析することになるがまぁ頑張れや。
ちなみにプロパティを弄ろうとすると警告が出る。むかつく…
824名無し~3.EXE:03/05/16 09:22 ID:j1GndTKx
age
825名無し~3.EXE:03/05/16 09:22 ID:j1GndTKx
age
826名無し~3.EXE:03/05/16 20:32 ID:TT6pzZjX
一つスクリプト書いてうまく動かなかったんで相談しようと思ったら、ついさっき自己解決してしまったすまん
827名無し~3.EXE:03/05/17 09:44 ID:M9U5nzGh
^{ESC}→F→F以外で、検索の「ファイルやフォルダ」を実行できますか?
タスクバーをアクティブ→F3の方法が分からない…
コマンドラインがあるといいのですが。
828名無し~3.EXE:03/05/17 11:33 ID:zi6b5o++
//ファイル検索
var objShell=new ActiveXObject("Shell.Application");
objShell.FindFiles();
829827:03/05/17 14:25 ID:M9U5nzGh
>>828
ありがとうございます
830名無し~3.EXE:03/05/22 01:30 ID:yRWXNZQL
あるフォルダ内に特定の拡張子のファイルがあるかどうかを調べるのに簡単な方法はないでしょうか?
地道に一個一個調べるしか手はないのでしょうか?
831山崎渉:03/05/22 02:05 ID:384Tt9yL
━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―
832名無し~3.EXE:03/05/22 12:30 ID:SZqiFKH0
WSH&VBSでリモートシャットダウン
できますか?
833名無し~3.EXE:03/05/22 12:31 ID:GkcAlJ8Q
834832:03/05/22 14:03 ID:SZqiFKH0
>>833
情報ありがとう
それでもできました

これでもできた
Set Locator = CreateObject_
("WbemScripting.SWbemLocator")
Set Service = Locator.ConnectServer_
("PC", , "User", "Password")
Set OsSet = Service.ExecQuery_
("Select * From Win32_OperatingSystem")


For Each Os In OsSet

Os.Win32Shutdown 2

Next
835名無し~3.EXE:03/05/26 23:17 ID:he+NAW6i
VBSでシステム環境変数を新たに追加したいのですが
可能ですか?

836名無し~3.EXE:03/05/26 23:17 ID:exTeOZeo
26才人妻です。ダンナがかまってくれないので、いつも一人でオナってます。
でも、けっこうオカズに困るんですよね。そんな時見つけたのがYUIS!!
安いし、安心して買えるしなかなかいいですよ!いつもバイブ物買ってます!

http://www.dvd-yuis.com/
837835:03/05/26 23:50 ID:he+NAW6i
失敬。レジストリだったのね。
失礼しますた
838名無し~3.EXE:03/05/27 01:56 ID:eV0TYa5W
wsh(VBScript)で、InternetExplorer.Applicationを叩いて、あるWebアプリの
自動運転をさせようとしてるんですが、NAME=の入ってないボタンとかラジ
オボタンを指定してクリックさせる方法ってありますか?

NAMEが入ってればそいつを指定してClick()すれば済むんですが、
ソースを見てもまるで入ってなくて、Webアプリ側は変更できないので
頭抱えてます。
839名無し~3.EXE:03/05/27 14:14 ID:TRyHdRGd
>>838
過去ログは見てないようね。>>22
840838:03/05/27 17:44 ID:UHs65vH3
>>839
ぐわ、こんな近所にあったとは。
回線切って練炭買ってきます…
841山崎渉:03/05/28 16:43 ID:hiv5bR9G
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉
842名無し~3.EXE:03/05/28 23:13 ID:E0zaKM5l
kidou.vbsからtest.vbsを起動してtest.vbsでエラーが発生した場合
kidou.vbsに戻ってきた時にエラーを取得する事はできますか?


kidou.vbs--------------
Set WSHShell = WScript.CreateObject("WScript.Shell")
errors = WSHShell.Run("test.vbs",1,TRUE)
msgbox "エラーは:" & errors


test.vbs---------------------------------
On Error Resume Next
Err.Raise vbObjectError + 1, "SomeObject" MsgBox ("エラー番号 " & CStr(Err.Number) & "aaa " & Err.Description)
843名無し~3.EXE:03/05/30 00:19 ID:xQ6MR/65
バッチファイルに設定した変数部分だけを書き換えたいのですが
どうやったらいいのでしょう?
844名無し~3.EXE:03/05/30 18:03 ID:5OTLeK2X
>>843
具体的に
845名無し~3.EXE:03/06/01 03:57 ID:0p/Izi6F
>842
'Run() の戻値は数値のみ取得できる
'test.vbs---------------------------------
On Error Resume Next
Err.Raise vbObjectError + 1, "SomeObject"
WScript.Quit Err.Number
846名無し~3.EXE:03/06/01 11:02 ID:5vdhQEi/
なんか標準出力に出したのを標準入力で受け取るみたいなことは出来ないのだろうか。
847842:03/06/01 12:26 ID:qsUjY2SL
>845
おお!有難うです。できますた。
848名無し~3.EXE:03/06/02 11:02 ID:ZP5D/cRG
test
849名無し~3.EXE:03/06/05 14:40 ID:Ro/jna+k
フォルダの容量を監視しようと思い、まずは表示をと思って以下のように
書いて実行してみました。
------------------------------------------------
Set FSO = CreateObject("Scripting.FileSystemObject")
Set fol = FSO.GetFolder("c:\foldername")
str = str & "size:" & fol.Size
MsgBox str
------------------------------------------------
で、問題は大きなフォルダ(100GBとか)に対して実行すると以下のエラー
が発生します。
-------------------------
エラー:書き込みできません。
コード:800A0046
-------------------------
これを回避するにはどうすればいいのでしょうか?・・・

10GB程度であれば問題ないことは確認しているのですが・・・
850名無し~3.EXE:03/06/09 18:10 ID:3mnOby/s
>>849
100GとかのHDD持ってないからわからん・・・
とりあえず
i = fol.Size
str = str & "size:" & i
MsgBox str
にしてもダメなようなら、あきらめるしか
851名無しさん募集中。。:03/06/09 23:40 ID:wMZaRMTK
>849
ダミーファイルの作り方キボン。当方Win2k
COPYコマンドだとメモリに展開するよ。。
今んとこ、2GでHDDがヒーコラ言ってる。
852名無し~3.EXE:03/06/10 13:47 ID:3kErpLGb
>>851
XPだと↓があるけど、Win2Kは(  ′∇ソ ヨーワカラン
http://www.atmarkit.co.jp/fwin2k/win2ktips/243largefile/largefile.html
853名無し~3.EXE:03/06/10 19:47 ID:m/jyZmOg
普通にファイル開いて延々とwriteしていくのでは駄目なんだろうか。
854名無しさん募集中。。:03/06/10 21:57 ID:hX4nl3cS
>852
そそ。それが出来たら一番スマートだねということです。NTFSの仕組みを使っているんだし。

>853
そのように作っても文字列の最大長が2GBなんですよ。
現実的には、全てオンメモリで処理する事になるから実装メモリの3割ぐらいが限界。
文字列加算する領域は残されていないし、上記制限があるので追記モードで追加して
これで30分で約2GB。時間対比で飽和しないようであればわりかし分は良いほうかな。
855名無し~3.EXE:03/06/11 21:02 ID:4E/myD5C
ファイルの頭から順にすなおに書きこんでいくと遅い。

ふつうは存在しない位置までシークしてから書きこむとシークしたサイズのファイル
ができる。
856名無し~3.EXE:03/06/11 21:22 ID:vgrZXB5o
>>855
それだと、NTFSでは穴あきファイルができちゃうので
場合によっては使い物にならなかったりする。
857名無し~3.EXE:03/06/11 21:28 ID:+PxJmKHL
これで1Gしか作れないんだけどなんでだろう…?

#include <fstream>
#include <windows.h>
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
std::fstream fs("test", std::fstream::out);
for(int i = 0; i < 3; i++) {
fs.seekp(1024 * 1024 * 1024, std::fstream::end);
fs << 0 << std::endl;
}
fs.close();
MessageBox(NULL, "完了", "完了", MB_OK);
return 0;
}
858名無しさん募集中。。:03/06/12 00:53 ID:+veoITCF
>855
そのやり方はWSH(ADODB.Stream)では出来なかったのであきらめます。
http://www.microsoft.com/japan/developer/library/ado260/mdproposition.htm
を見ると出来そうな感じに書いてあるんだけどね。

>857
ポインタ範囲の問題だろうとは思うが2GBなら分かるけど何故1GB?
良く知らんけどseekpメンバ関数の第一引数の型ってint (-2147483648〜2147483647)じゃないのかね。

ところでstd::fstream::outだけでなくてstd::ios::ate | std::ios::appも追加して繰り返せばよくない?
まず確認するはコンパイラ探してこないことには、こっちではなんとも言えんが。

>856
857のやり方はnullで埋めるので該当すると思うけど、ディスク領域を潰す目的は達せないでしょうか?
859856:03/06/12 02:09 ID:NNTgJ8C5
>>858
ごめん、なんか勘違いして覚えてたようだ。
http://www.microsoft.com/japan/developer/library/jptech/msdnnews/ntfs2.htm
ここの「スパース ファイル」の項目を見てくれ。
ファイルを書くときに明示的に「疎なファイル」と言ってやらないと
穴あきファイルはできないようだ。
860名無し~3.EXE:03/06/12 11:27 ID:f3ONe/tl
Dim source,destination,fs
Set fs = CreateObject("scripting.FileSystemObject")
source = ("D:\A.csv")
destination = ("D:\X.csv")
fs.CopyFile source, destination,True

でknfd0006A.csvがX.csvという名前でコピーされますが
A.csv〜D.csvを結合させてX.csvというファイルを作る場合は
どのようにしたらよいのでしょうか?

A〜DのCSVファイルのフィールド数はそれぞれ違うのですが問題ありますでしょうか?

コマンドプロンプトでは
Copy A.csv+B.csv+C.csv+D.csv X.csv
で出来ることをWSHで行いたいのですが…
宜しくお願いします。

861870:03/06/12 11:28 ID:f3ONe/tl
knfd0006A.csvはA.csvの誤記です。スミマセン
862名無しさん募集中。。:03/06/12 19:46 ID:+veoITCF
>859
了解。自動的に妨げる物ではなく、プログラムで制御して初めて使える代物なんだね。

>860
コマンドラインでできる事ならそれでやろうよ。
CreateObject("WScript.Shell").Run "cmd /c Copy A.csv+B.csv+C.csv+D.csv X.csv", 0, True
863名無し~3.EXE:03/06/13 07:10 ID:VfDQPzUe
OfficeのファイルからVBスクリプトで、ファイルの作成者って取り出せますか?
ファイルシステムオブジェクトじゃ取得できないですよね?
864860:03/06/13 08:43 ID:fSv1GTVO
>>872
レスどうもです。
このスクリプトをMS-Access上から実行させようとしているんですが…
※これはAccess側のことなので他の掲示板で確認

これで対処しました。

Dim WSH
Set WSH = CreateObject("WScript.Shell")
WSH.Run "cmd /c Copy /b D:\?.csv A:\X.csv",1,true

※フルパス指定なのはAccess側の問題とのことです。
※書き出し先をFDD(A:\)にしました。
865860:03/06/13 08:45 ID:fSv1GTVO
レス先間違えABoneの調子が…
872ではなく>>862さんでした。スミマセン
866名無し~3.EXE:03/06/13 12:55 ID:PYWb+NP5
>863
ttp://support.microsoft.com/default.aspx?scid=kb;ja;253338
中の Office ドキュメント プロパティを取得または変更する ActiveX サーバー の所

ここではガイシュツじゃないから出来たらサンプルキボン
867名無し~3.EXE:03/06/13 14:22 ID:bi1VcEOo
>>866 VBのサンプルついてるし

Set oFilePropReader = WScript.CreateObject("DSOleFile.PropertyReader")
Set oDocProp = oFilePropReader.GetDocumentProperties("C:\test.xls")

On Error Resume Next
WScript.Echo "Name: " & oDocProp.Name
WScript.Echo "AppName: " & oDocProp.AppName
WScript.Echo "Title: " & oDocProp.Title
WScript.Echo "Author: " & oDocProp.Author
WScript.Echo "Comments: " & oDocProp.Comments
868名無し~3.EXE:03/06/16 18:00 ID:OxxNJfel

VBSで、あるファイルのショートカットを、スタートメニューに入れる〜

ただのコピーで済むと思ったら、Win9XとXP2Kではスタートメニューの場所が
違うんですね(何だか、XP2Kではドキュメンツアンドセッティングスとかいう
フォルダーの奥深くにありました。それもユーザー別に分かれてたりして、
頭かかえてしまいました。当方98以外あんまりいじったことはありません)

これ、どんなOSでも通用するようなやり方ってありますか?
事前にOSの種類を特定してケースわけする、みたいな段階を踏むのかな。
とか考えてみましたけど、VBSでOSの種類を知る方法ってのもよく分かり
ません。
869名無し~3.EXE:03/06/16 18:03 ID:5CL6pILA
環境変数で区別してみる
9x系にはあるが、NT系にはない。またその逆。
870名無し~3.EXE:03/06/16 18:15 ID:tZfMxCbB
871868:03/06/16 20:56 ID:tApB+CEj
>>869
>>870
即レス感謝します
いま別な仕事が入ってしまい、すぐには試せませんが、自宅でやってみます。
環境変数、という言葉はお初です(当方ピュアとーしろ)
これも調べてみます

urlは2段で一つだったんですね。ちょっと迷いました。

ではでは
実験結果は後ほど報告します
872名無し~3.EXE:03/06/19 06:47 ID:wshXXsKx
IDがwshだったので記念に
873871:03/06/20 00:29 ID:Xd1LMNFq

ふう・・・
久しぶりに自宅のPC、ネットにつながった。
あれこれ考えたあげく、たぶんいちばん野暮ったいと思われる方法に落ち着きました

If fs.FolderExists("C:\Documents and Settings\All Users\スタート メニュー\プログラム") = True Then
・・・・・
Else
If fs.FolderExists("C:\WINDOWS\スタート メニュー\プログラム") = True Then
・・・・・
End If
End If

ってなところで。
なんだかレベルの低い質問で,失礼しました。

874名無し~3.EXE:03/06/20 01:44 ID:j91hk2Td
>873
set WshShell = WScript.CreateObject("WScript.Shell")
strPrograms = WshShell.SpecialFolders("Programs")
set SLink = WshShell.CreateShortcut(strPrograms & "\ショートカット スクリプト.lnk")
SLink.TargetPath = "c:\実体のpass"
SLink.Save
875名無し~3.EXE:03/06/20 10:27 ID:C0W5r+IA
wsh で処理しようとすると,ドロップするファイル数に限度があるようです。
回避する方法として,フォルダをドロップしようと考えていますが,
下記のどこを変えたらよいですか?

set arg=wscript.arguments
set fs=createobject("scripting.filesystemobject")
if 0<arg.count then
for each item0 in arg
set file=fs.getfile(item0)
876874:03/06/20 11:05 ID:hel5n2tL
あっ
めちゃくちゃ恥ずかしい間違いしてる(汗
passじゃねーよボケ<自己突っ込み
877873:03/06/20 11:17 ID:Af9UeNHb
>>874
あらら、数分違いの書き込み
有り難うございます

passって・・・あ、いや、気にしないいいです、そこはどっちにしろ書き換える部分
ですし。意味は分かりますから。

スペシャルフォルダーって言葉は御案内のURLで確かめましたけど、
クリエイトショートカットとかターゲットパスとかいう書き方は知りませんでした
(考えてみれば、いかにもという感じの『英文』)
OfficeのVBAエディターだと、当てずっぽうの英単語書いてドット入れるだけで、
たまに上手くいくことがありますけど、メモ帳でやってるとそのへんつらいですね

では、職場からにつき、このへんで
878名無し~3.EXE:03/06/20 11:50 ID:nPzj7M6T
>>873
もう解決?しているみたいだけど
そのスクリプトではデュアルブートの環境の人だとショートカットが2つずつできて
いや〜んな予感。
NT系OSだとルートがC:\ とは限らないし。
ユーザが1人ではないPCでやるとみんなにショートカットが見えて…
879名無し~3.EXE:03/06/20 16:13 ID:C0W5r+IA
>>875 です。

set arg=wscript.arguments

だと,「実行出来ません。引用一覧が長すぎます。」とエラーが
出るんですが,何か対処方法はありませんか?
880名無し~3.EXE:03/06/20 19:04 ID:GvzheMDA
wscriptとcscript
どっちがいいですか?
881名無し~3.EXE:03/06/20 19:16 ID:sBTW5ti6
>>879
「実行できません。引数一覧が長すぎます。」
通常このエラーは、Windows Script Host のドラッグ アンド ドロップ機能を使用しているときに発生します。Windows スクリプト ファイル上にドロップしたファイルが多すぎると、このエラーが発生します。

このエラーを解決するには
引数リストが短くなるように、ドラッグする項目の数を減らします。

メモ スクリプトにドラッグできるファイルの数は、システムで許容されるコマンド ラインの長さの上限によって決まります。

参 照
ドラッグ アンド ドロップのサポート | コマンド ライン オプションが一致しません。



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

c 2001 Microsoft Corporation. All rights reserved.
882阿呆:03/06/20 21:16 ID:lEjZ71x/
WSH,WMI,HTA を使って、カッコよくネットワーク設定(TCP/IP)を変更するツール
どっかにないですか?
883名無し~3.EXE:03/06/21 00:17 ID:bBinYEvL
そこで,ドロップではなく,フォルダを選択させて,
その中の全ファイルを読み込ませたいのですが,
そのための命令がわかりません。
それとも,フォルダを選択するようにしても一緒でしょうか?>>881

それぞれどう違うのでしょうか?>>880
勉強不足で済みません。
884名無し~3.EXE:03/06/21 00:23 ID:I2r1mCn9
885名無し~3.EXE:03/06/21 00:32 ID:9hfTAttj
WSHってなんて読んでる?ダブリューエスエイチ?UNIXっぽくダブルシェル?
886名無し~3.EXE:03/06/21 00:46 ID:QE8OoYR9
shはシェルじゃないだろ
887名無し~3.EXE:03/06/21 00:50 ID:fCZ00dxl
脳内でIをたしてウィッシュって読んでるのは俺だけ?
888名無し~3.EXE:03/06/21 01:34 ID:1D3WI1SH
>>886
shはBourneという人が作ったシェルだが。

と微妙に勘違いしてみるテスト。
Windows Scripting Hostの略だからシェルじゃないね。
889名無し~3.EXE:03/06/21 02:02 ID:CW3AQSdR
ういんどうずすくりぷとほすと
890名無し~3.EXE:03/06/21 02:15 ID:8dF1wXrH
うしゅ
891名無し~3.EXE:03/06/21 02:22 ID:kwud7/FT
なんつーか、

var wsh = WScript.CreateObject("WScript.Shell");
892名無し~3.EXE:03/06/21 03:30 ID:AEv++kcZ
>>883
Set arg=WScript.Arguments
Set fs=CreateObject("Scripting.FileSystemObject")
For Each item0 In arg
If fs.FileExists(item0) Then
e fs.GetFile(item0)
ElseIf fs.FolderExists(item0) Then
r fs.GetFolder(item0)
End If
Next
WScript.Quit

Sub r(f)
For Each f1 In f.Files
e f1
Next
For Each f1 In f.SubFolders
r f1
Next
End Sub

Sub e(file)
WScript.Echo file.Name
End Sub
893名無し~3.EXE :03/06/21 10:59 ID:bBinYEvL
ありがとうございます。>>892
下記のスクリプトに、それを組み込む場合、どこに入れたらよいですか?

strDir="c:\test"

Set arg=WScript.Arguments
Set fs=CreateObject("Scripting.FileSystemObject")

if 0<arg.count Then
For Each item0 in arg
Set file=fs.GetFile(item0)
ofldr=strDir&"\"&left(file.name,4)
if not fs.folderexists(ofldr) Then fs.createfolder ofldr
fs.movefile file,ofldr&"\"
next
end if
894阿呆:03/06/21 17:06 ID:mBIneOAn
WSH,WMI,HTA を使って、カッコよくネットワーク設定(TCP/IP)を変更するツール
どっかにないですか?
895名無し~3.EXE:03/06/21 18:19 ID:JniHlMVC
カレントディレクトリの変更はどうやったらいいんでしょう。

現在のディレクトリからの相対パス指定では、問題がある外部ソフトがありまして、
カレントディレクトリの変更が必要なのです。

環境は、jscriptです。
896名無しさん募集中。。:03/06/21 20:30 ID:X+SPUdgF
言語の違いじゃなくセキュリティコンテキストの違いだってのがどうして理解・定着しないんだろう。
(ここを見ている人には関係の無い愚痴です)

>895
例えば、こんなので。
new ActiveXObject("WScript.Shell").CurrentDirectory = "C:\\Program Files\\aaaa\\";

>894
ツールが欲しい訳?
ttp://www.kawabata.com/ips.asp
このぐらいしか見つからないが、
作るならWin32NetworkAdapterConfiguration を調べる事を勧める。

>872
おめでとー。
897阿呆 894:03/06/22 15:23 ID:E51YcxgF
>>896
結局自分で作っています。
リストボックスから選択してネットワーク設定をするHTAを作り中です。
ここで質問なのですが、
StaticからDHCPに変更したときに、デフォルトゲートウエイが残ってしまいます。
(グレイアウトされた項目の設定値なのでDHCPの動作は問題ないのですが、気持ち悪いです)
デフォルトゲートウエイを空白にする方法はないでしょうか。
SetGateways(strGateway, strGatewaymetric)
を使うとは思うのですが、それぞれに設定する値がわかりません。
これは擦れ違いな質問でしょうか。。。
神様、どうか教えてください。
898711:03/06/23 17:41 ID:rGk3vVss
IEからリンクをクリックしてローカルのアプリケーションを起動・制御させるために
JScriptのactiveXObjectで起動をかけようと思ってます。
例えばExcelを起動させようとしたら
<script language="jscript"><!--
function startExcel()
{
var ExcelSheet;
ExcelApp = new ActiveXObject("Excel.Application");
ExcelSheet = new ActiveXObject("Excel.Sheet");
ExcelSheet.Application.Visible = true;
}
// --></script>
のようにすれば起動はかかるのですが、
ProgID(この場合はExcel.Application)に
.Applicationがついてないアプリケーション(例えばMediaPlayerだったらProgIDは
MediaPlayer.MediaPlayerですが)
の起動の仕方がわかりません。
どなたかご存知ありませんか?
当方、MSNメッセンジャやその他もろもろをIEから起動して制御したいと思ってま
す。
また、activeXObject以外の方法でIEからローカルのアプリケーションを起動して制
御する方法があれば教えてください。お願いします。
OS version:IE6.0
899名無し~3.EXE:03/06/23 18:29 ID:fHGYukAq
>>898
IEのソース閲覧プログラムをスクリプトにし、送られたファイルを実行できるようにする
スクリプトからlocation.href="view-source:file://〜で実行
詳しい仕組みは忘れたけどこんな感じで実現してる
900711:03/06/23 18:59 ID:rGk3vVss
>>899
location.href使った場合のソースつけてくれませんか?
901名無し~3.EXE:03/06/23 19:02 ID:CQCzlFax
.zipや.cabを生成・展開することはできますか?
902名無し~3.EXE:03/06/23 19:23 ID:mM9vbjrB
IEなんて使うもんじゃない。
なにされるかわからん。
903名無し~3.EXE:03/06/24 06:13 ID:/wfxJbj2
>>901
WSH固有のメソッドや関数を使っては無理。
コマンドライン版のアーカイバと併用する。
904名無し~3.EXE:03/06/24 18:20 ID:6o37sGGC
>>883
>それぞれどう違うのでしょうか?>>880

WScript と CScript のどちらを使用していてもスクリプトの実行方法は基本的に同じです。
唯一の違いは、出力の形式にあります。
WScript では出力が Windows のダイアログ ボックスに表示されるのに対し、
CScript ではコマンド ウィンドウが開かれ、その中に出力が表示されます。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/script56/html/wsrunwscript.asp
905名無し~3.EXE:03/06/24 19:21 ID:22uvJwic
>>904
あとそれから、CScriptは標準入出力が使えるね。
906阿呆 894:03/06/24 21:26 ID:wYrQ0Hzk
NTのアカウントドメインにログオンして、VBS(WMI)でIPアドレスを変え、その後もとのIP設定に戻すと(これもVBSで)
ホームドライブはじめネットワークドライブがマップできなくなるんですが、これは何でしょうか。
その障害が出ているときに、コマンドラインで NET USE X: \\NAME\SHARE をするとエラー1231が出ます。
IPを変えると、ドメインにログオン認証しているデータ無効になるのでしょうか…
ちなみにOSは2000です。
907阿呆 894:03/06/24 21:28 ID:wYrQ0Hzk
追加情報です。
GUI(ネットワークのプロパティ)で、他のIPに変更し、また元に戻した場合は
ネットワークドライブは問題なく利用できます。
908名無し~3.EXE:03/06/25 13:24 ID:5JRQH+vS
>>862
うおおお、ASPからコマンド実行する方法知りたくて
ココきたんだけど、まじでありがとう
909名無し~3.EXE:03/06/25 13:55 ID:Do2+Cu5X
W=Windowsダイアログ
C=コマンド
そういう意味だったんですね。

どちらでも良いのですが,
出来ればフォルダの居場所を聞いてきて,そのフォルダ内のファイルを処理したいので,
WScriptになるでしょうか。
910名無しさん@Meadow:03/06/25 17:19 ID:SiMbi29B
>909
レベル低杉、帰っていいよ。バイバイ
911名無し~3.EXE:03/06/25 18:28 ID:LEaS2oqg
cscriptだとリダイレクトとか使えるですか?
こんな↓感じで
cscript hoge.vbs > a.txt
912阿呆 894:03/06/25 22:02 ID:7bRtOMYL
>910
そんなレスつけてないで、俺の質問(897, 906,907)に答えてくださいよ。
>911
やってみりゃわかることだぞ
質問の文字数より短いコードで試せるだろう(笑)
913阿呆 894:03/06/25 22:04 ID:7bRtOMYL
>909
WMIのVBSだけど、これカッコいいよ。
------------------------------------------
Const WINDOW_HANDLE = 0
Const NO_OPTIONS = 0
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder _
(WINDOW_HANDLE, "Select a folder:", NO_OPTIONS, "C:\Scripts")
Set objFolderItem = objFolder.Self
objPath = objFolderItem.Path
objPath = Replace(objPath, "\", "\\")
strComputer = "."
Set objWMIService = GetObject _
("winmgmts:" & "!\\" & strComputer & "\root\cimv2")
Set colFiles = objWMIService.ExecQuery _
("Select * from Win32_Directory where name = '" & objPath & "'")
For Each objFile in colFiles
Wscript.Echo "Readable: " & objFile.Readable
Next
914阿呆 894:03/06/25 22:11 ID:7bRtOMYL
おい Windows2000で スクリプト使って
コンピュータ名を変更することできないのか???
915名無し~3.EXE:03/06/25 22:20 ID:Ye/omHrx
スクリプトからレジストリ弄るってのはダメ?
916阿呆 894:03/06/25 23:17 ID:7bRtOMYL
>>915
host名にも関連するし、ユーザプロファイルにも影響するだろう。
レジストリを弄るにしても、発見しただけで1桁じゃ済まない個所あるね。
(バイナリになって登録されてたら手が出せない)
取得なら簡単だが、変更は大変そう。
XPなら一発でできるのにね…
917名無しさん募集中。。:03/06/26 00:09 ID:R8tlvqL6
>898
幅が広すぎる。
普通のCOMを制御したいという意味であれば
IDispatchを継承(Implementsの意)されていないものなら制御できない。
EXEを実行すれば良いって解釈でよいならRunメソッドで実行すれば良いだけだろう。
IEの埋め込みでメディアプレイヤーならサンプルはありがちだが以下のように
<html><head><script>
function musicstart() {
MPIEEm.FileName = document.forms[0].filename1.value;
return 0;
}
</script></head>
<body>
<object id="MPIEEm" width=200 height=200 classid="CLSID:22D6F312-B0F6-11D0-94AB-0080C74C7E95"
codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,4,5,715"
type="application/x-oleobject">
<param name="AutoStart" value="true"><param name="ShowControls" value="true">
<embed type="application/x-mplayer2" pluginspage="http://www.microsoft.com/Windows/MediaPlayer/"
autostart="true" showcontrols="true"></embed>
</object><form><input id="filename1" type="file" onchange="musicstart()"/></form>
</body></html>
メッセンジャは良く分からん。誰か制御できたら教えて。

>897>906
WMIはOS依存の部分がかなりあってVerupできないってのが制限としてあって、
細かい改良は次のOSでとかあるんだよね。
それがそうかは検証してみないとわからないけど。
また897は引数が範囲外ならエラーになるから無理でしょう。
SetGateways(strGateway(), lngGatewayCostmetric())の二つの引数は同序数のArray()で渡す、と。φ(..)メモメモ

>908
良かったですね。CMDは強力なのでセキュリティには気をつけて。
918阿呆 894:03/06/26 08:00 ID:EMXHnf92
おい DNS の設定もできねーぞ!!!!!!!!!!!!!
SetDnsServerSearchOrder(DNS)
まともに動かねえよ。まじかよ。
なんか探したらこんなのあるし。
http://support.microsoft.com/default.aspx?scid=kb;ja;319021
なんで英語版Win2000SP3で改良されてて、日本語版はSP4からなんだよ。
そんなことあっていいのかよ。
つうか、Win2000SP4リリース開始しましたねえ(擦れ違い)
919711:03/06/26 12:38 ID:PIc7Or1i
>>917
まず、アドバイスありがとうございました。
ちょっとシステムを見直してみて、また何かありましたら質問します。
920名無し~3.EXE:03/06/27 19:10 ID:we9/usey
HTMLドキュメントの文章をvbCrLfでsplitしたいのですが
Javascriptではどのように改行を判断して区切りたいのですが、、、

エスケープ文字ではなくて
VbsにあたるvbCrLfみたいな定数はありますか?
921名無し~3.EXE:03/06/27 19:17 ID:we9/usey
おっとできますた
スレ汚しすいませんでした。。
922名無し~3.EXE:03/06/27 19:21 ID:vixEPYDe
>>920
VBにはエスケープ文字がないから、わざわざそんな使いにくい定数が用意されているのではないだろうか?
それとも vbCrLf ってなにか特別な機能があるの?
923名無し~3.EXE:03/06/29 01:06 ID:0ZE2bVHc
なんだかんだで900overか・・・。次スレはどうなるのか。
924名無し~3.EXE:03/06/29 18:30 ID:0TJXi/nf
>>897
wshよりnetshのほうがいいような。
925名無し~3.EXE:03/07/01 08:05 ID:LK8ACGm8
Wscript.Run でコマンドの文字列として 「"」を使いたいのだけれど、どう書けばいいですか?
具体的には .Run"C:\***.exe *** "+++" *** *** *" こんなかんじで 引数の+の部分を
""でくくりたいんだけれど。
926名無し~3.EXE:03/07/01 12:26 ID:gTN7HUHb
>>920
甘えるな!
VBなんか忘れちまえ
927名無し~3.EXE:03/07/02 22:51 ID:7HflON/m
>>925
""
928名無し~3.EXE:03/07/03 00:20 ID:NqR5S4sm
>>925
.Run "C:\***.exe *** " & Chr(34) & "+++" & Chr(34) & " *** *** *"
929名無し~3.EXE:03/07/03 00:25 ID:0oueYE5n
>>928
.Run "C:\***.exe *** ""+++"" *** *** *"
930名無し~3.EXE:03/07/03 01:18 ID:iAPXgnhp
>>925
.Run('C:\\***.exe *** "+++" *** *** *')
931名無し~3.EXE:03/07/04 20:24 ID:p3wqX95u
>>929-930
それじゃ動きませんでしたよ?
932名無し~3.EXE:03/07/04 20:59 ID:eZchpxX3
ネタだと思ったのか。哀れな。
933名無し~3.EXE:03/07/05 22:39 ID:6PPCfpNR
むかしMSからJScriptドキュメント日本語版のダウンロードができたような気がするのですが
今探したところ見つかりませんでした。
どなたかご存知ないでしょうか?
934名無し~3.EXE:03/07/05 23:01 ID:tI2Ynx/O
935名無し~3.EXE:03/07/05 23:02 ID:tI2Ynx/O
936名無し~3.EXE:03/07/05 23:23 ID:j08i7L0p
あのー、HTML保存の話なんですけど、
objIE.document.body.createTextRange
みたいにやるとタグが持ってこれないです。
125さんのobjIE.document.body.parentElement.outerHTML?
だとなんもかけない?です。
よくわかってないのですが、お助けしていただけないでしょうか?
937936:03/07/05 23:41 ID:j08i7L0p
すいません、できました
938名無し~3.EXE:03/07/07 13:59 ID:edVUnzkx
Now関数って普通は"<日付> <時刻>"を返すはずだと思うんだけど、00:00:00
きっかりに実行した場合(タスクスケジューラとかで)に限って"<日付>"しか
返さないんだけど、これって最新バージョンでは修正されてるのかな?
939名無しさん募集中。。:03/07/07 23:49 ID:yC+fMH5R
>923
無理は言わないけど、11さんにスレ立てしてもらいたく所存。
>1の特に私見の部類はバッサリ変更してね。

>924
これは。。全く持ってそういう用途だよなぁ。知ってたらWMIを勧めなかったけど、
かなりの所出来ているようなので、乗り換えもまた勧めない。
netshのKBを見るところまた同様の悩みは出てくるはず。
また、ネットワーク設定をファイルにストア・リストアする用途はとても汎用的に思う。

>932
質問者はWscriptと言っているからInsensitiveなスクリプト言語を使用している事が予想される。
おそらくVBSしかない。

>938
これは仕様だからいかんともし難い。
MsgBox #2003/7/8 00:00:00#
こういう問題に遭遇しないためにも時刻型は自分のルールに沿った文字列に変換する関数を作るべき。
自分はいささかパラノイア的だが、こんなのを作って置いて備えている。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1022248177&res=39&fi=no
940名無し~3.EXE:03/07/07 23:57 ID:QdiAogoy
どの辺がパラノイア?
941名無しさん募集中。。:03/07/08 12:47 ID:Kl/CgIeK
>940
元号関係が不要なとこまで作っていること。
本来明治より前は太陰暦だから初年末年ボーダーは間違えているのに
942名無し~3.EXE:03/07/08 13:34 ID:+jwGZjhn
パラノイア
精神病の一つ。患者が抱く妄想は論理的には一貫しており、行動・思考は秩序が保たれている。偏執病。

Kokugo Dai Jiten Dictionary. Shinsou-ban (Revised edition) © Shogakukan 1988
国語大辞典(新装版)©:小学館 1988


…多分あなたは精神病を患ってはいない。
943924:03/07/09 02:06 ID:Y3Ww/hj9
>>939
> >924
> これは。。全く持ってそういう用途だよなぁ。知ってたらWMIを勧めなかったけど、
> かなりの所出来ているようなので、乗り換えもまた勧めない。
> netshのKBを見るところまた同様の悩みは出てくるはず。
> また、ネットワーク設定をファイルにストア・リストアする用途はとても汎用的に思う。

手動でIPアドレスの設定をやっておいて、コマンドプロンプトから下記を実行。

netsh interface ip dump > setting01.nsh

必要なだけ繰り返して設定ファイル作成。あとは、wshから設定を選択させて、

netsh -f setting01.nsh

などと実行させればよい。面倒なんで試してないけど、この方法なら、
DHCPに設定したときにデフォルトゲートウェイの値が残るようなことはないと思う。
944名無し~3.EXE:03/07/09 09:59 ID:WThBaBuF
http://pc.2ch.net/win/kako/1009/10091/1009175619.html
の151のIEコンテキストメニューで「引用符付き貼り付け」を使用したいのですが
ウィンドウが背面に隠れる問題を解消するためにはどの部分をどのように変更すればいいのでしょうか?
(レス番 151-156 です)

検索して GetObject を試したり
>>636
>>638
を参考にして試したりしたのですがどうもできません

多分すごい低レベルな質問だと思うのですが
わかる方お願いします
945933:03/07/10 01:48 ID:JgmvaJx4
>>935
おおーそれです。scd56jp.exeがドキュメントのアーカイブなんですね。
最新版のWSH実行プログラムのページだと思ってちらっと見てスルーしてました。
大変助かりました。ありがとうございます。
946名無しさん募集中。。:03/07/10 23:14 ID:S91DLjCN
>942
(((゚д゚;)))ちょっと怖かったよ。
コードの執拗さも自分の首尾一貫の態度の取れなさも足りないんだろうな。
まぁ、思うところはあったが板違いなので手短に。

>943
これは便利。
コンテキストのツリーの概念からして始めて見る物だ。
理解と検証をするにはそれなりに使ってみないと分からないな。
ただネットワークが使えなくなると平日の酒のつまみがなくなるので痛い。検証はちと躊躇。

>944
document.title ( + " - Microsoft Internet Explorer")を使ってAppActivateしちゃいかんですか?
947名無し~3.EXE:03/07/11 21:16 ID:oMkL2Dfh
>944
Set win = external.menuArguments
Set rng = win.document.selection.createRange()
Set oClip = window.clipboardData

sData = oClip.getData("text")
以下同じ...
948名無し~3.EXE:03/07/11 21:51 ID:FjHkitQJ
949名無し~3.EXE:03/07/11 23:03 ID:HCNAuxyl
クレバーな皆様にご質問させてください。

あるテキストファイル(foo.txt)があって、その内容の1文字だけを
書き換えたいのですが、もっともスマートな方法はどうしたらいいでしょうか。

以下の2003の 3を 4にするとか。

----foo.txt----
a = Windows Server
b = 2003
c = Service pack 4
---------------
950944:03/07/11 23:40 ID:1BDw8DI/
おおぉーーーーー947さん、ありがとうございました。
それでばっちりできました。速度も速くなりました。

946 のは試したら「サポートされていません」とエラーが出てしまいました。

レスくれたお二人、感謝感謝です。
951名無し~3.EXE:03/07/12 04:04 ID:elKqYw3Z
WEBページをHTTPでGETするにはどうしたらいいんでしょう?
指定したURLをとってきてソース(文字列)を変数に格納したいんですが。
952名無し~3.EXE:03/07/12 08:18 ID:cGlGTxq4
過去ログ見れば
953名無し~3.EXE:03/07/13 01:34 ID:c1xSt7OJ
>>951
Sub GetFile(strDestFolder,strImageFile) 'ファイルダウンロード
Dim objStream, objHTTP
Const adTypeBinary = 1
Const adSaveCreateOverWrite = 2
set objHTTP = CreateObject("msxml2.XMLHTTP")
'from ASP==> set objHTTP = CreateObject("msxml2.ServerXMLHTTP")
set objStream = createobject("adodb.stream")
objStream.type = adTypeBinary
objStream.open
objStream.write objHTTP.responseBody
objStream.savetofile strDestFolder & strImageFile, adSaveCreateOverWrite
set objStream = nothing
Msgbox "Downloaded to: " & strDestFolder & strImageFile
End Sub

'strDestFolder:http path
'strImageFile:filename(include extention)

Win2kで確認。ほかは知らん。
あとはFSOで煮るなり焼くなりしてください。
実行環境のMDACとXMLパーサは最新版でアップデートして

>>952
氏ね
954名無し~3.EXE:03/07/13 04:06 ID:c0HqZbCt
>>949
どんな方法がスマートかは、状況によるよ(汗
置換だけが目的ならsedでやるけど、wshで、ということだよね。

「b = 2003」が、「b=2004」でもよいのか「b = 2004」でなければならないのか、
「b = 2003」ではなく「b = 2033」だった場合、
「b = 2034」「b = 2043」「b = 2044」のどれを期待しているのか。
955949:03/07/13 13:32 ID:c1xSt7OJ
>>954
説明不足ですみませんです。
Windows2000標準プラットフォームを前提にしているため
WSHを選択しています。
具体的には、あるINIファイルの編集が目的で

TEST=0 だったら、 TEST=1 に書き換え
またその逆もあり、という感じです。
=のまわりの空白の有無は気にすればベターですが、「詰まっている」ことが前提でかまいません。
TEST=の右辺は、0か1しかありません。

こんなかんじですが、状況は見えていただけたでしょうか。
956949:03/07/13 13:44 ID:c1xSt7OJ
追伸です。
今実現している方法は、テキスト全行を行単位で読み込んで変数sTsに蓄積します。
読み込んだ行がTEST=0またはTEST=1だった場合に、
その代わりにあらかじめ用意していたTEST=1またはTEST=0の文字列をsTsに書き込むことで
目的を達成し。最後にsTsをファイルへ保存しています。
これだと、INIが巨大になったりするとメモリを食うのでどうも格好が悪くていけません。
957名無し~3.EXE:03/07/13 15:04 ID:L2bWjCF+
>>956
格好の悪いその方法が最もスマートに思える。
958名無し~3.EXE:03/07/13 21:33 ID:ms1b+O0t
>>956
入力用と出力用に2つファイル開いて(出力用はtempファイル)、
変数に蓄える代わりに読み込みと書き出しを同時に行い、
closeした後tempをオリジナルのファイル名にリネームってのは?
959名無し~3.EXE:03/07/14 00:34 ID:48WYW+Y+
>956
INIファイルにアクセスするコンポーネント
ttp://www.kawabata.ksi.ne.jp/aspProfile/

こんなのはどうかな?
960名無し~3.EXE:03/07/14 02:20 ID:k4HYEcml
指定したフォルダの最も新しく作成されたファイルを別のフォルダに
コピーしちゃたりできますか?
961名無し~3.EXE:03/07/14 02:59 ID:OanMijpS
>>960
できます。
962名無し~3.EXE:03/07/14 22:59 ID:JWrlt5B0
>>961
その方法を詳細に教えてもらったりできます?
963名無し~3.EXE:03/07/14 23:00 ID:OanMijpS
>>962
できません。
964名無し~3.EXE:03/07/14 23:18 ID:JWrlt5B0
>>963
クソッ!コケにしやがって!!
965名無し~3.EXE:03/07/14 23:48 ID:NmSKr1/q
Set fso = CreateObject("Scripting.FileSystemObject")
Set fld = fso.GetFolder("指定した")
For Each f In fld.Files
   If ct < f.DateCreated Then
      ct = f.DateCreated
      Set fx = f
   End If
Next
966つづき(w:03/07/14 23:49 ID:NmSKr1/q
fx.Copy("別の")
967名無し~3.EXE:03/07/14 23:59 ID:OanMijpS
>>964
できるかできないかと問われればできるわけだし、
詳細に教えろと言われても、まず少しは自分で考えて欲しいわけだけど。

オレならバッチファイルでやるし。最新ファイルは下記で取れる。
dir /od /b | tail
968名無し~3.EXE:03/07/15 00:07 ID:AihtrcD9
>>965
うわっありがとう!
>>964
前スレまでさかのぼって読んだけど・・むう・・おっしゃるとおり。
969山崎 渉:03/07/15 11:19 ID:PgFZzGxa

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄
970名無し~3.EXE:03/07/15 14:47 ID:1Ehn8M96
新スレは?
971名無し~3.EXE:03/07/16 22:36 ID:3D7OEEcb
VBSで Temporary Internet Files をクリアしたいんだけど、
DeleteFileメソッドが利かないみたい。何かいい方法ないかな。
fs.DeleteFile "キャッシュのフォルダ\*.*" で、何も消えない。
972名無し~3.EXE:03/07/16 22:45 ID:jKVD6kUI
fs.DeleteFolder "キャッシュのフォルダ\*"
じゃねぇ?
973名無し~3.EXE:03/07/17 23:46 ID:Ds8qPVD8
@local administrators group に、ユーザを追加するスクリプト
 だれかご存知でないですか?

Aログオンしているユーザが、ローカルPCのAdministrator権限をもっているかどうか調べる
 スクリプトは、だれかご存知でないですか?
974名無し~3.EXE:03/07/18 02:30 ID:RgiUrq06
Sub AddAdminGroupUser(paraUser)
Dim WshNetwork
Set WshNetwork = CreateObject("WScript.Network")

Dim strMyComputerPath
strMyComputerPath = "WinNT://" & WshNetwork.ComputerName & "/"

Dim objGroup
Set objGroup = GetObject(strMyComputerPath & "Administrators,group")

Dim objUser
Set objUser = GetObject(strMyComputerPath & paraUser & ",user")

If Not objGroup.IsMember(objUser.ADsPath) Then
objGroup.Add(objUser.ADsPath)
End If
End Sub
975名無し~3.EXE:03/07/18 02:31 ID:RgiUrq06
Function IsAdminGroupMember()
Dim WshNetwork
Set WshNetwork = CreateObject("WScript.Network")

Dim strMyComputerPath
strMyComputerPath = "WinNT://" & WshNetwork.ComputerName & "/"

Dim objGroup
Set objGroup = GetObject(strMyComputerPath & "Administrators,group")

Dim objUser
Set objUser = GetObject(strMyComputerPath & WshNetwork.UserName & ",user")

IsAdminGroupMember = objGroup.IsMember(objUser.ADsPath)
End Function
976名無し~3.EXE:03/07/18 13:37 ID:h1ywYXqg
.NETのクラス郡をそのまま使えるようなスクリプトってできないのかな。
977名無し~3.EXE:03/07/18 15:51 ID:Ba7hFjna
JScript.NET?
978973:03/07/18 22:30 ID:8IVCdhdW
974-975
すばらしいですね!! Win2kで確認しました。
うまく動作しています。感謝です。
ところで、これってNTWorkstation SP6a IE5以上 の環境では
動くでしょうか。
979名無し~3.EXE:03/07/19 03:40 ID:0lYNSUYN
>>973
コマンドなら3行で目的を果たせる。

1)
net localgroup hoge /add
net localgroup administrators hoge /add
2)
net localgroup administrators

知的好奇心や学習目的なら、わざわざwshを使うのもいいんだけど、
同じ結果が得られるなら、より実践的なものを選択するのがスクリプト使い。
というのはオレのポリシー。

>>978
Windows NTで動作させるにはwshのインストールが必要。
上記コマンドならOSのみで動作。
980951:03/07/19 03:55 ID:aOzA1Oj+
>>953
ありがd。
いったんファイルに格納しないと無理なんですかねぇ?
(直接変数に入れるのは無理?)
981951:03/07/19 09:08 ID:+cJG6r+6
直接変数に入れる方法やってみたけど、取得はできても
ちゃんとしたソースの形では格納できなかった。
やったことといえば、a = objHTTP.responseBody
としただけだけど。これじゃだめかもね。
982974-975:03/07/20 00:06 ID:3UWC0ooS
>>978
IE5をインストールした時にWindows Script 5.1もインストールされますので
VBScriptは動作するはずです。
但し、このスクリプトを正しく動かすためには
「Active Directory Service Interfaces (ADSI)」が必要です。
必要であればMicrosoft ダウンロードセンターで「ADSI」をキーワードに
検索してみてください。
983名無し~3.EXE:03/07/20 02:07 ID:HkfCeq9R
次スレ
誰かたてましょうよ。
ここ、けっこう勉強になります(理解できるのはVBS部分の1割ぐらいですけど)
984978:03/07/20 21:13 ID:E0agKsxm
>>982
やはりADSIが必要ですね。
私の環境では残念ながらADSIは使えないので、外部EXEに頼むようにします。
ありがとうございました。
(NTWSはMSの6/30でサポート切れだからさっさと2kにしたいんですけどねえ…)
985名無し~3.EXE:03/07/21 19:53 ID:fuQPfzl2
>>983
オレもいつかは理解してやろうと、ROMり続けてるから
次スレはぜひ欲しい
986名無し~3.EXE:03/07/22 08:26 ID:mXvbxGuv
987_:03/07/22 08:27 ID:/uQgPIWm
988名無し~3.EXE:03/07/22 13:39 ID:61ZaJMEh

      / \〇ノゝ
      /三√从从) )    / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ,,、,、,,,  ヽ | | l  l | ∩  < みんな〜、私たちも1000ゲットするよ〜!!  ,,、,、,,,
,,,     `从ハ~_ワノ) /   \_________________   ,,、,、,,,
      /三/| ゚U゚|\      ,,、,、,,,                        ,,、,、,,,
 ,,、,、,,,   U (:::::::::::)  ,,、,、,,,         \ホントに1000なんて取れるのか!?/
       //三/|三|\   ,,  ∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
        ∪  ∪       (    )    (     )   (    )    )
 ,,、,、,,,         ,,、,、,,,  ∧_∧∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
        ,,、,、,,,       (    )    (    )    (    )    (    )
989名無し~3.EXE
倦め