岡本といいます さん (takahiro_okamoto@solver.co.jp) 2000年 12月 21日 20時 26分 21秒

恥ずかしい質問でもうしわけないですが・・・
フォルダ一覧を表示する時に、多分以下のロジック組めば良いと思うのですが、
dim tmpString
Set objfs = CreateObject("Scripting.FileSystemObject")
Set objff = objfs.GetFolder("C:\WINNT")
For Each w_fix In objff.SubFolders
tmpString = tmpString & w_fix.Name & chr(13)
Next
msgbox tmpString
このロジックの中で、
For Each w_fix In objff.SubFolders
tmpString = tmpString & w_fix.Name & chr(13)
Next
の部分を
objff.SubFolders.Count
の間、ぐるぐる回さなくてはならないことになってしまったのですが、
objff.SubFolders.Item(1からぐるぐる).Name
とすると「プロシジャの呼出し、または引数が不整です」となってしまいます。
objff.SubFolders.Count分ぐるぐる回して
一覧表示する良い方ありませでしょうか?
VBスクリプトでなくVBの基礎の質問ですいません。



ひっし さん 2000年 12月 21日 19時 12分 33秒

 すいません、先ほど書き込んだ者ですが読み返してみるとどうして
このスクリプトを作った点などが抜けていました。申し訳ありません。
作った経緯ですが、「h1.html」というファイルの中にある画像ファイ
ルをリンクしたフォルダ名が「26201100.files」に変更されて「26201
100」になりました。それにともなって、ブラウザのせいで置換前の
順番だと、表示がおかしくなるので 置換後の順番に並び替えて正常に
画像を表示できるようにしようと思ったのです。そして、修正したもの
を「h2.html」というファイルに出力すると言うものです。
 よろしくお願いします。

ひっし さん 2000年 12月 21日 18時 25分 00秒

 どうも、はじめまして。初めて書き込みをさせて頂きます。
自分は、WHSを勉強して2ヶ月ぐらいでプログラムに関しても
初心者なので、このホームページには、いつも助けてもらっています。
 いま、つまづいているのですが、もし宜しければお力をお貸し下さい。
お願いします。

 HTMLの中のタグの置換なのですが、

置換前 <img width=432 height=64 src="./26201100.files/image002.gif">
置換後 <img src="./26201100/image002.gif" width=432 height=64>

”.files”が無くなって、”src”以降の文字列が前に来るように
したいのです。
 以下のコードは、自分が作成した途中のものでお恥ずかしいですが宜しく
お願いします。

------------------------------------------------------------
Option Explicit
Dim Fs, myText, myFile, newFile, beforeStr, afterStr, objRE
myFile = ("D:\html\1.htm")
newFile = ("D:\html\2.htm")
Set Fs = CreateObject("Scripting.FileSystemObject")
Set myFile = Fs.OpenTextFile(myFile)
myText = myFile.ReadAll
Set objRE = New RegExp
objRE.Pattern = ".files/image\d{3}.gif"
myText = objRE.Replace (myText, "/image\d{3}.gif")
Set newFile = Fs.CreateTextFile(newFile)
newFile.Write(myText)
newFile.Close
Wscript.Echo "作業終了"



まさはる さん (kkato@webserve.ne.jp) 2000年 12月 21日 11時 10分 44秒

ONOさんへ:

貴重な情報をどうもありがとうございました。m(__)m
ONOさんのサンプルを把握して、以下のコードに変更したところ
完全に動きました。感謝感激雨あられです。

<!---コード--->

Option Explicit

Dim objXl,objWebObj

set objXl=Wscript.CreateObject("Excel.Application")
objXl.Workbooks.Open "e:\appli\exceltest2.xls"

objXl.Visible=False

set objWebObj=objXl.ActiveWorkbook

objWebObj.SaveAs "e:\appli\test.htm",44

objXl.Quit

<!--- --->

申し訳ありませんが、勉強のために一つ質問させて下さい。
SaveAsメソッドの後ろにある「44」の番号はExcelの定数だと
思うのですが、これらの情報を探すことが出来ません(;;)。もし
HPや書籍等でご存知のところがありましたら、教えて頂けないで
しょうか。出来ればOffice全般を把握できれば幸いに思います。

よろしくお願い致します。


まさし さん (masashi12@excite.co.jp) 2000年 12月 21日 11時 01分 27秒

すいません 管理人むたぐちさんの名前を
間違えて呼び捨てで書いてしまいました。
大変失礼しました。

まさし さん (masashi12@excite.co.jp) 2000年 12月 21日 11時 00分 02秒

管理人むたぐちへ:

MsgBoxの回答ありがとうございました
とりあえず一連の作業が完了したメッセージを出したいだけなので
教えていただいた方法で十分役に立ちます。
ありがとうございました。

ONO さん 2000年 12月 21日 09時 01分 02秒
URL:http://www.corebase.co.jp/shu/

まさはるさんへ:

私のサイトにあげてあるWSHを利用してExcelファイルをHTMLファイルとして
保存するサンプルです。

#って、勉強会の資料としておいてあるから見つけにくい(^^;

適当な名前でvbsファイルとして保存して、Excelファイルをドラッグ&ドロップ
すれば動きます。
-------------------------------------------------------------------
set args = WScript.Arguments

Set objExcelApp = CreateObject("Excel.Application")

objExcelApp.Workbooks.Open(args(0))
Set objExcelBook = objExcelApp.ActiveWorkbook
Set objExcelSheets = objExcelBook.Worksheets
Set objExcelSheet = objExcelBook.Sheets(1)
objExcelSheet.Activate

Set FS=CreateObject("Scripting.FileSystemObject")
fName = FS.GetParentFolderName(WScript.ScriptFullName)
fname = Replace(fname, "%20", " ")
sname = fname & "\test.htm"

objExcelBook.SaveAs sname, 44
objExcelApp.Quit

まさはる さん (kkato@webserve.ne.jp) 2000年 12月 21日 00時 12分 34秒

こんにちは。初めて投稿させて頂く「まさはる」と言います。
困り果ててこのサイトにたどり着き、ぜひ知恵をお貸しして頂きたく思います。

WSHを使い、Excelのファイルを「Webページとして保存」を行なおうと
しています。色々調べて以下の文を書いたのですが、HTMLファイルの名前を
指定するところで「意味不明なエラー」で止まってしまいます。そう言われても、
私も意味不明。。。

色々他の方法を試してみましたが、うまく行きません。どなたか同様なことを
実現している方はいらっしゃいますか??

初心者な意見で申し訳ありませんが、よろしくお願い致します。

<!--- 以下コード --->

Option Explicit

Dim objXl,objWebObj,objWeb,WshShell

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

set objXl=Wscript.CreateObject("Excel.Application")
objXl.Workbooks.Open "e:\appli\exceltest.xls"

objXl.Visible=True

Wscript.sleep 3000

set objWebObj=objXl.Workbooks("exceltest.xls")
objWebObj.PublishObjects(1).FileName = "e:\appli\test.htm"
objWeb.PublishObjects(1).Publish

Wscript.sleep 3000

objXl.Quit
Wshshell.Quit

管理人むたぐち さん (mutaguchi@roy.hi-ho.ne.jp) 2000年 12月 20日 21時 40分 59秒
URL:http://www.roy.hi-ho.ne.jp/mutaguchi/

