お前ら、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:一致でメールボックスから削除するスクリプトきぼーんしたいほど。