みなさ、、こんにちは。
いつも質問ばかりで申し訳無いのですがお願いします。
PC内に設定されたプリンタ名を取得したいのです。
過去ログからレジストリ内に登録されたプリンター名の場所はわかりました。
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Print\Printers\
このなかにあるプリンター名を取得するためにはどのようなスクリプトを
記入すればよいのでしょうか?
初めまして、毘政と申します。
WSHを使って、「Caps Lock」、「Num Lock」を押したときに
出る音を出してやりたいのですが、無理でしょうか?
会社のPCには、サウンドカードが付いていないので、Beep音しか出せませ
ん。(^^;)
おわかりになる方、よろしくご教授ください。m(_。_)m
WMIを使ってシステムのUptimeを取得するWSHプログラムを作ってみました。
即興なので間違ってたらすいません。また、ここは違うだろという突っ込み大歓迎です。
--
' SystemのUPTIMEを取得する
' WMIオブジェクトを取得
Set objLocator = CreateObject( "WbemScripting.SWbemLocator" )
Set objService = objLocator.ConnectServer( "SUMIDA", "root/cimv2" )
' タイムスタンプ関連のデータを取得
set objSystem = objService.ExecQuery( "Select * from Win32_PerfRawData_PerfOS_System" )
for each obj in objSystem
Timestamp = obj.properties_("Timestamp_Object").value
UpTime = obj.properties_("SystemUpTime").value
next
' なぜ10000000で割るのかは聞かないでください・・・(;_;)/
tmpTime = Int( (Timestamp - UpTime) / 10000000 )
Wscript.Echo( GetTimeStampFromSecond(tmpTime) )
' 秒数から経過時刻を取得する
Function GetTimeStampFromSecond( Seconds )
Dim Day, Hour, Minute, Second
Day = Int( Seconds / 86400 )
Seconds = Seconds - ( Day * 86400 )
Hour = Int( Seconds / 3600 )
Seconds = Seconds - ( Hour * 3600 )
Minute = Int( Seconds / 60 )
Second = Seconds - ( Minute * 60 )
GetTimeStampFromSecond = CInt( Day ) & " day(s) " & CInt( Hour ) & " hour(s) " & CInt( Minute ) & " minute(s) " & CInt( Second ) & " second(s) "
End Function
--
To. むたぐち様
> ところで、service_nameとobject_nameに関しては、やはりリソースキットがないと
> わからないのでしょうか。
実は今出先なので手元にリソキないんです。
そのためシステムモニタのオブジェクト名から、適当にWMIのオブジェクト名を推測してやってます^^;;;
それで相変わらずWMIオブジェクトのインスタンス値から、システムモニタのオブジェクトのインスタンス値を算出するので苦労してます。
先のuptimeの件ですが、「Win32_PerfRawData_PerfOS_System=@」オブジェクトにSystemUpTimeっていうそのまんまなプロパティ見つけたんですが・・・、値がなんと「126187302855000000」なんです。
uptimeコマンドの結果は「1 day(s), 4 hour(s), 5 minute(s), 37 second(s)」なので、101137秒のはずなのですが、何をどうしたらこんな桁になるか・・・
そこで近くのプロパティ等を使ってこねくりまわしたところ、次の式ができました
「Win32_PerfRawData_PerfOS_System=@のTimestamp_ObjectプロパティからSystemUpTimeプロパティの値を引いて、10000000で割るとuptimeから取得した秒数と等しくなる」
というものです。
根拠は特にないんです。値の近そうなやつを引いてみたらたまたま同じになったというだけで・・・(汗
現在はほとんどこんな感じです。Win32_PerfRawDataがシステムモニタが計算する前の値を保持している以上はやむをえないのでしょうが・・・。
是非システムモニタが使っている計算式が知りたいところです。
どっかにないかな・・・
To: さむ。 さん
> WMIを使ってパフォーマンスデータを取得することができました!
おお、さっそくのご報告、ありがとうございます。
> これはWMI-SDKのObject Browserを使って確認できました。慣れるまでちょっと大変でしたが^^;;
なんとなくインターフェースが謎ですよね、これ。
HTML+ActiveXコントロールで提供されているもので、基本的にIEで見るのですが。
> パフォーマンスデータを取得するソースを下に書いておきます。MRTG用なのでちょっと汚いですが、参考にしていただければ幸いです。
とても参考になります。
ところで、service_nameとobject_nameに関しては、やはりリソースキットがないと
わからないのでしょうか。
> for each obj in objMemory
> Wscript.Echo( obj.properties_("PagesPersec").value )
> next
properties_("hoge")で値を取り出す例、初めて見ました。
明示的にプロパティが定義されていないものに関しては、こういう感じで
取得するわけですね。
# ADSIでも同じようなのがあったなあ…。
> NGWSは.Netの古い名称みたいです。
なるほど。
COMの次はNETかあ、わかりやすいなあ、と思ったのは私だけだろうか(^^;
WMIを使ってパフォーマンスデータを取得することができました!
むたぐち様が書かれているように、
Win32_PerfRawData_<service_name>_<object_name>
で取得できました。
> もしかしたら、WMI SDKの付属ツール(オブジェクトビューアみたいなの)でこれ> らの一覧を見ることができるのかもしれません。
> 各オブジェクトのプロパティがわからないとどうしようもないですし。
これはWMI-SDKのObject Browserを使って確認できました。慣れるまでちょっと大変でしたが^^;;
MRTGで2K Serverの監視を始めました。まだメモリだけなのでこれからリソキに従って項目を増やしていく予定です。ただサイト全体がHTTPSで暗号化されているのでお見せできないのが残念です(;_;)
パフォーマンスデータを取得するソースを下に書いておきます。MRTG用なのでちょっと汚いですが、参考にしていただければ幸いです。
--
'
' \Memory\Pages / secを取得する(MRTG用)
'
' WMIオブジェクトを取得
Set objLocator = CreateObject( "WbemScripting.SWbemLocator" )
Set objService = objLocator.ConnectServer( "SUMIDA", "root/cimv2" )
' \Memory\Pages / secを取得
set objMemory = objService.ExecQuery( "Select * from Win32_PerfRawData_PerfOS_Memory" )
for each obj in objMemory
Wscript.Echo( obj.properties_("PagesPersec").value )
next
' Dummy Data
Wscript.Echo "0"
' SystemのUPTIMEを取得する
' uptimeコマンドから必要な文字列を取り出す
' ex) \\SUMIDA has been up for: 1 day(s), 23 hour(s), 29 minute(s), 5 second(s)
Set filt = CreateObject( "ComFilter.Filter.1" )
Uptime = filt.Exec( "uptime", "" )
Uptime = Mid( Uptime, InStr(Uptime, ":") + 2, InStr(Uptime, Chr(10)) - (InStr(Uptime, ":") + 2) )
Wscript.Echo Uptime
' uptimeの解説
Wscript.Echo "社員専用ホームページ"
--
ホントはUPTIMEもWMIで取得したかったんですが、なぜか値がEmptyになっていたので現在はコマンドから取得してます。そのためリモートマシンのUPTIMEが取れません(;_;)
> ところで、NGWSって何でしたっけ?
NGWSは.Netの古い名称みたいです。
長くなってすいません m(_ _)m
WMIの話で盛り上がれてうれしかったり。
To: ONO さん
> システム管理系の情報はWMIからとれるはずです。
> とりあえず、すぐにわかった空き物理めもりと空き論理メモリをとりだす
> サンプルです。
どうもありがとうございます。
空きメモリはWin32_OperatingSystemで取れるんでしたね。
私が前回挙げたクラス、はたして関係あるのでしょうか。
一応ヘルプには、Memory and PageFileのカテゴリに入っていたのですが。
> NGWSはきちんとインストールしないと動きません。
ところで、NGWSって何でしたっけ?
> .NET SDK ベータ1がダウンロードできるようになってますね。
いよいよβ版ですか。
そちらのページのコンテンツ、期待しています。
To: おじゃる さん
> >IPアドレスはEnableStaticメソッドで設定できるようですが、ほかも変えられるんでしょうか。
> ># ちょっと今、手元にヘルプがないもので…(^^;
> それは知りませんでした。(^^;
> 基本的にWMIって情報の取得しかできないものだと・・・
WMIのメソッドは少ないのは確かなのですが、あるものにはあります。
EnableStaticメソッドについてはこちら。
http://msdn.microsoft.com/library/psdk/wmisdk/clascomp_27u6.htm
DHCP関係のメソッドもこの前後にあります。
# MSDN Online Library、検索機能がついて便利になりましたね。
> 私の場合、NICをDHCPにする必要があったので
> 結局レジストリを書き換えることで対応しました。
> 但し、レジストリ内でNICに番号が振られているため(キーが固定ではない)
> NICの検索用モジュールを作成するのが大変でした。
レジストリ書き換えでうまくいったわけですね。良かったです。
WMIは出番なしでしたか(^^;
> WMIは情報の収集には十分活用できますが、
> 設定に使うには少々厳しいかもしれませんね。
> (私が知らないだけ?(^^;)
たしかにほしい機能に限ってなかったりしますし…。
To: WSH? さん
> WSHを使用してレジストリの編集をする方法があれば教えて頂きたいのですが。。。
>
> 対象は
> HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main
> のStart Pageの値です。
ちなみに、WshShell.Reg* 系のメソッドで対応しきれないレジストリ操作は、WMIが
かなり有効です。
# と、無理やりWMIの話に持っていったりする
参考記事:
12-45 管理人むたぐち さん 2000/04/23 00:01
To: さむ。 さん
> WMIにはシステムモニタの各オブジェクトに相当するオブジェクトはやっぱりないのでしょうか。WMIのオブジェクトは膨大なので、欲しいシステムカウンタのオブジェクトが持っている情報に相当するWMIのオブジェクトを探すのに苦労しそうです・・・。
> MSDNライブラリを見る限りでは「Performance Counter Provider」がそれっぽいのですがイマイチ理解できません。
Performance Counter Providerについては
http://msdn.microsoft.com/library/default.asp?URL=/library/psdk/wmisdk/sdkprov_9rxu.htm
に説明があります。
Win32_PerfRawData_<service_name>_<object_name>、つまり、
Win32_PerfRawData_PerfDisk_LogicalDisk のようにすればいいとありますね。
で、service_nameとobject_nameのリストが、Win2000のリソースキットにある、と
書いてあります。
もしかしたら、WMI SDKの付属ツール(オブジェクトビューアみたいなの)でこれらの
一覧を見ることができるのかもしれません。
各オブジェクトのプロパティがわからないとどうしようもないですし。
To: 大トロ さん
> 出来ました!出来ました!!\(^O^)/
> 教えて頂いたURLからMDAC2.0をダウンロードしてきまして、
> それと同時にJet3.5もダウンロードしてきました。
良かったです。
私は何もお役に立てませんでしたが(^^;
SIGNAL9さん、どうもありがとうございました。
To:SIGNAL9 さん
こんにちは!大トロです。
>MDAC2.XにはJetのドライバはついていたと記憶しております。
>MDACインストール時に選択的に入れるオプションがなかったで
>しょうか。
>なければ、Access自体(Office)の中に含まれているかと
>思うのですが、Jet3.5用OLE DBですと、こちらもご参照に
>なるとよろしいかと。
>http://www.microsoft.com/JAPAN/support/kb/articles/J050/0/41.htm
出来ました!出来ました!!\(^O^)/
教えて頂いたURLからMDAC2.0をダウンロードしてきまして、
それと同時にJet3.5もダウンロードしてきました。
私はてっきりOfficeで通常はインストールされているものだとばかり思ってました。
Officeも何度か再インストールしたのですが、MicrosoftJet3.5は入りませんでした。
何か色々やらないと、動かないんですね。(^^ゞ
でもSIGNAL9 さんのおかげで、遂にVBSでAccessを動かす事が出来ました。
今回色々勉強になったんで、ますますVBSにはまりそうです。
本当にありがとうございました。m(__)m
今後とも宜しくお願い致します。
むたぐち様。ONOさま。
情報ありがとうございます!
おかげ様で物理メモリの空き容量を取得することができました。
今回このような質問をしたのは私が管理している2K鯖のパフォーマンスをMRTGで取得しようとしたからなのです。
2K鯖のリソキにはシステムモニタのこの辺のオブジェクトのこの辺のカウンタを監視しなさいねって書いてあるんですが、それをどうやって取得すればいいものか悩んでました^^;
WMIにはシステムモニタの各オブジェクトに相当するオブジェクトはやっぱりないのでしょうか。WMIのオブジェクトは膨大なので、欲しいシステムカウンタのオブジェクトが持っている情報に相当するWMIのオブジェクトを探すのに苦労しそうです・・・。
MSDNライブラリを見る限りでは「Performance Counter Provider」がそれっぽいのですがイマイチ理解できません。
もっと精進しなくては!
では、またよろしくお願いします。m(_ _)m
すみません、RegWriteで解決しました。
始めまして。
IEのホームページアドレスをWSHを使用して変更する事は可能でしょうか?
という言い方は誤解されるかも知れないので、
WSHを使用してレジストリの編集をする方法があれば教えて頂きたいのですが。。。
対象は
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main
のStart Pageの値です。
宜しくお願い致します☆
To むたぐち さん
かなり遅くなってしまいましたが・・・
>IPアドレスはEnableStaticメソッドで設定できるようですが、ほかも変えられるんでしょうか。
># ちょっと今、手元にヘルプがないもので…(^^;
それは知りませんでした。(^^;
基本的にWMIって情報の取得しかできないものだと・・・
今ネットワーク管理ツール関連の製品を数種評価してますが、
どれも情報の取得はしても”設定”までは行わないようです。
情報は、WMIもしくはレジストリ情報も含めて取得しているようです。
私の場合、NICをDHCPにする必要があったので
結局レジストリを書き換えることで対応しました。
但し、レジストリ内でNICに番号が振られているため(キーが固定ではない)
NICの検索用モジュールを作成するのが大変でした。
WMIは情報の収集には十分活用できますが、
設定に使うには少々厳しいかもしれませんね。
(私が知らないだけ?(^^;)
さむ。さんへ
システム管理系の情報はWMIからとれるはずです。
とりあえず、すぐにわかった空き物理めもりと空き論理メモリをとりだす
サンプルです。
-----------------------------------------------------------
svr = "localhost"
Set objLocator = CreateObject("WbemScripting.SWbemLocator")
Set objService = objLocator.ConnectServer (svr, "root/cimv2")
strOSQuery = "Select * from Win32_OperatingSystem"
set objOS = objService.ExecQuery(strOSQuery)
for each machine in objOS
MsgBox "空き物理メモリ:" & machine.FreePhysicalMemory & _
vbCrLf & "空き論理メモリ:" & machine.FreeVirtualMemory
next
-----------------------------------------------------------
vbsファイルとして保存して実行してみてください。
#NGWSはきちんとインストールしないと動きません。
まあ、当然ですが。。。(^^;
.NET SDK ベータ1がダウンロードできるようになってますね。
うちのサイト更新しなきゃ。。。
To:大トロさん
MDAC2.XにはJetのドライバはついていたと記憶しております。
MDACインストール時に選択的に入れるオプションがなかったで
しょうか。
なければ、Access自体(Office)の中に含まれているかと
思うのですが、Jet3.5用OLE DBですと、こちらもご参照に
なるとよろしいかと。
http://www.microsoft.com/JAPAN/support/kb/articles/J050/0/41.htm
To: ばじ さん
> obj.Navigateに値を渡した後の待ち方がネックなのです。
> ネットワークの状況によって必ずしも同じ時間だけ待っていても
> 正しくソースが取れないことがあるのです。
obj.BusyがFalseになるまでループして待つのがいちばん簡単です、が、これでは
不十分なことがあるようです。
それに加えてobj.readyState=4になるまで待つと、大体OKみたいです。
一番いいのは、WScript.CreateObjectの第二引数を使って、IEオブジェクトのDocumentComplete
イベントをバインドする方法です。
詳しくは、過去記事
20-34 管理人むたぐち さん 2000/08/19 02:45
9-30 管理人むたぐち さん 2000/02/25 02:38
などを見てください。
To: kei1 さん
> #「ひょんなこと」っていうのは大したことではなく、
> 人づてに「WSHっていうものがあって、Windowsでもこんな事が出来る」
> と伺ったものです。
> それまでは、*.bat形式にすること位しか思いつかなかったものですから...
最近、うちのサイトに来る方々がいつWSHを知ったのか、とかの情報が
気になりまして(^^;
# 客層はどんな感じなのかなあ、と。
実は、アンケートフォームをひそかに作成中だったりします。
完成したときには、みなさんのご協力お願いします。
To: SIGNAL9 さん
> #たまに出てくるSIGNAL9でございます。
どうもありがとうございます。
頼りにしてます(^^;
# 本文に関しては何もコメントできません…。あしからずご了承を。
To: さむ。 さん
> Win2Kにある、システムモニタの各情報(\Memory\Available Bytesとか、\Memory\Pages /secとか)をWSHから取得したいのですが、方法が思いつきません。
> パフォーマンス用のオブジェクトがないかと思って探したんですが、見つかりませんでした(NGWSのSDKにはC#のサンプルがあったんですが、動きませんでした(;_;))
Win32_LogicalMemoryConfiguration
Win32_PageFileUsage
Win32_PageFileSetting
Win32_Process
あたりが関係してそうです。
ちなみに、前に紹介したRubyの本には、WMIを使ったタスクマネージャが紹介されています。
これによると、たとえばプロセスが終了した、などのイベントを取得できるみたいなのです。
私はまだまだWMIの全貌をつかんでいないようです(^^;
To:SIGNAL9 さん
SIGNAL9 さん、はじめまして!
RESありがとうございます。m(__)m
この後とも宜しくお願い致します。
>(3)プロパティを設定し、接続テストを行います。
> とりあえず、「プロバイダ」と「接続」タブで、OLEDBプロバイダ
> と接続先MDBを選び、「接続」タブにある「接続のテスト」ボタンを
> 押してみて、OKだったらOKです(^^;)
>*ここまで出来なかったら、MDACがちゃんと入っていないのでしょう。
OLEDBプロバイダで接続先を選ぼうと思ったのですが、ODBC Drivers
SQL Server、Oralce、Simple Providerはあるのですが、Accessがらみがないんです。
これは普通でしょうか?それとも何かが足りないのでしょうか?
ちなみにMDACは2.6をダウンロードしてインストールしてます。
変な質問ですみませんが、アドバイス宜しくお願い致します。。m(__)m
初めてカキコします。
Win2Kにある、システムモニタの各情報(\Memory\Available Bytesとか、\Memory\Pages /secとか)をWSHから取得したいのですが、方法が思いつきません。
パフォーマンス用のオブジェクトがないかと思って探したんですが、見つかりませんでした(NGWSのSDKにはC#のサンプルがあったんですが、動きませんでした(;_;))
他には以前ここの掲示板でも紹介されてた以下のコラムを読んだのですが、ディスクの空き容量は取得できるもののこの情報を他のオブジェクトにまで生かせません。
http://www.microsoft.com/japan/developer/thisweek/wmi/koj990730.asp
何かいい方法はないでしょうか・・・
#たまに出てくるSIGNAL9でございます。
大トロさん:
以下の作業を試して見てください。
(1)拡張子udlで適当なファイルを作成します。
*OLEDB(MDAC2.5)が正常に入っていれば、「表の前に小さなパソコン」
がかぶったアイコンになる筈です。
(2)そのプロパティを開きます。
*OLEDB(MDAC2.5)が正常に入っていれば、OLEDB設定のダイアログが
出るはずです。
(3)プロパティを設定し、接続テストを行います。
とりあえず、「プロバイダ」と「接続」タブで、OLEDBプロバイダ
と接続先MDBを選び、「接続」タブにある「接続のテスト」ボタンを
押してみて、OKだったらOKです(^^;)
*ここまで出来なかったら、MDACがちゃんと入っていないのでしょう。
(4)そのUDLファイルをテキストエディタで開いて見てください。
一例ですが、こんな感じになるはずです(私はJet3.5を使ってい
ないので4.0での例です)。
[oledb]
; Everything after this line is an OLE DB initstring
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\foo\TEST.mdb;Persist Security Info=False
これをそのまま、VBSのソースに書き直します。
Set cn = CreateObject("ADODB.Connection")
cn.Provider = "Microsoft.Jet.OLEDB.4.0"
cn.Properties("Persist Security Info") = "False"
cn.Properties("Data Source") = "C:\foo\TEST.mdb"
cn.Open
お試しあれ。
To:管理人むたぐち さん
RESありがとうございます。(^○^)
今後とも宜しくお願い致します。m(__)m
>ADOやAccessは、私と最も縁遠いところにあることもあって、ほとんどわかりません(^^;
>ここは他の方のフォローを待ちましょう。
># 実際のソースの問題の箇所を書いていただくと、解決の近道になるかもしれません。
実際のソースは以下の通りです。
もし、分かる方が居ましたら宜しくお願い致します。m(__)m
Const adLockOptimistic = 3
Dim Cn
'//接続オブジェクトの作成
Set Cn = CreateObject("ADODB.Connection")
'//OLE DBプロバイダの指定
Cn.Provider = "Microsoft.Jet.OLEDB.3.51"
'//接続文字列としてMDBファイルを指定
Cn.ConnectionString = "Test.mdb"
'//接続
Cn.Open
Cn.Openで、エラーが出ます。
To:管理人むたぐち様
ありがとうございます。
Basp21ですか、さっそく見てみることにします。
#「ひょんなこと」っていうのは大したことではなく、
人づてに「WSHっていうものがあって、Windowsでもこんな事が出来る」
と伺ったものです。
それまでは、*.bat形式にすること位しか思いつかなかったものですから...
はじめまして
goowebmailをダウンロードするためのスクリプトを作るのに
参考にさせていただいています。
先行してとりあえずログインした時に新着件数が出るところのソースだけを
とるスクリプトを作りました。
そこでなんですが
obj.Navigateに値を渡した後の待ち方がネックなのです。
ネットワークの状況によって必ずしも同じ時間だけ待っていても
正しくソースが取れないことがあるのです。
よい待ち方ないですか?
To: Lib30 さん
> その配列は多次元配列で、「メソッドがありません」といった感じのエラーがでてきたのですが。
> どうもお騒がせしました。
いえいえ、最新版が疑われるような製品をいつも出しているMSが悪いのです(^^;
あ、今思ったんですが、SP1を入れると、新しく開いたウィンドウからファイルを
ダウンロードするとそのウィンドウが勝手に閉じられてしまうというIE5.5のバグ(仕様(^^;)は
直るのでしょうか。
# IE5.5のHTML Document Object Modelについてぜんぜん調べてないなあ…。
To: 大トロ さん
> まだまだ未熟者ですが、このHPを参考に頑張りたいと思いますので
> 宜しくお願いします!m(__)m
初心者の方々が、うちのページを参考にしてスキルアップして
いただくというのは、なんかうれしいですね。
がんばってください。
> ADOを使って、MS-AccessのMDBの中に追加するスクリプトなのですが
> 実行すると、「プロバイダが見つかりません。正しくインストールされていない
> 可能性が有ります」と表示されてしまいます。
> ADO、WSHは最新のものをダウンロードしてきましたが結果が変わらずでゥ。
うーん…。
ADOやAccessは、私と最も縁遠いところにあることもあって、ほとんどわかりません(^^;
ここは他の方のフォローを待ちましょう。
# 実際のソースの問題の箇所を書いていただくと、解決の近道になるかもしれません。
To: kei1 さん
> WSHはまったくのド素人ですが、ひょんな事から存在を知り、
> このサイトにたどり着きました。
# その「ひょんなこと」って何だろう?
# ちょっと気になるところですね(^^;
> 早速ですが、WSHではftpは使えるのでしょうか?
BASP21などのCOMコンポーネントを使うのが簡単だと思います。
# 公開場所はリンクページを参照してください。
もしくは、IE5.0のFTPをフォルダとして開く機能を使って何とかする、とか。
C:\Windows\Web\ftp.htt を見ると、FTPフォルダのオブジェクト(FtpWebView)が使われて
いるのがわかると思います。
これに対応するタイプライブラリが、MSIEFTP 1.0 Type Library(C:\WINDOWS\SYSTEM\MSIEFTP.DLL)
になります。これをVBのオブジェクトビューア等で調べれば仕様がわかると思います。
anonymousでログインしたり、パスワードを指定してログインするメソッドなどが
ありますね。
そうやってログインしたあと、各ファイルを表すFolderItemオブジェクトを、Folderオブジェクトの
Copyメソッドを使ってダウンロードする…とかできるのかな?
Shell.NameSpace("ftp://nantokaka/") などでFolderオブジェクトを取得できるんでしょうか。
ぜんぜん未確認ですけど(^^;
みなさん初めまして。
WSHはまったくのド素人ですが、ひょんな事から存在を知り、
このサイトにたどり着きました。
よろしくお願いいたします。
早速ですが、WSHではftpは使えるのでしょうか?
現在、UNIXからローカルのPCへ.xlsファイルを持ってきて、
そこでExcelを開きたいと考えています。
WSHでftpまで出来れば一発で処理を記述できそうですが、
ftpをそのままでは実行できないとなると、
ftp実行バッチを作ってRunするという形になると思います。
そうすると、WSHのスクリプト部と、バッチファイルの2つが必要となり、
ちょっとめんどうなものですから...
どなたかアドバイスをよろしくお願いいたします。
皆さん、はじめまして。
大トロといいます。
VBScriptを触り始めて、2週間ぐらいになります。
プログラムもほとんど触った事が無い私が、VBSに
挑戦し始めたのですが結構手軽に色々な事が出来るので
はまってきてます。
まだまだ未熟者ですが、このHPを参考に頑張りたいと思いますので
宜しくお願いします!m(__)m
実は今、某雑誌のVBSの例題をやりながら勉強してるのですが
実行すると表示されるエラーメッセージの意味が分からず困ってます。
どなたか経験が有れば教えて頂きたくカキコしました。
ADOを使って、MS-AccessのMDBの中に追加するスクリプトなのですが
実行すると、「プロバイダが見つかりません。正しくインストールされていない
可能性が有ります」と表示されてしまいます。
ADO、WSHは最新のものをダウンロードしてきましたが結果が変わらずでゥ。
何か考えられる原因とかありますでしょうか?
もし経験のある方が居ましたら、アドバイスお願い致します。m(__)m
To 管理人むたぐちさん
>> 配列の sort メソッドが使用できなくなってしまいました。
>ちなみに、できないというのはどういう状況なんでしょうか。
>エラーが出る?
何度かやっているうちに、エラーがでなくなりました。どうもこちらの早とちりだったようです。
その配列は多次元配列で、「メソッドがありません」といった感じのエラーがでてきたのですが。
どうもお騒がせしました。
To: Lib30 さん
> IE5.5sp1の仕様変更でしょうか?
> 配列の sort メソッドが使用できなくなってしまいました。
> 今までの5.5ではできたのに...。
これってJScriptの配列オブジェクトのsortメソッドのことですよね。
できなくなったんですか。
# VBSではもともとできないですけど。
ちなみに、できないというのはどういう状況なんでしょうか。
エラーが出る?
To: ta- さん
> すでに存在するファイルを作りに行った時にエラーが出てしまうので、
> 今から作ろうとしているファイルやフォルダがあるかどうかを
> 確認する方法はありますか?
FileExistsメソッドとFolderExistsメソッドです。
WSHでファイル操作をしているのですが、
すでに存在するファイルを作りに行った時にエラーが出てしまうので、
今から作ろうとしているファイルやフォルダがあるかどうかを
確認する方法はありますか?
今on error処理でなんとかしてます。
To むたぐち さん
>ローカルなHTMLだと、ステータスバーに「マイコンピュータ」と表示されますが
>「マイコンピュータ」ゾーンは、通常はセキュリティ設定をおこなえません。
知りませんでした。
ありがとうございました。
IE5.5sp1の仕様変更でしょうか?
配列の sort メソッドが使用できなくなってしまいました。
今までの5.5ではできたのに...。
むたぐちさんありがとうございました。
To 管理人むたぐち さん
レスありがとうございます。
>> Shell Objects - FolderオブジェクトのGetDetailsOfメソッドで、ファイルの
>> サイズや更新日時等の情報を列挙しています。
>> ただ、デスクトップ内のオブジェクトに関しては取得できません。
>> FolderItemオブジェクトのSize,ModifyDateプロパティでも同様です。
>試してみると、たしかにそうなりますね。
>デスクトップは、フォルダのWeb表示ができないことが関係してそうです。
>(WinMe,2000ではどうなりましたっけ)
スミません。WinMe,2000は、持っていませんので未確認です。
>仮想フォルダであるデスクトップではなく、デスクトップの実体のフォルダを
>指定してやればうまくいきます。
>つまり、
>Shell.NameSpace(0)のかわりに、Shell.NameSpace(16)とします。
できました!! 二つ存在するすることに気がついていませんでした。
ありがとうございます。今後共、宜しくお願い致します。
To: 【おじさま】 さん
> その時その時の新しい Windows や IE は、特に使用上困っていなく
> ても新しいマシンを購入しなくてはならないような気にさせる役割は
> 果たしてますよね。
ええ、ある意味使命ですね(^^;
> >問題のバグは、IEのウィンドウが、非アクティブでも最前面に表示されてしまう
> >というものです。
>
> 言われてみればこれは経験があります。それも結構頻繁に。IE5.5SP1
> で直ってるかどうかは今のところ不明ですが、きっとすぐに思い知ら
> されるでしょう。
なんでこんなバグが手付かずで残っているのか、不思議です。
To: 西 さん
> お久しぶりです。さっそく質問なんですがボタンを使って閉じるスクリプトは
> <BUTTON onclick="window.close()">閉じる</BUTTON>
> のようにできますが、ボタンを押してWSHなどを実行させて同時にそのボタンがあるHTAを閉じることはできるのでしょうか。
<BUTTON onclick="ExecScript">閉じる</BUTTON>
Sub ExecScript()
WshShell.Run "hoge.vbs"
window.close
End Sub
とかでしょうか。
> もう1つ質問なんですが以前教えていただいたマイコンピュータの表示方法のこと
> なのですが、ie5.5をインストールしたあとマイコンピュータが表示されなくなってしまいました。これって仕様が変わったのでしょうか。
WinMe(IE5.5)では普通に表示されましたが…。
ちょっとわかりません。
To: jirozo さん
> 以前からWSHに興味があったのですが、ずっと手付かずのままでした。
> が、このようなすばらしいサイトがあったのですね!感激ですよ!
お褒めに預かり光栄です。
うちのサイトにある情報は、けっこう今でも需要があるみたいで、安心しております(^^;
> なにとぞ宜しくお願いします。
こちらこそよろしくお願いします。
To: イエペス さん
> Web検索で、ここにたどり着きました。今後共、宜しくお願いします。
関係ないですけど、google(http://www.google.com/)は良いですね!
> Shell Objects - FolderオブジェクトのGetDetailsOfメソッドで、ファイルの
> サイズや更新日時等の情報を列挙しています。
> ただ、デスクトップ内のオブジェクトに関しては取得できません。
> FolderItemオブジェクトのSize,ModifyDateプロパティでも同様です。
試してみると、たしかにそうなりますね。
デスクトップは、フォルダのWeb表示ができないことが関係してそうです。
(WinMe,2000ではどうなりましたっけ)
仮想フォルダであるデスクトップではなく、デスクトップの実体のフォルダを
指定してやればうまくいきます。
つまり、
Shell.NameSpace(0)のかわりに、Shell.NameSpace(16)とします。
To: スズキ さん
> ウェブページ上から、メモ帳を起動する以下のようなプログラムを作成しました。
>
> メモ帳が起動する前に「このページの ActiveX コントロールは、安全ではない可能性があり、ページのほかの部分に影響するかも知れません。」というダイアログが表示されます。
> 「インターネットオプション」−「セキュリティ」にて「ダイアログを表示する。」のチェックは、はずしてあります。
>
> このダイアログを表示させない方法をご存知の方、是非、教えてください。
> (使用環境 OS:95、IE5.5です)
設定を施したセキュリティゾーンと、実際にHTMLを動かしているセキュリティゾーンが
異なっているという可能性はないですか。
ローカルなHTMLだと、ステータスバーに「マイコンピュータ」と表示されますが、
「マイコンピュータ」ゾーンは、通常はセキュリティ設定をおこなえません。
無理やり設定する方法は、過去にこの掲示板に書いたことがあります。
(11-22 管理人むたぐち さん 2000/04/04 01:24 )
ウェブページ上から、メモ帳を起動する以下のようなプログラムを作成しました。
メモ帳が起動する前に「このページの ActiveX コントロールは、安全ではない可能性があり、ページのほかの部分に影響するかも知れません。」というダイアログが表示されます。
「インターネットオプション」−「セキュリティ」にて「ダイアログを表示する。」のチェックは、はずしてあります。
このダイアログを表示させない方法をご存知の方、是非、教えてください。
(使用環境 OS:95、IE5.5です)
<HTML>
<BODY>
<INPUT TYPE=BUTTON VALUE="NotePad" NAME="BtnNP">
<SCRIPT LANGUAGE="VBScript">
<!--
Sub BtnNP_OnClick
Dim WshShell
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "C:\WINDOWS\NOTEPAD.EXE" 'メモ帳を起動します。
End Sub
-->
</SCRIPT>
</BODY>
</HTML>
Web検索で、ここにたどり着きました。今後共、宜しくお願いします。
Shell Objects - FolderオブジェクトのGetDetailsOfメソッドで、ファイルの
サイズや更新日時等の情報を列挙しています。
ただ、デスクトップ内のオブジェクトに関しては取得できません。
FolderItemオブジェクトのSize,ModifyDateプロパティでも同様です。
デスクトップの場合には、違うやり方をするのでしょうか?
ご教授の程、お願い致します。
もう1つ質問なんですが以前教えていただいたマイコンピュータの表示方法のこと
なのですが、ie5.5をインストールしたあとマイコンピュータが表示されなくなってしまいました。
これって仕様が変わったのでしょうか。
・問題のスクリプト(フレームのタグを追加してあります。)
<script language="VBScript">
Sub cmdTest_OnClick()
'マイコンピュータ内のドライブを選択
Set oFL= Explorer.FileList
Set oFolder =oFL.Folder
Set oFolderItems = oFolder.Items
For Each oFolderItem In oFolderItems
If oFolderItem.IsFileSystem Then
oFL.SelectItem oFolderItem,1 '選択
Else
oFL.SelectItem oFolderItem,0 '選択解除
End If
Next
End Sub
</script>
<iframe id="Explorer" src="file:///::{20D04FE0-3AEA-1069-A2D8-08002B30309D}" width="100%" height="100%"></iframe>
<HTML>
<FRAMESET rows="50,*" framespcing="0" frameborder="0" border="0" >
<FRAME SRC="frame_a.htm" name="top" scrolling="no">
<FRAMESET cols="100,*" framespacing="0" frameborder="0" border="0">
<FRAME src="frame_b.htm" name="menu" scrolling="no" >
<FRAME src="frame_c.htm" name="main" scrolling="auto" >
</FRAMESET>
</HTML>
</FRAMESET>
もう1つ質問なんですが以前教えていただいたマイコンピュータの表示方法のこと
なのですが、ie5.5をインストールしたあとマイコンピュータが表示されなくなってしまいました。これって仕様が変わったのでしょうか。
・問題のスクリプト(フレームのタグを追加してあります。)
<script language="VBScript">
Sub cmdTest_OnClick()
'マイコンピュータ内のドライブを選択
Set oFL= Explorer.FileList
Set oFolder =oFL.Folder
Set oFolderItems = oFolder.Items
For Each oFolderItem In oFolderItems
If oFolderItem.IsFileSystem Then
oFL.SelectItem oFolderItem,1 '選択
Else
oFL.SelectItem oFolderItem,0 '選択解除
End If
Next
End Sub
</script>
<iframe id="Explorer" src="file:///::{20D04FE0-3AEA-1069-A2D8-08002B30309D}" width="100%" height="100%"></iframe>
<HTML>
<FRAMESET rows="50,*" framespcing="0" frameborder="0" border="0" >
<FRAME SRC="frame_a.htm" name="top" scrolling="no">
<FRAMESET cols="100,*" framespacing="0" frameborder="0" border="0">
<FRAME src="frame_b.htm" name="menu" scrolling="no" >
<FRAME src="frame_c.htm" name="main" scrolling="auto" >
</FRAMESET>
</HTML>
</FRAMESET>
もう1つ質問なんですが以前教えていただいたマイコンピュータの表示方法のこと
なのですが、ie5.5をインストールしたあとマイコンピュータが表示されなくなってしまいました。これって仕様が変わったのでしょうか。
・問題のスクリプト(フレームのタグを追加してあります。)
<script language="VBScript">
Sub cmdTest_OnClick()
'マイコンピュータ内のドライブを選択
Set oFL= Explorer.FileList
Set oFolder =oFL.Folder
Set oFolderItems = oFolder.Items
For Each oFolderItem In oFolderItems
If oFolderItem.IsFileSystem Then
oFL.SelectItem oFolderItem,1 '選択
Else
oFL.SelectItem oFolderItem,0 '選択解除
End If
Next
End Sub
</script>
<iframe id="Explorer" src="file:///::{20D04FE0-3AEA-1069-A2D8-08002B30309D}" width="100%" height="100%"></iframe>
<HTML>
<FRAMESET rows="50,*" framespcing="0" frameborder="0" border="0" >
<FRAME SRC="frame_a.htm" name="top" scrolling="no">
<FRAMESET cols="100,*" framespacing="0" frameborder="0" border="0">
<FRAME src="frame_b.htm" name="menu" scrolling="no" >
<FRAME src="frame_c.htm" name="main" scrolling="auto" >
</FRAMESET>
</HTML>
</FRAMESET>
はじめまして、こんにちは。
以前からWSHに興味があったのですが、ずっと手付かずのままでした。
が、このようなすばらしいサイトがあったのですね!感激ですよ!
これからゆっくりお勉強していこうと
ちょくちょく寄らせて頂きたいと思っています。
なにとぞ宜しくお願いします。
お久しぶりです。さっそく質問なんですがボタンを使って閉じるスクリプトは
<BUTTON onclick="window.close()">閉じる</BUTTON>
のようにできますが、ボタンを押してWSHなどを実行させて同時にそのボタンがあるHTAを閉じることはできるのでしょうか。
管理人むたぐちさん
>Me用なんてのがあるんですか。
>なんか考えさせられてしまうなあ…。
スクリプト関連では
wscript.exe 5.1.0.4711
cscript.exe 5.1.0.4711
以外は新しくなっていないようです。しかもこのふたつは Win2000
ではインストールされません(これ以外にも Outlook Express など
いくつかのファイルは例の如く Service Pack 2 を待つことになる
のかもしれません)。WinMe では新しくなるようです。
>WinMeって要するにベンチマークソフトなんですね。(ちがうちがう)
その時その時の新しい Windows や IE は、特に使用上困っていなく
ても新しいマシンを購入しなくてはならないような気にさせる役割は
果たしてますよね。
>問題のバグは、IEのウィンドウが、非アクティブでも最前面に表示されてしまう
>というものです。
言われてみればこれは経験があります。それも結構頻繁に。IE5.5SP1
で直ってるかどうかは今のところ不明ですが、きっとすぐに思い知ら
されるでしょう。
○Lesson再開
1年くらい腐っていたLessonを再開しました。
といっても、以前ほどのパワーがないので、簡単にまとめていく方針にしたいと思います。
Lesson14も保留ということにします。全部網羅してやろうと考えたのが敗因だったみたいなので。
私が本当にやりたかったのは、shellオブジェクト関係なわけで、先にそこからやることも
考えています。
○IE5.5の新機能 - その2
以前(21-31 管理人むたぐち さん 2000/09/02 19:28)やると言っておいて
忘れていたやつです。
IE5.0の新機能もついでに書いておきます。
(1)IE5.0により追加されるオブジェクト(Win2000のみ使用可)
・Folder2
HaveToShowWebViewBarricadeプロパティ(WebViewBarricadeがあるか否か?)
OfflineStatusプロパティ(オフラインフォルダの状態?)
Selfプロパティ(folder.Items.Itemとほぼ同じ。そのフォルダのFolderItemオブジェクトを返す)
DismissedWebViewBarricadeメソッド(WebViewBarricadeを無効にする?)
Synchronizeメソッド(オフラインフォルダの同期)
・IShellDispatch2
「オブジェクトの解説」参照
・FolderItems2
InvokeVerbExメソッド (ファイルを複数選択したときの右クリックメニューを実行。recycle.httに使われている)
・IShellLinkDual2
Targetプロパティ (リンク先のファイルのFolderItemオブジェクトを返す)
(2)IE5.5により追加されるオブジェクト(WinMe,2000のみ)
・Folder3
ShowWebViewBarricadeプロパティ (WebViewBarricadeが有効かどうか?)
・IShellDispatch3
AddToRecentメソッド (「最近使ったファイル」にファイルを登録?)
・FolderItems3
Filterメソッド (ワイルドカードを使って、選択アイテムを絞り込める??)
Verbsプロパティ (ファイルを複数選択したときの右クリックメニューを格納した FolderItemVerbsオブジェクトを返す)
Filterメソッドが面白そうですね。引数がよくわからないのですが、いずれ調べてみようと思います。
To: 【おじさま】 さん
> ie5setup.exe も正式な場所に公開されたようですし、分かっている範
> 囲では Win2000 用は昨日の午後、WinMe 用は今朝からダウンロードで
> きるようになっています。今は全部大丈夫なんじゃないでしょうか。
> 落としてはいませんが、WinMe 用は 10MB くらいでした。Win9x 用や
> NT 用は 30MB 弱だったかな。
Me用なんてのがあるんですか。
なんか考えさせられてしまうなあ…。
> WinMe は持っているのですがインストールするマシンがありません。
> 今からデスクトップを Win2000 との2本立てにするのも面倒だし、
> ノートがふたつあるのですが、どちらも古いパワーのないマシンで
> Win95OSR2 + IE4.01SP2 と Win98SE + IE5.01SP1 で使っています。
WinMeって要するにベンチマークソフトなんですね。(ちがうちがう)
> >あのZオーダーが狂うバグは直るんでしょうか。(Win2000)
>
> それ知りません(^^;)。IE を複数開いていると前面にある IE のメニュ
> ーバーが無効になることがたまにあったのですが(多分 5.01 の頃から
> だと思います)それでしょうか。後ろにある IE を前面にしようとして
> もできないというのも経験したことがありますが、それかもしれない。
それも有名なバグですね。私自身はこちらのバグには数回しか遭ったことが
ないですが。
問題のバグは、IEのウィンドウが、非アクティブでも最前面に表示されてしまう
というものです。
これが迷惑で仕方ないのです。
管理人むたぐちさん、レスありがとうございます。
コンポーネント作りにチャレンジしてみます。
ではでは
管理人むたぐち さん
>なんか早いですね。
>なかなかSP1が出なかった某OSとはえらい違いだ(^^;
今回は何の前触れもなく突然でした。焦ったのか ie5setup.exe の中に
はタイムスタンプは新しいのですが、内容は古いままのテキストファイ
ルが入っています。
>それほど食指が動かないのも事実。
こういうのにすぐ反応するのは、「例え人柱になっても少しでも新しい
ファイルでなければ気になって夜も寝られない」というオタクだけでし
ょうし(^^;)。私がそうなのですが。
* Mshta.exe は新しくなってます(要するに IE と同じバージョンと
いうことなのですが)。
ie5setup.exe も正式な場所に公開されたようですし、分かっている範
囲では Win2000 用は昨日の午後、WinMe 用は今朝からダウンロードで
きるようになっています。今は全部大丈夫なんじゃないでしょうか。
落としてはいませんが、WinMe 用は 10MB くらいでした。Win9x 用や
NT 用は 30MB 弱だったかな。
>また余計なことを付け加えておくと、現在Win98とMeの二本立てで、2000はぜんぜん
>使ってなかったりします。
WinMe は持っているのですがインストールするマシンがありません。
今からデスクトップを Win2000 との2本立てにするのも面倒だし、
ノートがふたつあるのですが、どちらも古いパワーのないマシンで
Win95OSR2 + IE4.01SP2 と Win98SE + IE5.01SP1 で使っています。
>あのZオーダーが狂うバグは直るんでしょうか。(Win2000)
それ知りません(^^;)。IE を複数開いていると前面にある IE のメニュ
ーバーが無効になることがたまにあったのですが(多分 5.01 の頃から
だと思います)それでしょうか。後ろにある IE を前面にしようとして
もできないというのも経験したことがありますが、それかもしれない。
私のところで直ったのはリンクのターゲットが _blank になっていると
リンクできないという現象で、私以外にふたつほど報告を見たことがあ
ります。すべて Win2000 で IE5.5 と Netscape の両方がインストール
されているという条件が一致してましたが、同じ条件でも出ない人もい
ますし、インストールの順番が関係あるかもという話もあって、今回直
ったのも単にインストールの順番で、IE5.5SP1 になったからというの
は無関係かもしれません。もうひとつは Microsoft のダウンロードセ
ンターにアクセスした時のエラーですが、直る前はエラーメッセージが
出てから同じ窓でリンクしてたのが、直った後は新しい窓でリンクする
ので原因はひとつめと同じかもしれません。
To: MK さん
> 下のだけど、これで済みますよ。
> Sub window_onbeforeunload()
> window.event.ReturnValue="ほかのページへ移動しますか?"
> End Sub
…。そのとおりです(^^;
恥ずかしい…。最近HTAのスクリプトをぜんぜん書いていないことがばればれですね。
まあ、これでVBSにおけるイベントハンドラの関連付け方法が全部出されたので
良しとしますか。
# 後一つは<button onclick="proc()">の形式ですね。これだけはwindowオブジェクトで
# は使えないですが。
To: みー さん
> ファイルなどの存在を検索して、検索結果をLISTVIEWで表示させようと思ったのですが,その際に一つ一つの結果に対してチェックボックスを2つと、できればボタンをつけたいと思うのですがLISTVIEWではそれができません。
> どなたか、なにかいいコンポーネントをご存知ないでしょうか?それとも、自分で作らなければならないでしょうか?
あまり思いつかないですねえ…。
こういうのは、HTMLでデザインすると楽そうですが(^^;
コンテナ(frameとかpicturebox?)を使って、必要なコントロール(チェックボックス、ボタン)を
貼り付けたものを用意しておけば、後はそれをロードしまくればいいような気もしますが、
そんなこと、やったことないのでよくわかりません。
素直にコンポーネントを作ったほうがいいような気もします。
To: 【おじさま】 さん
> WSH の話じゃないのですが、IE5.5SP1(5.50.4522.1800) 日本語版が
> 出ています。
なんか早いですね。
なかなかSP1が出なかった某OSとはえらい違いだ(^^;
> Win2000 用のインストールは IE5.5 の時と同様に 6MB くらいで、残念
> ながらフルセットのインストールはできません。これにはスクリプトエン
> ジンらしきものは入っていません。Win9x 用のはダウンロードしていない
> ので、こちらにはどんなスクリプトエンジンが入っているのかは分かりま
> せん。今のところ Win9x 系は使っていないので本当に久々に雑誌付録を
> 待つかも。
実は私、数十MBくらいのデータなら余裕で落とせる環境が使えるようになったので、
以前に比べると躊躇せずにインストールできたりします(^^;
が、それほど食指が動かないのも事実。
また余計なことを付け加えておくと、現在Win98とMeの二本立てで、2000はぜんぜん
使ってなかったりします。
だって、Meのshell32.dllはWin2000のよりバージョンが上ですし…。(って、理由が
マトモじゃないですね)
問題はWMIを使った98-Me間のアクセスがうまくいかないことで、これはWin2000-98で
再試験してみる必要があります。(って、Win2000を使う理由もマトモじゃないし)
> 私の環境では IE5.5 で出ていた不具合2個が直っています。
あのZオーダーが狂うバグは直るんでしょうか。(Win2000)
WSH の話じゃないのですが、IE5.5SP1(5.50.4522.1800) 日本語版が
出ています。
http://www.microsoft.com/downloads/release.asp?releaseid=25528
今現在はまだ ie5setup.exe は登録されていませんが、公開直前のを置
いておく Microsoft のサイトからは落とせます(こういう URL って書
いて良いかどうか分からないので・・・・・)。
Win2000 用のインストールは IE5.5 の時と同様に 6MB くらいで、残念
ながらフルセットのインストールはできません。これにはスクリプトエン
ジンらしきものは入っていません。Win9x 用のはダウンロードしていない
ので、こちらにはどんなスクリプトエンジンが入っているのかは分かりま
せん。今のところ Win9x 系は使っていないので本当に久々に雑誌付録を
待つかも。
私の環境では IE5.5 で出ていた不具合2個が直っています。
はじめまして。
VBでわからないことがあってこの掲示板にきました。
ファイルなどの存在を検索して、検索結果をLISTVIEWで表示させようと思ったのですが,その際に一つ一つの結果に対してチェックボックスを2つと、できればボタンをつけたいと思うのですがLISTVIEWではそれができません。
どなたか、なにかいいコンポーネントをご存知ないでしょうか?それとも、自分で作らなければならないでしょうか?
よろしくお願いします。
下のだけど、これで済みますよ。
Sub window_onbeforeunload()
window.event.ReturnValue="ほかのページへ移動しますか?"
End Sub
To: Lib30 さん
> <SCRIPT TYPE="text/vbscript">
> <!--
> window.onbeforeunload = GetRef("subClose")
> Sub subClose
> Window.Event.ReturnValue="ほかのページへ移動しますか?"
> End Sub
> -->
> </SCRIPT>
>
> というスクリプトを書くと、ダイアログが表示されます。ここでキャンセルボタンを押せばウインドウは閉じられません。
> OKを押すと閉じてしまいますが。
どうもありがとうございます。付け加えると、GetRef関数は、VBS5.0から使えるようになった
関数なので、素のIE4では動作しないと思います。
このように、HTML中のエレメントとして明示されていないオブジェクト(この場合、
windowオブジェクト)のイベントハンドラを記述する方法としては、私が前回書いた
script for...を使う方法のほかに、GetRef関数を使う方法があります。
ちなみにJavaScriptではもっと簡単に記述できます。
でも、なんでこれがそう機能するのか、私にはわからん(^^;
onbeforeunloadイベントの返値って、ダイアログに表示される文字列? 謎だ…。
window.event.returnValueってTrueかFalseだと思っていたんですが…。
では改めて紹介。
まず、「Rubyを256倍使うための本」は、Rubyの本ではありません。(言い切っていいのか?)
この本は、別にRubyを使うときのテクニックが256個書いてある本というわけではありません。
Rubyというスクリプティング言語は、みなさんもご存知でしょう。
純日本製、完全オブジェクト指向でUNIXなスクリプティング言語です。
わりと最近、本が出ましたよね。
で、「Rubyを256倍使うための本」(実は、「邪道編」というサブタイトルがついています。
でも基礎編とか応用編とかはない)では、Win32版RubyをActiveX Scriptingとして実装した、
ActiveScriptRubyについて述べられています。(ActiveScriptRubyは著者自身が作ったもの)
まず、前半部分では、ActiveScriptRubyはどういう仕組みで動いているか、COMの仕組みまで立ち入って
解説されています。
後半部分では、VB,IE(HTA含む),WSH等のさまざまなホストアプリケーションから、ActiveX Scripting
としてのActiveScriptRubyを利用する方法・ActiveScriptRubyでさまざまなCOMコンポーネントを
利用する方法について書かれています。
だからRubyなんて知らなくても十分です。(私自身知らないし)
# というか、Rubyである必然性はあまりないと思う(^^;
さて、これらの話を軸にして、Windows Scriptの世界を語るためのキーワードがふんだんに
盛り込まれています。
COM, OLE, ActiveX Scripting, HTA, ASP, IE, DHTML, XML, WSH, ADO, WMI, WSC(Windows Script Component), .NET
驚いたことに、ほぼすべてが網羅されています。(ないのはADSIくらい?)
WSHのオブジェクトやWMIの使い方まで言及されています。
# WSHの解説には笑いますよ(^^; いきなり"ILoveYou"の話から入るんです(笑)
もうこれは買うしかないです。
ただし、かなりマニアックな領域なので、それなりの知識が要求されると思います。
もうこのページには飽きたなあ、もっと高度なことが知りたいなあ、という方にお勧め。
# それにしても、よくこんな本が出たなあ…。さすがASCII。
# それと、よく本の題名に惑わされず手にとってみたもんだ。さすが私。(爆)
To: 福田 さん
> 過去ログを見れば分かる話でしたね。過去ログも見ずに質問して申し訳ありませんでした。
そういえば、過去にありましたね。
レジストリの書き換えでうまくいくかも、という話でした。
(16-32 moto さん 2000/06/28 18:07 etc)
# 別に質問するときにログを全部見るのは必須ではないですよ。
To: miura さん
> ブラウザーを右上の×で閉じたときに、alertで警告を出したいのですが
> スプリクトの書き方がわかりません。
> よい方法はありませんか。
<script language="JavaScript" for="window" event="onunload">
alert("ちょっとくらいならJavaScriptもわかるぞ");
</script>
# ページ移動のときも出てしまうので、これではだめかも…。
To: ひろ さん
> 引数は、IEオブジェクト。
> 戻り値は、trueならIEがある。falseなら閉じられた。
> IEオブジェクトのメソッドを使う個所は、
> 片っ端に try 〜 chatch で囲むといいですよん。
フォローありがとうございます。ですが、
どうもmiuraさんがされたいことは、HTML中に記述するスクリプトで、自分自身が閉じられるときに
処理をしたいということだと思うんですが…。
> すみません、ここVBSのサイトでしたね。(汗)
いえいえ、JavaScriptもOKです。言語非依存なのがWindows Scriptのいいところです。
私は、たしなむ程度ですが…(^^;
> VBSでなら、OnQuit というイベントが用意されてるみたいです。
ということは、JSでも使えるはずですよ。
(これはCOMコンポーネントとしてのIEを呼び出す場合のイベントになりますね)
事情により、WSH Lab. 掲示板 記事検索プログラム v1.2.0の公開を一時停止させていただきます。
かってに掲載してしまい、申し訳ありませんでした。 > AKiOSさん