To: まさし さん

> まず1つ目ですがSendKeyメソッドでキーを押させたあと
> MsgBoxを使うとMsgBoxがほかのウィンドの下に表示されてしまいます。
> (非アクティブ状態)

Windows98あたりから、ウィンドウがアクティブになる際の挙動が変わっており、
アクティブになるはずのウィンドウが、タスクバーで点滅するということが
よくあります。
今回の現象も、これが原因だと思います。
# たしか最新のTweakUIを使えば、このあたりの挙動をカスタマイズできたはず。

> Msgbox("aaaa")

の部分を、次のようにしてみてください。

MsgBox "aaaa",vbSystemModal

これで、やはりアクティブにはならないものの、とりあえずほかのウィンドウの下に
隠れることはなくなります。

また、
Msgbox "aaaa",vbSystemModal,"SampleScript"
WScript.Sleep 100
WshShell.AppActivate "SampleScript"
つまり、メッセージボックスをAppActivateするコードも試してみたんですが、
これは効果がないようでした。

> 2つ目はスクリプトで起動したアプリケーションを
> 常に手前に表示させることはできますでしょうか

普通の方法では、ないような気がします。


To: 【おじさま】 さん

> ちゃんと今でも専用のダウンロードサイトがあるんですよね。
> どうしてもこっちじゃなきゃ嫌だという人もいるんでしょう

どういう理由があるんでしょうね?
IE5.01とIE5.5があって、IE5.01を選ぶというならよくわかるんですが(^^;
# IE5.5は重いですからね。

あ、IE5.01にはVBS5.1、IE5.5にはVBS5.5が付属しているので、それにあわせて
公開を続けているということなのかも。

> は別として、こういう旧バージョンもしっかりサポートする
> 姿勢は立派過ぎてマイクロソフトとは思えない。確か以前む
> たぐちさんがマイクロソフトの中でスクリプト担当してるス
> タッフの人達は凄く真面目で熱心だといった内容のこと書い
> てませんでしたっけ。こういうの見てるとそんな気がします。

ええ、そういうことを以前書きました。
マイクロソフトを悪く言う人たちは、ぜひスクリプトチームの
働きを見てもらいたい(笑)
# 彼らは.NETのCommon Language Runtimeの開発にも携わっているのだろうか。

以下は余談ですが…。
「Rubyを256倍使うための本 邪道編」の著者であるartonさんが、
Win32版RubyをActiveX Scripting用の言語として利用するためのブリッジを
作成する際、とある疑問点が生じたそうです。
それに関する質問を、マイクロソフトにしたところ、ライセンス料?を払っていない
ため、最初は「パブリックニュースグループで聞いてみれば?」という返事だったものの、
再度質問すると、有効な回答をくれたそうです。
詳しいところは本を読めば分かりますが、これもマイクロソフトらしからぬ
エピソードだと思いませんか?

【おじさま】 さん (tomiyama@seagreen.ocn.ne.jp) 2000年 12月 20日 20時 52分 22秒
URL:http://homepage1.nifty.com/~tomiyama/

管理人むたぐち さん

>5.1ってまだ出てたんですね。知らなかった…。

ちゃんと今でも専用のダウンロードサイトがあるんですよね。
どうしてもこっちじゃなきゃ嫌だという人もいるんでしょう
か。そのためか以前はなかった 5.1 の Win2k 用のパッケー
ジも出てました。高価な市販アプリケーションではないので
5.5 にしてくださいって言っても文句は出ないと思うのです
が、古いバージョンをいつまでも置いておくことの善し悪し
は別として、こういう旧バージョンもしっかりサポートする
姿勢は立派過ぎてマイクロソフトとは思えない。確か以前む
たぐちさんがマイクロソフトの中でスクリプト担当してるス
タッフの人達は凄く真面目で熱心だといった内容のこと書い
てませんでしたっけ。こういうの見てるとそんな気がします。

管理人むたぐち さん (mutaguchi@roy.hi-ho.ne.jp) 2000年 12月 20日 15時 14分 48秒
URL:http://www.roy.hi-ho.ne.jp/mutaguchi/

To: なおきん さん

> ところで,このWMI相当奥が深くて面白そうなのですが,なにかよいDocumentありますか?
> できれば日本語で充実しているDocumentがいいのですが,

「関連サイトリンク」にいくつかリンクを張ってますので、参考にしてみてください。
また、BackOffice Worldという雑誌で、WMIについての連載がされているそうです。
# もう終わったかもしれませんが…。

> 「Rubyを256倍使うための本 邪道編」ですか?

サンプルがRubyですが(Rubyの本だから当たり前(^^;)、私が今までに見た本の中で、
一番突っ込んだ内容だと思います。

あと、私がこの掲示板にいくつかサンプルを載せているので、それも参考にしてください。
AKiOSさんの検索スクリプトで、WMIをキーワードにすると見つかります。

最終的には、やはりSDKが必要になってきますが、これは今のところ英語版しかない…。


To: 【おじさま】 さん

> Script Engine 5.5 の scriptjp.exe(Win2k 用) と scr55jp.exe の中身が
> 変更になってますね(いつからだろう)。Win2k 用しか分かりませんが、

もう5.6のβが出ているのに、いまさら何ででしょうね。
何か致命的なバグでもあったのでしょうか。
microsoft.public.scripting.wshではとくに話題はなかったようですが。

…と思ったら、http://msdn.microsoft.com/scripting/default.htmによると、
セキュリティホールがあったみたいですね。
# 日本語版のページはまだ更新されてないみたい。

そういえば、WSH5.6のドキュメントができたそうですよ。
http://www.microsoft.com/scripting/downloads/v56b/wsh.chm

> Script Engine 5.1 も変更になってるらしいです(確認してません)。

5.1ってまだ出てたんですね。知らなかった…。

まさし さん (masashi12@excite.co.jp) 2000年 12月 20日 15時 11分 14秒

みなさん はじめまして
最近Wshを勉強しているものです。
今、どうしてもできないことが2つありなんとか自力で
がんばってみましたがどうしてもできないので教えてください。

まず1つ目ですがSendKeyメソッドでキーを押させたあと
MsgBoxを使うとMsgBoxがほかのウィンドの下に表示されてしまいます。
(非アクティブ状態)
たとえば電卓を起動させてキーを押させた後
MsgBoxでメッセージを表示させた場合などです。

サンプル
set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "calc"
WScript.Sleep 100
WshShell.AppActivate "Calculator"
WScript.Sleep 100
WshShell.SendKeys "1{+}"
WScript.Sleep 2500
Msgbox("aaaa")

2つ目はスクリプトで起動したアプリケーションを
常に手前に表示させることはできますでしょうか

以上2点ですがよろしくお願いいたします。

【おじさま】 さん (tomiyama@seagreen.ocn.ne.jp) 2000年 12月 19日 19時 50分 44秒
URL:http://homepage1.nifty.com/~tomiyama/

Script Engine 5.5 の scriptjp.exe(Win2k 用) と scr55jp.exe の中身が
変更になってますね(いつからだろう)。Win2k 用しか分かりませんが、
Jscript.dll と Vbscript.dll のバージョンが 5.50.5207 から 5.50.5824
になってます。

Script Engine 5.1 も変更になってるらしいです(確認してません)。

なおきん さん 2000年 12月 19日 12時 21分 17秒

管理人様ありがとうございました.
無事JScriptでもできました.

ところで,このWMI相当奥が深くて面白そうなのですが,なにかよいDocumentありますか?
できれば日本語で充実しているDocumentがいいのですが,

「Rubyを256倍使うための本 邪道編」ですか?

管理人むたぐち さん (mutaguchi@roy.hi-ho.ne.jp) 2000年 12月 19日 02時 28分 28秒
URL:http://www.roy.hi-ho.ne.jp/mutaguchi/

○WMIでイベントを検出する

「Rubyを256倍使うための本 邪道編」のサンプルを、若干アレンジしてWSH用VBSに
手直ししたものです。
メモ帳を起動し、その終了を検出するものです。
結構複雑ですが。

Set Locator = WScript.CreateObject("WbemScripting.SWbemLocator") 'SWbemLocatorオブジェクト作成
Set oService = Locator.ConnectServer 'SWbemServicesオブジェクト取得
Set oProcess = oService.Get("Win32_Process") '空のProcessオブジェクト取得
result = oProcess.Create ("notepad",null,null,processid) 'Processの作成(メモ帳起動)
If result <> 0 Then '実行が失敗すれば終了
WScript.Quit
End If

On Error Resume Next 'ここからエラー処理を有効に。
Set oEvent = oService.ExecNotificationQuery _
("select * from __InstanceDeletionEvent within 1 " & _
"where targetinstance isa 'Win32_Process' " & _
"and targetinstance.Name = 'notepad.exe' ")
'イベントクラス(__InstanceDeletionEventクラス。
'インスタンスの削除イベント)の作成。
'within 1 …該当イベントを1秒間隔でポーリング
'where targetinstance isa 'Win32_Process' …Win32_Processクラスのインスタンスを監視対象にする
'targetinstance.Name = 'notepad.exe' …インスタンス名が、notepad.exeであるものを選ぶ

Do
WScript.Sleep 100 'ループをまわしとく。100msec 待つ。
Set oEvt = oEvent.NextEvent(500)
'SWbemEventSourceオブジェクトのNextEventメソッド。
'500msecでタイムアウトする。
If Err.Number = -2147209215 Then 'タイムアウトすると、上記のエラー発生。
Err.Clear
Else 'エラーが発生しない場合は、正常に終了したということとなる。
MsgBox oEvt.TargetInstance.ExecutablePath & "が終了しました。"
'SWemObject(__InstanceDeletionEventクラス)のTargetInstanceプロパティ
'は、ターゲットインスタンスを返す。この場合はWin32_Processクラスのインスタンス。
Exit Do
End If
Loop


おまけ。ニュースに投稿したスクリプトですが、クラスのインスタンスの書くプロパティの値を
書き出し、テキスト化するものです。デフォルトではWin32_Processorクラスを調べます。
Eval関数を使っているところがポイントかもしれません。


On Error Resume Next
Dim sClass
Dim sOut
Const sFileName="cpuinfo.txt"
Set Fs=CreateObject("Scripting.FilesystemObject")
Set WshShell=CreateObject("WScript.Shell")

sOut=""
sClass="Win32_Processor"
If sclass="" Then WScript.Quit

Set oClass = GetObject("winmgmts:" & sClass)

For Each oIns In GetObject("winmgmts:").InstancesOf(sClass)
For Each oProp In oClass.Properties_
sOut=sOut & oProp.Name & ":" & vbTab & Eval("oIns" & "." & oProp.Name) & vbCrLf
Next
sOut=sOut & vbCrLf
Next

Set ts=Fs.CreateTextFile(sFileName,True)
ts.Write sOut
ts.Close
WshShell.Run sFileName,1,True

管理人むたぐち さん (mutaguchi@roy.hi-ho.ne.jp) 2000年 12月 18日 22時 09分 48秒
URL:http://www.roy.hi-ho.ne.jp/mutaguchi/

To: なおきん さん

> JScriptであるプロセスが終了したことを知る方法ってありますか?
> C++でいうところのWaitForSingleObject()の感じで・・・

これも、WMIを使えば可能です。
「Rubyを256倍使うための本 邪道編」に、ActiveScriptRubyでのサンプルソースが
ありました。
VBS/JSの例は…少々お待ちください。現在研究中です。

管理人むたぐち さん (mutaguchi@roy.hi-ho.ne.jp) 2000年 12月 18日 22時 04分 42秒
URL:http://www.roy.hi-ho.ne.jp/mutaguchi/

To: ぱるこ さん

> 今起きている現象についてもう少し詳しく説明させていただきたいと思います。
> やりたいことは、ASPでActiveXを呼びだし、ActiveXのプロパティのひとつに
> 可変の値を与え、ActiveXをブラウザでダウンロードする度に違う値をActiveX
> 上に表示したいということです。

申し訳ありませんが、前回に書いた以上のことは私にはわかりかねます。
ほかにフォローがつかないようなので、別のサイトで質問なさってみては
いかがでしょう。

VB初心者友の会
http://www2j.biglobe.ne.jp/~little-g/vbtomo.html

USERSGROUP(ML)
http://www.users.gr.jp/ml/

microsoft.public.jp.activex (NewsGroup)

等々。


To: ひろ さん

> またまた質問なんですが、Cドライブの何処かにある拡張子が*.xlsのファイルをDドライブにコピーをしたいのですが、
> for each でフォルダ(サブフォルダも含む)を全て検索し
> copyfile "*.id", "D:\"
> で実行するしか方法が無いのでしょうか?

ないような気がします。
ただ、Shell.ApplicationのFolderオブジェクトのCopyHereメソッドを使う際、
何かフラグを指定したりすれば、もしかすると方法があるかも知れません。
ちょっと調べてみたいところですね。


To: TEST さん

> HTMLのタグで、「script language="vbscript"」と宣言しますが、
> ここでVBScriptのバージョンを明示的に宣言するといったことは、できるのでしょうか?(JavaScriptでは"javascript1.3"でOKですが)

やったことはないですが、できるかもしれませんね。
というか、試してみてくださいな(^^;
VBSのバージョンとその機能については、VBSのヘルプに載っていますので、確認できると思います。


To: どしろーと さん

> と〜っても基本的な質問のようで申し訳ないんですが、*.wshっていう拡張子のファイルと、*.wsfっていう拡張子のファイルってどう違うんでしょうか?
> 私が見たページの中では、XML対応の〜(.wsf)ってとこくらいしか違いはないんですが。。
> しかも、作成方法を読んでいるとどちらも同じことを書いています。(MSのページ参。.vbsとかのファイルのプロパティで設定を変えると自動的に生成される。)しかし、そのとおりやると、*.wshしかできません。。。
> この二つの違いと、それぞれの用途をおしえてください。

両者はぜんぜん違うものです。
*.wshは、*.vbs,*.js,*.wsfなどのスクリプトファイルの挙動を規定する設定ファイルで、
スクリプトファイルのプロパティで設定をおこなうことで作成されます。
詳しくは、「導入するには?」をご覧ください。

*.wsfは、XMLフォーマットのスクリプトファイルで、一つのファイル中で
複数のスクリプト言語が扱えるというものです。この形式は、WSH2.0から利用可能になりました。
詳しくは「WSH2.0の新機能」をごらんください。

なおきん さん 2000年 12月 18日 21時 46分 49秒

管理人様いつごご返答ありがとうございます.cmd.exeで補完できました.
うーん,新鮮...

それと,一つ質問しても良いですか
JScriptであるプロセスが終了したことを知る方法ってありますか?
C++でいうところのWaitForSingleObject()の感じで・・・
具体的には

sh.Run("foo.exe", 0, false); //ここは実行できればなんでも良いです.
で,このあといくつか処理をして,

foo.exeが終わり次第,別の処理をしたいケースがあります,こういうときに,foo.exeプロセスが実行中か,終了しているかを知りたいのです.

どうかご教授よろしくお願いします.

どしろーと さん 2000年 12月 18日 21時 30分 50秒

と〜っても基本的な質問のようで申し訳ないんですが、*.wshっていう拡張子のファイルと、*.wsfっていう拡張子のファイルってどう違うんでしょうか?
私が見たページの中では、XML対応の〜(.wsf)ってとこくらいしか違いはないんですが。。
しかも、作成方法を読んでいるとどちらも同じことを書いています。(MSのページ参。.vbsとかのファイルのプロパティで設定を変えると自動的に生成される。)しかし、そのとおりやると、*.wshしかできません。。。
この二つの違いと、それぞれの用途をおしえてください。
・・・実は、バッチファイルのかわりにWSHを使ってバックアップモジュールを作りたいだけなんですが。。。

TEST さん (kunio.sadakane@a-i-d.co.jp) 2000年 12月 18日 16時 54分 13秒
URL:null

HTMLのタグで、「script language="vbscript"」と宣言しますが、
ここでVBScriptのバージョンを明示的に宣言するといったことは、できるのでしょうか?(JavaScriptでは"javascript1.3"でOKですが)

ひろ さん 2000年 12月 18日 15時 22分 07秒

すみません。
下の書き込みで
copyfile "*.id", "D:\"
ではなく
copyfile "*.xls", "D:\"
です。すみません

あと、環境はWIN95+IE5です。

ひろ さん 2000年 12月 18日 15時 18分 48秒

またまた質問なんですが、Cドライブの何処かにある拡張子が*.xlsのファイルをDドライブにコピーをしたいのですが、
for each でフォルダ(サブフォルダも含む)を全て検索し
copyfile "*.id", "D:\"
で実行するしか方法が無いのでしょうか?

何か良い方法があれば教えていただけないのでしょうか?

ひろ さん 2000年 12月 18日 09時 36分 28秒

管理人のむたぐちさん ありがとうございました。

>Shell.Applicationを使うには、ver 4.71以上のshell32.dllが必要です。
>Win95の場合、このファイルは、IE4.0xをシェル統合モードでインストール
>すると導入されます。IE5.0単独では導入されません。
それで、WIN95だと動かないんですね。

んー、ではWin95のこの状態だと実行不可能なのですね。
残念です。



西 さん 2000年 12月 17日 17時 14分 55秒

やはり手抜きはいけませんね。
ちなみにエラーは”ライン58の1”でした。

ぱるこ さん 2000年 12月 17日 11時 29分 11秒

管理人のむたぐちさん ご回答どうもありがとうございます。

今起きている現象についてもう少し詳しく説明させていただきたいと思います。
やりたいことは、ASPでActiveXを呼びだし、ActiveXのプロパティのひとつに
可変の値を与え、ActiveXをブラウザでダウンロードする度に違う値をActiveX
上に表示したいということです。

インターフェイスとしては、まずList1(右)とList2(左)という同じ大きさの
リストボックスを用意して、コマンドボタンが押されたときに、List1で選択した
ものをList2に移すということをしています。ちなみに、そのList2のリストの
アイテム値をJavaScriptで保持し、別のページにSubmitすることはできました。
問題は、このページに戻ってきたときに、その保持した値をもう一度反映し、
ActiveXのList2に選択済みのアイテムを再度表示したいときの処理についてです。

ユーザーコントロールにテキストボックスを張り付け、このVisibleをFalseにし、
新しく追加したプロパティをこのテキストボックスに格納します。この値を
List2に渡して選択済みのアイテムを再度表示しようとしたのですが
どうもうまくいきませんでした。テキストボックスに渡す値をOBJECTタグの、PARAMタグで付け足してブラウザにActiveXを表示しようとすると、コントロール
さえ見えなくなってしまいます。なにかActiveXの作りに問題があると思うの
ですが、発見できない状態です。説明が下手で申し訳ありませんが、もしなにか
アドバイスしていただければ幸いです。

以下は、最初にActiveXを読み込んだときにPARAMタグで渡したい値を
List2のリストボックスに割り当てる処理のソースです。
参考になればいいのですが。

Private Sub UserControl_Show()

'strp は PARAM タグの VALUE を格納する変数
Dim strp As String

'Text1.Text には PARAM タグの NAME を割り当てる
strp = Text1.Text

Dim paruko As Variant

paruko = CvSplit(strp, 0)

Dim p As Integer
p = UBound(paruko) - 1

Dim i As Integer
i = 0
Do While i < p

List2.FontSize = 16
List2.FontBold = True
List2.AddItem paruko(i), i

i = i + 1
Loop
End Sub

Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
Text1.Text = PropPag.Property("aaa","")
End Sub

Private Sub UserControl_WriteProperties(PropBag As PropertyBag)
Call PropBag.WriteProperty("aaa",Text1.Text,"")
End Sub

Public Property Get aaa() As String
aaa = Text1.Text
End Property

Public Property Let aaa(ByVal New_aaa As String)
Text1.Text() = New_aaa
PropertyChanged "aaa"
End Property

以上です。長々と失礼しました。

管理人むたぐち さん (mutaguchi@roy.hi-ho.ne.jp) 2000年 12月 16日 23時 58分 32秒
URL:http://www.roy.hi-ho.ne.jp/mutaguchi/

To: 西 さん

> 以前教えていただいたWindows2000を終了させるスクリプトを利用してWindowsの終了ダイアログ(HTA)を作ったのですが、80041013というエラーが発生して実行できなくなりました。

うーん…。
あえてはっきり言わせてもらいますが、HTMLの文法がめちゃくちゃですね(^^;
まずそこから直してみては如何でしょう。

また、何回も使うコードは、Subプロシージャにすれば、一回記述するだけで
使いまわしが効きます。(Lesson6参照)

エラーですが、具体的にはどの行で発生しているのでしょうか、といっても
これだとよくわからないので、やはり一度整理してみることをお勧めします。

西 さん 2000年 12月 16日 18時 01分 01秒
URL:http://www14.freeweb.ne.jp/diary/megumi2k/win/wwtop.htm

おひさしぶりです。以前教えていただいたWindows2000を終了させるスクリプトを利用してWindowsの終了ダイアログ(HTA)を作ったのですが、80041013というエラーが発生して実行できなくなりました。教えていただいた当時のIE5.01のときは成功しておりました。今はIE5,5sp1にしています。

以下問題のスクリプト。
<HTML><HEAD><TITLE>Windowsの終了</TITLE>
<META content="text/html; CHARSET=shift_jis" http-equiv=Content-Type>
<META content="MSHTML 5.00.2919.3800" name=GENERATOR></HEAD>
<BODY>
<SCRIPT language=JavaScript>
window.resizeTo(600,300)
window.moveTo(100,100)
</SCRIPT>
<BACKGROUND=うら.jpg>
</BODY></HTML>

<head>
<HTA:APPLICATION ID="oMyApp"
APPLICATIONNAME="monster"
BORDER="dialog"
CAPTION="yes"
object.IconLcation=../icon\winmaku116.ico
ICON="../icon\winmaku116.ico"
SHOWINTASKBAR="no"
SINGLEINSTANCE="yes"
SYSMENU="no"
contextMenu="yes"
scroll="no"
<meta http-equiv="content-type" content="text/html; charset=UTF-8">



</HEAD>

<SCRIPT type="text/vbscript" LANGUAGE="VBScript">
Sub Img02_OnClick
Set oSystemSet=GetObject ("winmgmts:{impersonationLevel=impersonate,(Shutdown)}") _
.InstancesOf("Win32_OperatingSystem")

For Each oSystem In oSystemSet
oSystem.Win32Shutdown 8
'0 ログオフ
'1 シャットダウン(電源は切れない)
'2 再起動
'4 強制終了?
'8 電源オフ
Next
End Sub
</SCRIPT>
<BR><BR/>
<BR><BR/>
<BR><BR/>
<IMG SRC="sh.bmp" id="Img02" SPACE=60>シャットダウン
<IMG SRC="re.bmp" id="Img03" SPACE=60>再起動
<IMG SRC="re.bmp" id="Img01" SPACE=60>ログオフ
<IMG SRC="CAN.bmp" id="Img04" SPACE=60>キャンセル

<SCRIPT type="text/vbscript" LANGUAGE="VBScript">
Sub Img01_OnClick
Set oSystemSet=GetObject ("winmgmts:{impersonationLevel=impersonate,(Shutdown)}") _
.InstancesOf("Win32_OperatingSystem")

For Each oSystem In oSystemSet
oSystem.Win32Shutdown 0
'0 ログオフ
'1 シャットダウン(電源は切れない)
'2 再起動
'4 強制終了?
'8 電源オフ
Next
End Sub
</SCRIPT>



<SCRIPT type="text/vbscript" LANGUAGE="VBScript">
Sub Img03_OnClick
Set oSystemSet=GetObject ("winmgmts:{impersonationLevel=impersonate,(Shutdown)}") _
.InstancesOf("Win32_OperatingSystem")

For Each oSystem In oSystemSet
oSystem.Win32Shutdown 2
'0 ログオフ
'1 シャットダウン(電源は切れない)
'2 再起動
'4 強制終了?
'8 電源オフ
Next
End Sub
</SCRIPT>

<SCRIPT type="text/vbscript" LANGUAGE="VBScript">

Dim WSH
Set WSH = CreateObject("WScript.Shell")
Sub SBtn_OnClick
WSH.Run "window.close()"
End Sub
</SCRIPT>
<BUTTON onclick="window.close()">キャンセル</BUTTON>

<body>
<BODY BACKGROUND=うら.jpg></BODY>
<SCRIPT type="text/vbscript" LANGUAGE="VBScript">
Dim WSH
Set WSH = CreateObject("WScript.Shell")
Sub hBtn_OnClick
WSH.Run """ver\ver.hta"""
End Sub
</SCRIPT>
<input type=button name=hBtn value=バージョン
</body>
</html>

あと以前あった文字化けの理由がわかりました。
理由は「エンコードがJIS 日本語」となっていたからでした。。

西 さん 2000年 12月 16日 17時 58分 08秒
URL:http://www14.freeweb.ne.jp/diary/megumi2k/win/wwtop.htm

おひさしぶりです。以前教えていただいたWindows2000を終了させるスクリプトを利用してWindowsの終了ダイアログ(HTA)を作ったのですが、80041013というエラーが発生して実行できなくなりました。教えていただいた当時のIE5.01のときは成功しておりました。今はIE5,5sp1にしています。

以下問題のスクリプト。
<HTML><HEAD><TITLE>Windowsの終了</TITLE>
<META content="text/html; CHARSET=shift_jis" http-equiv=Content-Type>
<META content="MSHTML 5.00.2919.3800" name=GENERATOR></HEAD>
<BODY>
<SCRIPT language=JavaScript>
window.resizeTo(600,300)
window.moveTo(100,100)
</SCRIPT>
<BACKGROUND=うら.jpg>
</BODY></HTML>

<head>
<HTA:APPLICATION ID="oMyApp"
APPLICATIONNAME="monster"
BORDER="dialog"
CAPTION="yes"
object.IconLcation=../icon\winmaku116.ico
ICON="../icon\winmaku116.ico"
SHOWINTASKBAR="no"
SINGLEINSTANCE="yes"
SYSMENU="no"
contextMenu="yes"
scroll="no"
<meta http-equiv="content-type" content="text/html; charset=UTF-8">



</HEAD>

<SCRIPT type="text/vbscript" LANGUAGE="VBScript">
Sub Img02_OnClick
Set oSystemSet=GetObject ("winmgmts:{impersonationLevel=impersonate,(Shutdown)}") _
.InstancesOf("Win32_OperatingSystem")

For Each oSystem In oSystemSet
oSystem.Win32Shutdown 8
'0 ログオフ
'1 シャットダウン(電源は切れない)
'2 再起動
'4 強制終了?
'8 電源オフ
Next
End Sub
</SCRIPT>
<BR><BR/>
<BR><BR/>
<BR><BR/>
<IMG SRC="sh.bmp" id="Img02" SPACE=60>シャットダウン
<IMG SRC="re.bmp" id="Img03" SPACE=60>再起動
<IMG SRC="re.bmp" id="Img01" SPACE=60>ログオフ
<IMG SRC="CAN.bmp" id="Img04" SPACE=60>キャンセル

<SCRIPT type="text/vbscript" LANGUAGE="VBScript">
Sub Img01_OnClick
Set oSystemSet=GetObject ("winmgmts:{impersonationLevel=impersonate,(Shutdown)}") _
.InstancesOf("Win32_OperatingSystem")

For Each oSystem In oSystemSet
oSystem.Win32Shutdown 0
'0 ログオフ
'1 シャットダウン(電源は切れない)
'2 再起動
'4 強制終了?
'8 電源オフ
Next
End Sub
</SCRIPT>



<SCRIPT type="text/vbscript" LANGUAGE="VBScript">
Sub Img03_OnClick
Set oSystemSet=GetObject ("winmgmts:{impersonationLevel=impersonate,(Shutdown)}") _
.InstancesOf("Win32_OperatingSystem")

For Each oSystem In oSystemSet
oSystem.Win32Shutdown 2
'0 ログオフ
'1 シャットダウン(電源は切れない)
'2 再起動
'4 強制終了?
'8 電源オフ
Next
End Sub
</SCRIPT>

<SCRIPT type="text/vbscript" LANGUAGE="VBScript">

Dim WSH
Set WSH = CreateObject("WScript.Shell")
Sub SBtn_OnClick
WSH.Run "window.close()"
End Sub
</SCRIPT>
<BUTTON onclick="window.close()">キャンセル</BUTTON>

<body>
<BODY BACKGROUND=うら.jpg></BODY>
<SCRIPT type="text/vbscript" LANGUAGE="VBScript">
Dim WSH
Set WSH = CreateObject("WScript.Shell")
Sub hBtn_OnClick
WSH.Run """ver\ver.hta"""
End Sub
</SCRIPT>
<input type=button name=hBtn value=バージョン
</body>
</html>

管理人むたぐち さん (mutaguchi@roy.hi-ho.ne.jp) 2000年 12月 16日 11時 24分 01秒
URL:http://www.roy.hi-ho.ne.jp/mutaguchi/

To: ひろ さん

> 環境はWin95+Ie5.0の環境です。
> エラーが出る場所は、
> Set Shell = WScript.CreateObject("Shell.Application")
> の場所で出ました。

Shell.Applicationを使うには、ver 4.71以上のshell32.dllが必要です。
Win95の場合、このファイルは、IE4.0xをシェル統合モードでインストール
すると導入されます。IE5.0単独では導入されません。

> で、ほかの環境
> WIN98+IE5.0の環境で実行したところ、動きました。

Win98以降では、最初からシェル統合されているので動作します。


To: ガリー.jr さん

> しかし、毎回でてくる質問に、よく一人一人にレスがかけますね。自分だったら断念して掲示板を閉じてしまうと思います。(爆)これからも、がんばって管理してください。

励ましのお言葉、どうもありがとうございます。
私は結構飽きっぽい性格なんですが、よくここまで続けてきたなあ、というのは
たしかにありますね。
そういえば、今世紀のうちに10万アクセス達成しました。(いつのまにか…(^^;)
このサイトを見てくださっている皆様、どうもありがとうございます。
これからもよろしくお願いします。


To: ぱるこ さん

> VB5.0でOCXを作成し、VB5.0がインストールされていないマシンから
> ブラウザにダウンロードしようとするとOCXが表示されないという現象が起きています。

私はocxを作ったことがないのでよくわからないのですが、クライアントの
セキュリティ設定が厳しすぎるのではないですか?

VB6のヘルプでは、「インターネット アプリケーションの作成」-「ActiveX
コンポーネントのダウンロード」というトピックが参考になると思います。
mk:@MSITStore:C:\Program%20Files\Microsoft%20Visual%20Studio\MSDN98\98VS\1041\vbcon98.chm::/Html/vbcondownloadingactivexcomponents.htm

> VB6で新しいプロパティを追加して、OCXを作成し、<OBJECT>タグの<PARAM>でそのプロパティの値を可変で渡すようにしたいと思っています。ASPで値を保持し、ページがロードされる度に違う値をサーバー側で設定したいのです。

> VB5.0で同じことをしたらうまくいったのですが、VB6.0では思い通りにできませんでした。

これも私にはわからないですが、少なくとも、どのようにうまくいかないのか、を
書いていただかないと…。
あと、KnowledgeBaseは参照されましたでしょうか。
# 一般論として、バージョンの違いで結果が異なる時、多くの場合はバグか
# 仕様変更が原因だと思われます。


To: つとむ君 さん

> WSH から呼び出せる日本語の文字コードを変換する
> ActiveXオブジェクトを探しているのですが、どこか
> にありませんか?

BASP21でできると思います。

つとむ君 さん 2000年 12月 16日 07時 11分 17秒

はじめまして、

WSH から呼び出せる日本語の文字コードを変換する
ActiveXオブジェクトを探しているのですが、どこか
にありませんか?

つかやん★@ さん 2000年 12月 16日 01時 27分 30秒

To:管理人むたぐち 様

あ(^^;
了解しました。
謎は解けました。
お手数かけましてすいません(._ァ)ノ

ぱるこ さん 2000年 12月 15日 21時 00分 16秒

引き続き質問させてください。
VB6で新しいプロパティを追加して、OCXを作成し、<OBJECT>タグの<PARAM>でそのプロパティの値を可変で渡すようにしたいと思っています。ASPで値を保持し、ページがロードされる度に違う値をサーバー側で設定したいのです。

Property Get、Property Letのそれぞれのプロシージャでプロパティを追加し、
ReadProperties と WriteProperties で記憶領域から値を読み取るようにしています。

以下がVB6.0で作成したOCXのソースの一部です。
例えば、<PARAM name="aaa" value="<%=aaa%>">というふうにして、ASPで可変の値をプロパティ aaa に与えるとしたら、

Public Property Get aaa() As Variant
aaa = m_aaa
End Property

Public Property Let aaa(ByVal New_aaa As Variant)
m_aaa = New_aaa
PropertyChanged "aaa"
End Property

Private Sub UserControl_InitProperties()
m_aaa = "ccc"
End Sub

Private Sub UserControl_WriteProperties(PropBag As PropertyBag)
Call PropBag.WriteProperty("aaa", m_aaa, "foooo!")
End Sub

Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
m_aaa = PropBag.ReadProperty("aaa", "bbb")
End Sub

VB5.0で同じことをしたらうまくいったのですが、VB6.0では思い通りにできませんでした。

どなたかアドバイスよろしくお願いいたします。


ぱるこ さん 2000年 12月 15日 20時 11分 44秒

ActiveX 配布の際の登録についての質問です。
VB5.0でOCXを作成し、VB5.0がインストールされていないマシンから
ブラウザにダウンロードしようとするとOCXが表示されないという現象が起きています。

ランタイムの問題かと思ったのですが、VB5.0付属のセットアップウィザード
でCABファイルを作成のときに必要と思われるファイルは含めたつもりです。

試しに、ダウンロードするCABファイルの名前を変えてみたり、元に戻したりして
みたのですが、ちゃんと指定の場所にCABファイルを見に行っていることを確認しま
した。
それから手作業でレジストリに登録してみたところダウンロードに成功したこと
からも、CABファイルは正常に作成されているものと思われます。

何が原因なのかさっぱりわかりません。どなたかこのような現象について
解決策をご存知の方がいらっしゃいましたらよろしくお願いします。

ガリー.jr さん 2000年 12月 15日 15時 51分 39秒

わざわざサンプルまで作ってくれてありがとうございました。これでなんとか作っていけそうです。しかし、毎回でてくる質問に、よく一人一人にレスがかけますね。自分だったら断念して掲示板を閉じてしまうと思います。(爆)これからも、がんばって管理してください。

ひろ さん 2000年 12月 15日 13時 25分 14秒

すみません。
どこがエラーなのか書きませんでした。
今後気をつけたいと思います。

環境はWin95+Ie5.0の環境です。
エラーが出る場所は、
Set Shell = WScript.CreateObject("Shell.Application")
の場所で出ました。

で、ほかの環境
WIN98+IE5.0の環境で実行したところ、動きました。

管理人むたぐち さん (mutaguchi@roy.hi-ho.ne.jp) 2000年 12月 15日 01時 58分 01秒
URL:http://www.roy.hi-ho.ne.jp/mutaguchi/

さっきのスクリプトの間違いを修正して、とりあえず完成版を作ってみました。
WinMe+IE5.5sp1で動作確認しました。
まあ、問題点は山積みなので、各自仕上げてください(^^;

For Each oFrameDocument In oDocument.frames
は、エラーが出てしまい、うまく動かなかったので、
For I=0 To oDocument.frames.length - 1
の形で書きました。

Dim s
Set IE = WScript.CreateObject("InternetExplorer.Application")
IE.Visible = True

IE.Navigate InputBox("URLを入力してみてください")
While(IE.busy):Wscript.Sleep 100:Wend
Set oWindow=IE.Document.parentWindow.Open("about:blank","links","height=200,width=400,status=no,toolbar=no,menubar=no,location=no,scrollbars=yes")
Call GetAllLinks(IE.Document)
oWindow.document.writeln "<html><head><title>Links</title></head><body>" & s & "</body></html>"

Sub GetAllLinks(oDocument)
For Each oLink In oDocument.all.tags("A")
If oLink.href<>"" Then
s=s & "<a href=""" & oLink.href & """ target=""" & oLink.target & """>" & oLink.innerText & "</a><br>"
End If
Next
If oDocument.frames.length > 0 Then
For I=0 To oDocument.frames.length - 1
Call GetAllLinks(oDocument.frames(I).document)
Next
End If
End Sub

管理人むたぐち さん (mutaguchi@roy.hi-ho.ne.jp) 2000年 12月 14日 22時 53分 21秒
URL:http://www.roy.hi-ho.ne.jp/mutaguchi/

To: ガリー.jr さん

> ここのページすごいですね。脳細胞が数えるほどしかない僕にでも、とても理解しやすいです。

そう言って頂けるとうれしいです。

> ところで、ちょっとお聞きしたいのですが、WSHでIEを起動して、表示したページのリンク先を全て取得したいのですが、フレームを使っているページは取得できずに終わってしまいます。どうやったら、フレーム付きのページで、取得できるのでしょうか?普通のページなら出来るのですが....。

IE.document.framesが、ドキュメント内の各フレームのwindowオブジェクトの
コレクションを返しますので、各windowについてリンク先取得をおこなうことができます。

ただ、フレームは入れ子にすることも可能なので、全リンク先を取得するには、
再帰的にフレーム検索をしてやる必要があります。

↓適当に書いてみたサンプルです。動作確認とかしてないですし、リファレンスも
見ずに書いたので、間違ってるかも。

Sub GetAllLinks(oDocument)
For Each oLink In oDocument.tags("A")
s = s & oLink.innerHTML & "(" & oLink.href & ")" & vbCrLf
Next
For Each oFrameDocument In oDocument.frames
Call GetAllLinks(oFrameDocument)
Next
End Sub

なお、framesコレクションは、IE5.01までのバージョンでは正常に
取得できない(WSHなどで外部から制御する場合のみ)ので、IE5.5にする必要があります。
# っていうか、ほんとうにIE5.5だったらOKだったっけ? 忘れた…。


To: ひろ さん

> 今回フォルダのTreeを書き出すサンプルをダウンロードしました。
> 実行したところ、フォルダのツリーを書き出すものは、うまく実行しましたが
> ファイルのツリーを書き出しプログラムがうまく実行できません。
>
> エラーの場所は分かっているのですが。
> どのように直せば実行できるのか、教えていただけませんでしょうか?

えっ、私にはエラーの場所は分かっていないのですが(^^;
エラーの発生する行、エラーメッセージの内容、そちらの環境(WSH,OS,IEのバージョン)
を書いていただかないと、私には対処できませんので…。

> ちなみにオブジェクトのshell.Applicationのヘルプはどこに載ってるのでしょうか?

MSDNライブラリに載ってます。(リンク集から行けます)
英語版のみですが…。


To: つかやん★@ さん

> さて、リームバブルなどの取り出し可能なドライブって
> WSH(VBS)で取り出すことはできるのでしょうか?

「テクニック集」
 「右クリックメニューの実行」
  「2.Shellオブジェクトを使う」
を参考にしてください。
リムーバブルドライブの「取り出し」アクションを実行すれば良いでしょう。



To: なおきん さん

> cygwinです.最初cmdとかは,ファイル名とかディレクトリ名を補完してくれなくて不便じゃないですか?
>
> #ちゃんと補完してくれるソフトがあるのかな?・・・

Win2000のcmd.exeなら、補完してくれますよ。
Ctrl+Dかなんかで。なんか設定をする必要があったような気もしますが、
詳しくは忘れてしまいました。
# Tabキー一発で補完してくれる、bashとかには及びませんが(^^;

> あと,一つ質問させていただきたいのですが,コマンドラインプログラム(foo.exe)をJScriptから終了させたくて,
>
> sh.AppActivate(foo.exe);
> sh.sendKeys("^c");
>
> としているのですが,これで正しいのかなーー?
> もっとかっこよい方法ありますか?

WMIでプロセスをkillしてやるのが、わりとかっこいいかもしれません。
WMIについては、掲示板のログを見てください。いろいろ書いてますので。

なおきん さん 2000年 12月 14日 17時 28分 06秒

cygwinです.最初cmdとかは,ファイル名とかディレクトリ名を補完してくれなくて不便じゃないですか?

#ちゃんと補完してくれるソフトがあるのかな?・・・

あと,一つ質問させていただきたいのですが,コマンドラインプログラム(foo.exe)をJScriptから終了させたくて,

sh.AppActivate(foo.exe);
sh.sendKeys("^c");

としているのですが,これで正しいのかなーー?
もっとかっこよい方法ありますか?

つかやん★@ さん 2000年 12月 14日 16時 14分 21秒

WSH勉強させていただいております。

さて、リームバブルなどの取り出し可能なドライブって
WSH(VBS)で取り出すことはできるのでしょうか?

ひろ さん 2000年 12月 14日 14時 09分 00秒

いつもこのページを参考にして、勉強させて頂いてます。
今回フォルダのTreeを書き出すサンプルをダウンロードしました。
実行したところ、フォルダのツリーを書き出すものは、うまく実行しましたが
ファイルのツリーを書き出しプログラムがうまく実行できません。

エラーの場所は分かっているのですが。
どのように直せば実行できるのか、教えていただけませんでしょうか?
ちなみにオブジェクトのshell.Applicationのヘルプはどこに載ってるのでしょうか?
一応(MicrosoftのJScriptとVBS・WHSのヘルプはインストールしています)

よろしくお願いします

ガリー.jr さん 2000年 12月 14日 00時 00分 01秒

ここのページすごいですね。脳細胞が数えるほどしかない僕にでも、とても理解しやすいです。ところで、ちょっとお聞きしたいのですが、WSHでIEを起動して、表示したページのリンク先を全て取得したいのですが、フレームを使っているページは取得できずに終わってしまいます。どうやったら、フレーム付きのページで、取得できるのでしょうか?普通のページなら出来るのですが....。

管理人むたぐち さん (mutaguchi@roy.hi-ho.ne.jp) 2000年 12月 13日 21時 44分 01秒
URL:http://www.roy.hi-ho.ne.jp/mutaguchi/

To: TEST さん

> 23-46の内容がいまいち理解できません。具体的にどういった具合にスクリプトに盛り込めばよいのでしょう?

WSHからIEを起動して、開いたウィンドウを閉じないようにする方法なのか、
HTMLに記述したスクリプト内で、そのHTMLを表示しているウィンドウを閉じないようにするか、
どちらのことをお尋ねなのか、よくわからなかったのです(^^;
23-46は、WSHからIEを起動する場合の話です。
HTML内のスクリプトに記述するという話であれば、
23-49 Lib30 さん 2000/11/02 01:48の記事から順番に10個ほど記事を見ていくと
いいのではないかと思います。
ただ、「ページが閉じられる」ことと、「別のページに移動する」ことの区別が
つかないので、何とかする必要があります。


To: なおきん さん

> 今後はtcshに切り替えようかな・・・・
> なにかお勧めありますか?

私はcommand.comとcmd.exeしか使っていないのでわかりません(^^;
そちらはcygwinな環境なんでしょうか。

管理人むたぐち さん (mutaguchi@roy.hi-ho.ne.jp) 2000年 12月 13日 17時 34分 00秒
URL:http://www.roy.hi-ho.ne.jp/mutaguchi/

To: moto さん

> WSHなどを利用してPCのシステム時間を変更したいのですが、
> 何か良い方法はないでしょうか?(サーバー時刻をクライアントに反映する)
> 本で調べても日付や時間の取得は載っているのですが、
> 変更方法は載っていませんでした。
> 最悪DATEコマンドをバッチファイルで実行するのかな?

あと、net timeコマンドを使ってやるという方法もありますね。
サーバーの時計をクライアントに反映するコマンドです。
詳しくはnet time /? をどうぞ。

WMIでもできるかもしれませんが、ちょっと未確認です。


To: なおきん さん

> >アプリケーションの追加と削除から…は、できないんですね(^^;
> >まあ、β版だしそんなもんか。
> そうなんですよね.

microsoft.public.scripting.wshというニュースグループで、このバグを報告しておけば、
もしかしたら正式版では改善されるかもしれませんね。

> Windows2000なのですが,
> winnt\infの下に,scripten.PNFというファイル(プレコンパイルセットアップ情報となっています)ならあるんですが,バイナリで中も見れないし,右クリックしてもアンインストールの類は選べないし,使い方が良く分かりません.

Win2000では、インストーラの仕様がちがうっぽいですね。
Win2000のは、Windows Installerだったと思います。


To: とむ さん

> InternetExplorer で XML ファイルを自動的に印刷する
> スクリプトを作っているのですが、印刷後スプールされるまで
> sleep するということが実現できません。

ぜんぜん違う方法ですが、
rundll32.exe C:\WINDOWS\SYSTEM\MSHTML.DLL,PrintHTML "%1"
はだめなのかなやっぱり(^^;

moto さん 2000年 12月 13日 15時 58分 31秒

>WSHなどを利用してPCのシステム時間を変更したいのですが、
>何か良い方法はないでしょうか?(サーバー時刻をクライアントに反映する)
安易な方法ですが、
1.サーバー時刻取得
2.クライアントにバッチファイル作成
  date 2000-12-13
  time 15:30:30
3.objWshShell.Run "バッチファイル名", 0
で実行する事にしました。(^^;

なおきん さん 2000年 12月 13日 13時 56分 38秒

解決しました!!!
根本的な解決では全然ありませんが,僕の初歩的な確認怠りでした.

僕はcwshというシェルプロンプトを使って普段暮らしているのですが,
こいつだと鳴るようです.

お騒がせしました.

今後はtcshに切り替えようかな・・・・
なにかお勧めありますか?

TEST さん (kunio.sadakane@a-i-d.co.jp) 2000年 12月 13日 09時 03分 41秒
URL:null

先ほどのTESTです。

現在IEブラウザが閉じられた時点で何らかの処理を行なおうと
考えていますが、閉じられたかどうかの判断がつかないので、
結局手付かずの状態です...
どういった方法があるのでしょうか。

TEST さん (kunio.sadakane@a-i-d.co.jp) 2000年 12月 13日 08時 59分 45秒
URL:null

25-03のTESTです。
23-46の内容がいまいち理解できません。具体的にどういった具合にスクリプトに盛り込めばよいのでしょう?

とむ さん (amuro@yahoo.co.jp) 2000年 12月 12日 21時 33分 24秒

こんにちは。とむと申します。
InternetExplorer で XML ファイルを自動的に印刷する
スクリプトを作っているのですが、印刷後スプールされるまで
sleep するということが実現できません。
良い方法がありましたらご教授頂けると幸いです。

Option Explicit
' 与えられたパラメータ(URL を)IE で印刷し、終了する。
' 実行コマンド
' WScript auto_p2.vbs URL

Dim IE
Dim arg
Dim rtn

rtn = 0
Set IE = WScript.CreateObject("InternetExplorer.Application")
Set arg= WScript.Arguments
IE.Visible = True

IE.Navigate arg.Item(0) ' 指定した URL へナビゲート

Do
WScript.Sleep 1000 ' Busy の間 1秒間隔でループ
Loop While IE.Busy=True
rtn = IE.ExecWB(6, 2) ' 印刷コマンド

Do
WScript.Sleep 3000 ' 3秒待つ
Loop While IE.Busy=True
IE.Quit ' 終了コマンド

なおきん さん 2000年 12月 12日 19時 28分 59秒

管理人様ありがとうござました

抽象的すぎて,もうしわけありませんでした.
自分でも現状よくわかっていないのです.
とりあえず,Scriptのエラーで,beepがなります(サウンドカードとは関係なく).
なんとなく昔に遊びで,var number:int
みたいに(型とか指定できるかな)愚行をしたときに,beepがなりっぱなしになり,cmd.exeが落ちる(ちなみにcscriptで走らせています)のを皮切りに,いまや
普通のたんなるスクリプトのエラーでも落ちます.しかもbeepがなりっぱなしになりながら落ちるので,相当回りに迷惑かけてます.

>> WSH5.6のアンインストールの方法を教えてください.

>アプリケーションの追加と削除から…は、できないんですね(^^;
>まあ、β版だしそんなもんか。
そうなんですよね.

>WSH2.0(Windows Script5.5)を上書きすることはできないのでしょうか。
>試してみてください。
>バージョンが上という理由で、上書きされないかもしれませんけど…。
これは何度となくやってみました,インストーラ自体は通常どおりに終了するのですが,WSHのバージョンは5.6と表示されます.(cscript ↓)

>それか、C:\WINDOWS\INF\SCR56EN.INFを"Active Uninstall"するといいのかも
>しれません。やったことがないので何ともいえませんが…。
上記のファイルが見当たりません.

Windows2000なのですが,
winnt\infの下に,scripten.PNFというファイル(プレコンパイルセットアップ情報となっています)ならあるんですが,バイナリで中も見れないし,右クリックしてもアンインストールの類は選べないし,使い方が良く分かりません.

どうかご教授お願いします.

moto さん 2000年 12月 12日 17時 44分 45秒

お久しぶりです。

WSHなどを利用してPCのシステム時間を変更したいのですが、
何か良い方法はないでしょうか?(サーバー時刻をクライアントに反映する)
本で調べても日付や時間の取得は載っているのですが、
変更方法は載っていませんでした。
最悪DATEコマンドをバッチファイルで実行するのかな?
とは思っているのですが、せっかくWEBなんだからゥァC隼廚い泙后」
どなたかお教え下さい。

Return