http://www.asia.microsoft.com/japan/developer/library/
今まで存在を知らなかった!
いつからあったの?? どうして誰も教えてくれなかったの??(爆)
MSDNライブラリ日本語版Web公開版です。
プラットフォームSDK-プラットフォームSDK(日本語)-Webサービス-
InternetSDK:プラットフォームSDK-ダイナミックHTML
を見てください。
To: 石村 さん
> VBscriptでテキストボックス内で押された
> キーを取得するにはどうしたら良いのですか?
window.event.KeyCode をどうぞ。
OnKeyDownイベント中で参照できます。
window.event.shiftKey, window.event.altKey, window.event.ctrlKey(Bool値)を
併用すれば、Shift,Alt,Ctrlの状態も取得できます。
# ということはMSDNライブラリを見れば書いてあるんですが…。
# VBなどのVisual Studio製品群には付属しています。英語版ならMSのWebサイトからも読めます。
To: AKiOS さん
> HTA の場合、これ以外の方法で現在表示されているページのソースを取り出す
> ことは可能でしょうか?
location.pathnameをFileSystemObjectで開くというのはどうでしょう。
> また、フレーム内にページを読み込んだ際にロードし終わったことを確認する
> 方法ってあるんでしょうか?
DocumentCompleteイベントは、各フレームが読み込まれるごとに発生するようです。
そこで、window.frames.lengthで総フレーム数を調べ、その数だけイベントが
発生すれば、読み込みが完了したと判断するのはいかがでしょう。
ただし、入れ子になったフレームなど、解決しなければならない問題点が存在します。
windows.frames(0)とかは、本来ならフレームのWindowオブジェクトを返すはずなん
ですが、IE5.0xではバグのため(?)できません。
が、window.frames.lengthはOKなので、上記の方法が使えると思います。
ちょっと便乗質問させてください(^^;
>…ですが、この方法についてはすでにこの掲示板でもおなじみだったりします(^^;
>「管理人むたぐち さん 2000年 02月 23日 18時 44分 23秒 」
>とかですね。
>これだと<html>要素の中身を全部取得することができます。
HTA の場合、これ以外の方法で現在表示されているページのソースを取り出す
ことは可能でしょうか?
また、フレーム内にページを読み込んだ際にロードし終わったことを確認する
方法ってあるんでしょうか?
とりあえず今は仮のタイトルをセットして setTimeout() で一定時間ごとに
タイトルが変更されたかチェックしています。
<script language="jscript">
var tmp_title = new Date().toString(); // 現在の時刻を表す文字列
function go(url) {
frames[0].document.title = tmp_title;
frames[0].document.location = url;
check_title();
}
function check_title() {
if (frames[0].document.title == tmp_title) {
setTimeout("check_title()", 100);
} else {
alert("ページが表示されました");
}
}
</script>
VBscriptでテキストボックス内で押された
キーを取得するにはどうしたら良いのですか?
OnKeyDownイベントでキーが押されたことは認識できるのですが・・・
To: 秦野の大島 さん & こーだ さん
> 「名前を付けて保存」のダイアログは出たままでいっこうにファイルの保存が
> 行われた様子がないんです。
> あと、このスクリプトが成功したときは、「名前を付けて保存」のダイアログは出たままになると思います。うちでは、そうなります。
とまあ、そういうことですね。
保存を自動でしてくれるわけではなく、ダイアログが開いたところで止まります。
ただし、保存フォルダを開いた状態・ファイル名がテキストボックスに入った状態に
なるので、「半」自動化とも言えなくはないかなあ、と思っています。
この状態で、Enterか何かをダイアログに送れば保存できるんじゃないかと思います。
# 保存ファイルの存在確認・属性確認などはあらかじめやっておいた方がいいのかもしれない…。
でも、「完全」自動化がいいですよねやっぱり。
BASP21やInetコントロールなどで対処してください。
秦野の大島さんどうもありがとうございます。
>終わってしまいます。"E\A\001.JPG"の部分が無視されたみたいな
の。"E\A\001.JPG"は。"E:\A\001.JPG"の間違えでした。
オオボケをこいてしまいました。どうもすいません。
でも、。"E:\A\001.JPG"に変えても、。"E:\001.JPG"にしても、
「名前を付けて保存」のダイアログは出たままでいっこうにファイルの保存が
行われた様子がないんです。
これはどう言う事なのでしょうか?
すいませんがよろしくお願いします。
秦野の大島です。
「こーだ さん 2000年 05月 22日 23時 40分 19秒」より
>名前を付けて保存のダイアログが開くのですが、以降そこで
>終わってしまいます。"E\A\001.JPG"の部分が無視されたみたいな
>感じです。
ファイル名に\マークが使われているせいでは?
他のファイル名でうまくいきませんか。
あと、このスクリプトが成功したときは、「名前を付けて保存」のダイアログは出たままになると思います。うちでは、そうなります。
いつもお世話になっております。
先日教えていただいたメール送信の件ですが、次のようなスクリプトで
何とかできそうです。どうもありがとうございました。
Dim Mail_Body , Atesaki
Const Run_String = "C:\windows\rundll32 url.dll,FileProtocolHandler mailto:"
Set WSHShell = WScript.CreateObject("WScript.Shell")
Txt_Body = "これもてすとですよ"
Atesaki = "xxx@yyy.ne.jp"
WSHShell.Run Run_String & Atesaki & "?subject=TestMail&body=" & Mail_Body
WScript.Sleep 5000
WSHShell.SendKeys "%s"
ただ、最後のSendKeysですが"%s"ではうまくいくのですが"%S"だとだめでした。
別件で教えていただきたいことがあります。
先日から話題になっている画像をファイルを保存するメソッドについてです。
このHPをいろいろ調べて次のようなスクリプトを作ったのですが、
うまく行きません。
Set objIE = WScript.CreateObject("InternetExplorer.Application")
objIE.Visible = True
objIE.Navigate("http://www.abc.com/sss/001.jpg")
Do While objIE.Busy
Loop
Do While objIE.Document.readyState<>"complete"
Loop
objIE.ExecWB 4,2,"E\A\001.JPG"
名前を付けて保存のダイアログが開くのですが、以降そこで
終わってしまいます。"E\A\001.JPG"の部分が無視されたみたいな
感じです。
OLECMDID_SAVEASやOLECMDEXECOPT_DONTPROMPTUSERの設定値は間違いないと
思うのですが・・・
お手数ですがよろしくお願いします。
うーん。全然更新する暇がないなあ…。
ネットニュースも休業状態だし…。
この掲示板だけは、何とか運営を続けていきたいものです。
To: YAM さん
> さて、一月ほど前の高瀬さんの件はメールのやりとりでほぼ解決していたのですが、今回似たような書きこみがあったので念のため報告します。
おお、管理人の知らぬところで何かが起きている(笑)
> formのselectを変えたときのonchangeメソッドをVBScriptでエミュレートする方法。例として勝手に窓の杜を使いました。
> ようはHTMLのけつっぺたに新たにリンクをつくってJavaScriptを実行するというやりかたです。これなら気軽にVBScriptからJavaScriptのfunctionにアクセスすることもできます。
これ、なかなかいいアイデアですね。
そうか、そういう手もあるのか…。勉強になります。
To: ishimura さん
> 本日は、VBScriptからOracleに接続したいのですが、
> どのようにすれば良いのですか?
この手の分野って、私はまったくと言っていいほど無知なのです(^^;
ご容赦ください…。
ODBCというからにはデータベースですか…。
ということは、ADOを使うのが一般的なのかな…。(自信なし)
昨日の質問は、4つのファイルのバージョンを揃えることで解決しました。
本日は、VBScriptからOracleに接続したいのですが、
どのようにすれば良いのですか?
私は、ODBC接続をチャレンジしていますが、うまく行きません。
できれば、ODBC接続方法をお願いします。
以前寝ぼけた書きこみをしたYAMです。
さて、一月ほど前の高瀬さんの件はメールのやりとりでほぼ解決していたのですが、今回似たような書きこみがあったので念のため報告します。
直接HTMLをいじるのであまり美しい書き方ではない(笑)ですが参考までに・・・。
formのselectを変えたときのonchangeメソッドをVBScriptでエミュレートする方法。例として勝手に窓の杜を使いました。
ようはHTMLのけつっぺたに新たにリンクをつくってJavaScriptを実行するというやりかたです。これなら気軽にVBScriptからJavaScriptのfunctionにアクセスすることもできます。
Dim oIE
Set oIE=Wscript.CreateObject("InternetExplorer.Application")
oIE.Navigate2 "http://www.forest.impress.co.jp"
oIE.Visible=true
while oIE.readystate<>4
wend
oIE.document.forms(1).elements(0).options(1).selected=true
oIE.document.body.innerHTML=oIE.document.body.innerHTML+"<a href='JavaScript:document.forms[1].elements[0].onchange()'></a>"
oIE.document.links(oIE.document.links.length-1).click()
To: 秦野の大島 さん
> >> InternetExplorerを使う場合、画像やページをファイルを保存するメソッ
> >>ドは何を使えばいいのでしょう?
> >
> >これに関しては、まだ自動化する方法を見いだしていません。
>
> ということだったのですが、ページを全自動で保存する方法を発見したので投
> 稿します。
どうもありがとうございます。
…ですが、この方法についてはすでにこの掲示板でもおなじみだったりします(^^;
「管理人むたぐち さん (mutaguchi@roy.hi-ho.ne.jp) 2000年 02月 23日 18時 44分 23秒 」
とかですね。
これだと<html>要素の中身を全部取得することができます。
画像などの保存は、この方法ではフォローできませんが。
> ちなみに本スクリプトでもそうしてますが、ページをロードし終わったことを
> 確認するには
> object.Busy
> をチェックするだけでは不充分で
> object.Document.readyState
> が
> complete
> になるのを待つ必要があるようです。
私の場合は、DocumentCompleteイベントが発生したことで判断していますが、
busyとreadyStateを使った判別の方が、わかりやすいですね。
> ここまでできれば、タグを検索して画像を保存したり、フレームに対応したり
> できるのではないでしょうか。自動巡回してページを全自動で保存するのも夢
> ではないですね。
WSHからのフレームの解析に失敗するのは、IE5.0xのバグだと思います。
IE5.5では直っているそうです。
To: 石村 さん
> Oracle ODBC Testを行うと
> 下記のようなエラーメッセージが表示されます。
> 解決方法を教えてください。
>
> THE ODBC RESOURCE DLL (C:\WINNT\SYSTEM32\ODBCINT.DLL)
> IS A DIFFERENT VERSION THAN ODBC DRIVER
> MANAGER(C:\WINNT\SYSTEM32\ODBC32.DLL)
私にはわかりかねます(^^;
# だいたい、WSHと何か関係があるんでしょうか?
エラーメッセージをそのまま受けとれば、ODBCリソースDLLとドライバマネージャの
DLLのバージョンが違うということなので、バージョンをそろえてやればいいのでは?
いつもありがとうございます。
NT4.0 に Oracle8iをインストールしました。
Oracle ODBC Testを行うと
下記のようなエラーメッセージが表示されます。
解決方法を教えてください。
THE ODBC RESOURCE DLL (C:\WINNT\SYSTEM32\ODBCINT.DLL)
IS A DIFFERENT VERSION THAN ODBC DRIVER
MANAGER(C:\WINNT\SYSTEM32\ODBC32.DLL)
以前こちらで、IEに表示したページを別名で保存する方法で情報をいただい
た、秦野の大島です。
当時の過去ログから
「管理人むたぐち さん 2000年 02月 25日 02時 38分 30秒 」より
>> InternetExplorerを使う場合、画像やページをファイルを保存するメソッ
>>ドは何を使えばいいのでしょう?
>
>これに関しては、まだ自動化する方法を見いだしていません。
ということだったのですが、ページを全自動で保存する方法を発見したので投
稿します。
以下、この掲示板の過去の記事を自分のPCのDドライブに保存するスクリプト
です。
-----[ここから]------------------------------------------------------
Set objIE = WScript.CreateObject("InternetExplorer.Application")
objIE.Visible = True
objIE.Navigate("http://www.roy.hi-ho.ne.jp/mutaguchi/bbs/list1.shtml")
Do While objIE.Busy
Loop
Do While objIE.Document.readyState<>"complete"
Loop
Set fs = WScript.CreateObject("Scripting.FileSystemObject")
Set stream = fs.CreateTextFile("d:\list1.html")
stream.Write objIE.document.body.innerHTML
stream.Close
-----[ここまで]------------------------------------------------------
ちなみに本スクリプトでもそうしてますが、ページをロードし終わったことを
確認するには
object.Busy
をチェックするだけでは不充分で
object.Document.readyState
が
complete
になるのを待つ必要があるようです。
ここまでできれば、タグを検索して画像を保存したり、フレームに対応したり
できるのではないでしょうか。自動巡回してページを全自動で保存するのも夢
ではないですね。
To: 石村 さん
> ASPファイルの文字コードの設定とかはあるのですか?
いえ、ASPファイル自体はテキストファイルなので、その文字コードという意味です。
Windowsでは普通Shift-jisが使われていますが、Windows2000ではUnicodeも使われるように
なっています。
UNIX系ではEUCという文字コードが主流です。
電子メールにはJISコード(iso-2022-jp)が基本です。
> 例えば リストボックスの内容が下記の時で、AAAが表示されている時に
> あるボタンを押した時に表示をCCCに変更する方法
<form name="form1">
<select name="test">
<option value="1" selected>AAA
<option value="2">BBB
<option value="3">CCC
<option value="4">DDD
</select>
</form>
CCCを選択するなら、
form1.test.options(2).selected=True
<% @CODEPAGE=932 %>
を記載することでうまくいきました。
ASPファイルの文字コードの設定とかはあるのですか?
それと、リストボックスの表示されている項目を変更する
方法を教えてください。
VBscriptでの質問です
例えば リストボックスの内容が下記の時で、AAAが表示されている時に
あるボタンを押した時に表示をCCCに変更する方法
AAA
BBB
CCC
DDD
よろしくお願いします。
To: 石村 さん
> 下記のように、変数(Tmp)に文字列("大阪府")を代入して、
> 表示させると文字化けしていまいます。
> なぜでしょうか?(IE5を使用しています)
Win2000Pro+IIS5.0+IE5.01では正常に表示されましたが…。
charset=x-sjis を
charset=shift_jis にするとどうでしょうか?
(x-sjisもエイリアスとして認識されるはずですが)
<% @CODEPAGE = 932 %>
というのを入れてみることでうまくいくかもしれません。
aspファイルの文字コードは間違いなくshift-jisになっていますよね?
それと、他の文字は問題ないのでしょうか?
下記のように、変数(Tmp)に文字列("大阪府")を代入して、
表示させると文字化けしていまいます。
なぜでしょうか?(IE5を使用しています)
表示結果
大阪?
と表示されます
<%
Tmp = "大阪府"
%>
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" Content="text/html; charset=x-sjis">
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
</HEAD>
<BODY>
<%=Tmp%>
</BODY>
</HTML>
To: 石村 さん
> 例1)下記の処理は1行目を削除しますが、一度に全てを削除する方法
> frmMain.ken.remove(0)
私は、
For I=frmMain.ken.length-1 To 0 Step -1
frmMain.ken.Remove I
Next
のようにして対処していますが、何か気に入らないですね。
一気に削除する方法も多分あると思うのですが…。私も知りたいです。
> 例2) リストボックスに[test]という項目を追加したいのですが、
Set opt=Document.CreateElement("OPTION")
opt.Text="test"
frmMain.ken.add opt
とします。
まず、CreateElementメソッドでOptionオブジェクトを生成しないといけません。
To: こーだ さん
> VBSやJSを使ってOutLookExprssでメールを出すにはどうすればよいでしょうか
>
> いろいろ見てみましたが
> OutLookExprssはIEのようにオブジェクトとして操作できないようですし、
はい。できません。
# これがもしできるのだったら、例のI Love Youはもっと凶悪に機能したことでしょう。
> Shellオブジェクトで起動しても、KEYを送ってもメール送信には
> 漕ぎ着けられないような気がします。
ちょっとキー入力のステップが多すぎますしね。
すこし工夫してやる必要がありそうです。
rundll32 url.dll,FileProtocolHandler mailto:mutaguchi@roy.hi-ho.ne.jp?subject=TestMail&body=これはテストです。
をWSHShell.Runで実行すれば、とりあえずメールアドレス・Subject・本文が記入された状態でメール作成
ウィンドウが立ち上がりますので、あとは投函するためのキーコードを送れば良さそうです。
なお、この方法は、mailto:のリンクをブラウザでクリックすると、メール作成ができるメーラなら、
何でも実行可能です。DatulaでもOKです。
# 要は、レジストリのHKCR\mailtoに関連付けされるものです
厳密にやるなら、OEにこだわらず、何か別の方法を考えてみることをお勧めします。
たとえば、BASP21などのコンポーネントを使えば、WSHからメールを送ることが可能になります。
IISでSMTPが使える環境なら、CDO(?)を使ってメールを送ることもできるようです。
↓に、WMIを使って取得したシステム情報を、CDOを使って管理者にメール通知する
サンプルがありました。
http://www.microsoft.com/japan/developer/thisWeek/wmi/koj990811.asp
はじままして、こーだです。
教えていただきたいことがあります。
VBSやJSを使ってOutLookExprssでメールを出すにはどうすればよいでしょうか
いろいろ見てみましたが
OutLookExprssはIEのようにオブジェクトとして操作できないようですし、
Shellオブジェクトで起動しても、KEYを送ってもメール送信には
漕ぎ着けられないような気がします。
ちなみにILOVEYOUウイルスの要件に近いですが
製造したいのではなく、HPで取得したテキストをメールに送信する と
いったことがやりたいのです。
すいませんがよろしくお願いします。
VBscriptの質問です。
VBの用にリストボックスの内容をクリアする
"Clear"や登録する"AddItem"見たいな命令はありませんか?
例1)下記の処理は1行目を削除しますが、一度に全てを削除する方法
frmMain.ken.remove(0)
例2) リストボックスに[test]という項目を追加したいのですが、
下記の処理ではエラーになります。
frmMain.ken.add "test"
<form name="frmInsert" method="post">
<select name="ken">
<option value="1" selected>北海道
<option value="2">東京
<option value="3">大阪
</select><br>
</form>
To: オダオダ さん
> WSHにてWebページの死活監視を実施したいのですが、できるでしょうか?
> サンプルページにあるIE自動操縦スクリプトを改造すればできそうなのですが、
> 指定のURLが表示できなかった場合をどう判断すればよいのか良く分かりません。
私もやったことはないのですが、指定したURLがない場合、DocumentCompleteイベントの
引数に返されるURLは、「ファイルが存在しない」というIEが内部的に持っているページ
のURL(res://なんとか)になると思うので、それで判断してみてはいかがでしょうか。
ただ、あまりスマートな手法ではないと思うので、何らかのコンポーネントを併用して
使うという手も考えてみてください。
BASP21は、こういう用途に使えないのかな?
VB付属のInetコントロールもチェックしてみてください。
# あとは、IE5で使えるようになった、microsoft.xmlhttpですか…。
# 使い方はまだ研究していないので何とも言えませんが…。
To: 寺島 さん
> WSHの質問ではありませんが、NT4,0のログオンのパスワードを忘れてしまい、Guestでは入れるのですが、アドミニの権限がなくソフトのインストールができません。
すいませんが、私には答えられません(^^;
たぶん質問する場所を間違っておられると思います…。
# Windows2000なら何か聞いたことがあるような気もしますが。
To: もぐら さん
> WSHで起動中のアプリケーションを
> 終了することはできるのでしょうか?
実行中のアプリのタイトルを引数にしてAppActivateメソッドを実行。
SendKeysメソッドでAlt+F4を送ります。
# これはFAQみたいです…
Goriさん作のWSHPlus!というコンポーネントを使うことでも可能です。
http://www.ksky.ne.jp/~gori/
> この掲示板ですが検索をすることはできないのでしょうか?
残念ながらできません。
ログをダウンロード支援ソフトやIEの購読機能でローカルに落として、それに対して
検索をかけてください。
全部ダウンロードしても損はないと思いますよ…たぶん…。
> 間違えたときの削除キーもあれば便利ですが。
間違えないように努力してもらうしか…(おい)
やはり、もうちっとましな掲示板を調達してくるべきなんでしょうか…。
今の掲示板は、プロバイダが提供してくれているもので、低機能なのは否めませんが、
管理するのは割と楽だったりします。ログの保守をする必要がない!
普通の表示もできるんだけど、スレッドツリー表示することもできる。
でも今と同じように「一度作成されたらURL・内容が変化しない」ログを作成する。
<pre>タグと<a>タグが使える。
クッキーで投稿者名やメールアドレスが記憶可能。
もちろん検索機能、削除機能つき。
こんな掲示板を誰か作ってください(爆)
自分で作れって?
WSHで起動中のアプリケーションを
終了することはできるのでしょうか?
P.S.
この掲示板ですが検索をすることはできないのでしょうか?
間違えたときの削除キーもあれば便利ですが。
WSHの質問ではありませんが、NT4,0のログオンのパスワードを忘れてしまい、Guestでは入れるのですが、アドミニの権限がなくソフトのインストールができません。恐縮ですが何か方法がありましたら教えてください。
はじめまして、オダオダです。
WSHにてWebページの死活監視を実施したいのですが、できるでしょうか?
サンプルページにあるIE自動操縦スクリプトを改造すればできそうなのですが、
指定のURLが表示できなかった場合をどう判断すればよいのか良く分かりません。
一応、メールを送信するためのスクリプトはあるので、エラー時の判断ができれば
そのスクリプトを使ってエラーメールを飛ばそうと思っております。
WSHの初心者ですが、よろしくお願いいたします。
To: いーだ さん
> ただ、対象マシンをWSHで24時間稼動させているので
> 1年もするとモニタが死んできますし、液晶は高価だし。
モニタの電源を切るのは駄目なんでしょうか?
…すいません。全然WSHと関係ないアドバイスになってますね。
To: コースケ さん
> こちらの方の意見としても、IE4を標準インストールしただけでは
> WSHはインストールされないということなので、
> 少なくともNT4.0にIE4.0xの標準インストールでは
> WSHはインストールされないのではないでしょうか。
> 下の検証はWin95+IE4でした。
どうもそのようですね。
カスタムインストールや追加インストールで、自分で指定してやる必要があるようです。
そもそもIE4にWSHが入っているかどうかは、IE4の入ったCD-ROMを探し出し、cabファイル検索
すればわかるでしょう。
だれかやってください(^^;
Win95 OSR2.5(だったと思う)には、IE4が最初から入っていたはずなので、これには
WSHがデフォルトで含まれていたかどうかが少し気になります。
失礼致しました。
下の検証はWin95+IE4でした。
to 管理人むたぐちさん
WebBoardというところにも
同じ内容の書き込みをさせて意見を伺ったところ、
実験まで行って検証してくださいました。
(上のURL参照)
こちらの方の意見としても、IE4を標準インストールしただけでは
WSHはインストールされないということなので、
少なくともNT4.0にIE4.0xの標準インストールでは
WSHはインストールされないのではないでしょうか。
参考までに
to 管理人むたぐちさん
早速のレス、ありがとうございます。
> スクリーンセーバーを実行しなければいいだけの話ではないでしょうか。
> タスクスケジューラなどで自動実行させているのでしょうか?
ただ、対象マシンをWSHで24時間稼動させているので
1年もするとモニタが死んできますし、液晶は高価だし。
しばらくがんばってみます ありがとうございました
To: Gori さん
> わたしが思うに、今回何が爆発的に広まった主因かというと
> "Love-Letter-For-You.txt.vbs"
> というファイルが実行形式だ、という認識をしている人が少なかったからではな
> いでしょうか。
あ、これ、私も全く同意見です。
WSHの知名度を考えれば、ほとんどの人がそういう認識をもっていなかったと思います。
で、これって拡張子は.vbsなんで、テキストなんですよね。そのため、亜種が大量に
出現しました。極端な話、拡張子判別のルーチンを削るだけで、より凶悪なウィルス
になってしまうのですから…。
このスクリプトのコメント部分に、"vbe"の文字があります。思うに、作者は
スクリプトをエンコードして流布させることを企んでいたのではないかという気がします。
エンコードすれば、Win98ノーマルな環境では動かないからやめたんでしょうけど…。
To: いーだ さん
> AppActivate&SendKeysメソッドを使って市販アプリを
> 制御しているのですがスクリーンセーバーが稼動していると
> 送出したキーストロークが無視されてしまいます。
> VBSでスクリーンセーバーを制御できないものでしょうか?
単に、スクリーンセーバーを実行しなければいいだけの話ではないでしょうか。
そもそも、スクリプトを起動させるにはまずスクリーンセーバーを解除する必要が
あると思うのですが、違うのでしょうか? (タスクスケジューラなどで
自動実行させているのでしょうか?)
WSHの基本機能だけでスクリーンセーバーを中止させるいい方法は、ちょっと思いつきません。
何か、そういう機能を持ったオンラインソフトを探してきて、それを実行させるように
するなどで対処するしかないのではないでしょうか。
>管理人むたぐちさん
REG_BINARYの件で質問したももんがです。
教えていただいた通り大文字に変えたら上手く動きました。嬉しい^^
大文字小文字の違いだけで動作しなくなるなんて;シビアな世界なんですね。
本当に助かりました。ありがとうございました。
はじめまして
AppActivate&SendKeysメソッドを使って市販アプリを
制御しているのですがスクリーンセーバーが稼動していると
送出したキーストロークが無視されてしまいます。
VBSでスクリーンセーバーを制御できないものでしょうか?
どなたか宜しくお願い致します。
> 簡単に使えるのが問題、という意見がありますが、簡単に使えてこそ
> 意味があるのです。
> 諸刃の剣ではありますが。
これでまたWindowsが使いにくくなってしまっては困り者ですが・・・
Microsoftが、変な意固地さを発揮して、wshがそのままの形で残ってくれること
を期待します(笑
わたしが思うに、今回何が爆発的に広まった主因かというと
"Love-Letter-For-You.txt.vbs"
というファイルが実行形式だ、という認識をしている人が少なかったからではな
いでしょうか。
「vbsという見なれない拡張子が付いてるけど、txtらしいし」という理由でダブ
ルクリックしてしまった人が多かったと推測しています。
Hi-HOの調子がここ一週間ほどおかしかったのは、I Love Youのせいだったのか?
PPP失敗・メール遅配・ニュースが全く未配信・接続が突然切れる・IEが落ちる(これは違うか)
などの各症状に苦しめられました。メールサーバがあちこちでパンクしたという話も
聞きますし。
To: ブルー さん
> Officeのようにsetup.exeを起動した後まず「Microsoft Office 95の
> セットアップを開始します,,」というダイアログが起動して、その後メインの
> インストールウインドウが起動するものは前述のダイアログにはAppActivate
> でアクセスできますが、口述のウインドウにはどのようにアクセスしたら
> よいものか分かりません。
えっと、最初のダイアログと同じようにアクセスできないのはなぜでしょう?
ウィンドウが表示されるまでの時間調整ならば、WScript.Sleepで、適当に
ウェイトを取ってやればいいと思います。
また、厳密にやるなら、AppActivateメソッドがウィンドウを正常にアクティブにできたときには
Trueを返すことを利用し、TrueになるまでDo...Loopでループしてやるというのも手です。
To: 【おじさま】 さん
> このサイトに Microsoft のサイトよりももっと詳しい情報が
> 記載されていました。Contents の中の「導入するには?」を
> お読みください。NT4.0 + IE4.01 は全然大丈夫じゃないみた
> いです。
>
> 管理人むたぐちさん、ごめんなさい。
いえ、あれはMSのサイトの内容をそのまま書いただけなので(^^;
To: コースケ さん
> ところで、当方でIE4.01sp2をインストールしたNT4.0マシン
> (WSHはインストールせず)で、
> VBSファイルを開こうとしましたが、アイコンがすでに未確定のものに
> なっていて、当然開く事が出来ませんでした。<確認済みです。
>
> よって、Win95 + IE4.01でVBSが走るなら、
> 「導入するには」に書かれている
>
> 「WindowsNT4.0にインストールする場合
> Win95(OSR2.0)の場合と同様らしいです。」
>
> という記述は間違っているのではないでしょうか。
IE4.01にWSHが一つのコンポーネントとして付属しているのはたしかなので、
コースケさんの環境では、IE4.01インストール時にWSHを意図的にインストールしなかった
(カスタムインストールなどで)のではないかと思いますが、どうでしょう?
デフォルトでは、WSHはインストールされる設定だったと思うのですが、
なんだか自信がなくなってきたな…。
【おじさま】さん、
早急なレスありがとうございます。
参考になりました。
ところで、当方でIE4.01sp2をインストールしたNT4.0マシン
(WSHはインストールせず)で、
VBSファイルを開こうとしましたが、アイコンがすでに未確定のものに
なっていて、当然開く事が出来ませんでした。<確認済みです。
よって、Win95 + IE4.01でVBSが走るなら、
「導入するには」に書かれている
「WindowsNT4.0にインストールする場合
Win95(OSR2.0)の場合と同様らしいです。」
という記述は間違っているのではないでしょうか。
決して揚げ足を取っているわけではありません。
管理人むたぐちさんと、WSHユーザーの皆様の参考になれば幸いです。
ありがとうございました。
コースケさん
このサイトに Microsoft のサイトよりももっと詳しい情報が
記載されていました。Contents の中の「導入するには?」を
お読みください。NT4.0 + IE4.01 は全然大丈夫じゃないみた
いです。
管理人むたぐちさん、ごめんなさい。
コースケさん
ちょっと補足です。
Microsoft の WSH のサイトにある記載では
・Windows95 OSR2
・Windows95 + IE4
・Windows95 + DCOM コンポーネント
であれば WSH を単独でインストールして動かすことができるよ
うに読めます。いずれにしても IE5 がインストールされていな
い Win95 なら大丈夫とは限らないと思います。NT4.0 について
は分かりません。
ところでもう手元にないので忘れてしまいましたが、IE4.01 っ
て WSH が含まれてませんでしたっけ?
お忙しいところ、お返事ありがとうございました。大体の
検討はつきましたが、また行き詰まってしまいました。
Officeのようにsetup.exeを起動した後まず「Microsoft Office 95の
セットアップを開始します,,」というダイアログが起動して、その後メインの
インストールウインドウが起動するものは前述のダイアログにはAppActivate
でアクセスできますが、口述のウインドウにはどのようにアクセスしたら
よいものか分かりません。
何か良い方法がありましたら、お助けください。
よろしくお願いします。
コースケさん
>WindowsNT4.0ではInternet Internet Explorer5.0以降を
>インストールしない限り、"実行できない"のではないでしょうか。
>Windows95マシンも同様です。
WSH がインストールされていなければ実行できないというのは確かだと
思います。ただ WSH は IE5 にも確か含まれていますが、それとは無関
係に単体でも配布されていますので(ただし動作には IE4 以降が必要)
IE5 はインストールされていないけれど WSH はインストールされてい
る Win95 というのも多分あり得ると思います。
ですから大丈夫かどうかは IE5 がインストールされているかどうかでは
なく、あくまで WSH がインストールされているかで確認されたほうが良
いと思います。
はじめまして、コースケです。
今話題の"LoveLetter"について疑問があるので、
ご存知の方は教えてください。
"LoveLetter"はワーム型のウイルスで、
添付の*.vbsファイルを実行すると感染します。
で、vbsファイルですが、多くの企業で導入されている
WindowsNT4.0ではInternet Internet Explorer5.0以降を
インストールしない限り、"実行できない"のではないでしょうか。
Windows95マシンも同様です。
つまり、無条件にやばいのがWindows98マシンで、
その他はIE5(あるいはWSH)を入れない限り被害に遭う事はないのではないでしょうか?
と、いうことで
私の会社はNT4.0+IE4.01なので、何も怖くない、
と思っているのですが、勘違いなどがあったらご指摘ください。
よろしくお願い致します。
えっと、先ほどはだいぶ能天気なことを書いてしまいましたが、現実はつねに厳しい…。
今後、予想される事態を書いてみましょう。
1.WSHがなくなる(Microsoft側の対応)
まあ、これは最悪の事態ですが、少なくとも今後リリースされるWindowsで、
WSHがデフォルトでインストールされなくなる(or警告を出すようにするなど、
セキュリティ上の強化)事態は十分考えられます。
Windows Updateなどで、WSHを使用不可、あるいは警告を出すようにする
修正モジュールが配布される可能性もあります。
2.WSHが使われなくなる(ユーザ側の対応)
これもありうる話です。
事実、microsoft.public.scripting.wshで*さえ*も、「WSHを無効にする方法」が
話題になっているくらいです。
いはんや普通の人をや、です。そもそも使う必要のないものなら、使えないようにしておいても
なんら問題はないし、そちらの方が安全だと言うことであれば、必ずそれに従うでしょう。
3.WSHが恐れられるようになる
これが私にとって一番つらいことですね。
たとえば、ネットニュースで、「〜は実現できないでしょうか?」という質問が出され、
それに対して私が「WSHを使えば可能です」とスクリプトを投稿する。
すると、「それって安全ですか?もしかしてウィルス?」という山のような返信を
受けることになる。
そして、Windows Scripting Host Laboratoryは閉鎖の憂き目に遭う(^^;
http://www.zdnet.co.jp/news/0005/05/loveletter.html
などで、この事件に対する「一般的」な意見を見てみてください。
個人的な意見を言わせてもらうと、OSがこういった自動処理機能を標準で
備えているのは、むしろ当たり前と言えるでしょう。
WSHが危険なら、UNIXのシェルスクリプトだって同じことです。
# ただ、UNIXではパーミッションで実行属性をつけていない限り動かないという違いもあります。
簡単に使えるのが問題、という意見がありますが、簡単に使えてこそ
意味があるのです。
諸刃の剣ではありますが。
…うーん。急いで書いたものだからまとまりが悪いなあ。
まだまだ言い足りないことはあるのですが、今日はこの辺にしておきます。
何かご意見があれば、ぜひお聞かせください。
HTA:Applicationタグの種類が増えていますね。
詳しくは、kiaさんのページで。
なぜ、今増えたのかは謎です。もともとあったのか、それともIE5.5で実装されたのか…。
# まだ確認していないもので…。
ただ納得いかないのは、left/top/width/heightプロパティがない点です。
真っ先に実装されていていいと思うんですがね。
I Love Youですが、結構従来型メディア(って表現あるのか?)でも報じられていますが、
「拡張子」「VBS」なんて言葉をこういう場で見ると、なんか新鮮ですね(^^;
でも、「WSH」という文字はどこにも見当たらない。見た人います?
ネガティブな事件ではありますが、とにかくWSHの知名度を上げるためのチャンスでは
あります。この機会を逃すと、WSHは永遠に表舞台に立つことはないと思われます。
To: ブルー さん
> それでそのsetup.exeにより起ち上がってきたダイアログ(言うならば、
> Activeダイアログ?!)、或いはそのダイアログ上のOKボタンやキャンセル
> ボタンにWSHからアクセスし、そのsetupウィザードを自動的に進めていく
> 方法はあるのでしょうか?
SendKeysメソッド&AppAdtivateメソッドで何とかなりませんか?
この話題は過去にもでましたね。たしか、VB製アプリのインストーラでは、
オプションスイッチの指定で全自動インストールが可能だという話でした。
こんにちは。VBS初心者のブルーです。
にっちもさっちもいかなくなってこちらの掲示板に書き込みました。
任意のSetup.exeをWSHShell.Runで起動しました。
それでそのsetup.exeにより起ち上がってきたダイアログ(言うならば、
Activeダイアログ?!)、或いはそのダイアログ上のOKボタンやキャンセル
ボタンにWSHからアクセスし、そのsetupウィザードを自動的に進めていく
方法はあるのでしょうか?
お忙しいところ申し訳ありませんが、よろしくおねがします。
○突然告白されても困る…
"I Love You"というウィルスが猛威をふるっているらしいです。
またWSHが悪用されて、私はとても悲しいです(^^;
とにかく、Outlookのアドレス帳に書かれたメールアドレスすべてに対して
複製を送るという点が、今までになかった猛烈な感染力の原動力なんでしょう。
vbsファイルなんてただのテキストですので、普通の人はこれがウィルスだなんて
思いませんしね。なかなかえげつない手口です。
などなど、具体的な動作順序や、それにまつわるさまざまな話を
microsoft.public.jp.win98 / win2000に投稿しておいたので、興味のある方は
読んでみてください。
# スクリプト「伝道師」として指名されてしまった(爆)
で、そのとき書ききれなかった、というか書けなかったことをここに書きます。
このスクリプトは、*.jpgや*.mp3を破壊すると言うのが主な症状なのですが、
これが*.xlsや*.docを破壊するものでなくて本当に良かったと思っています。
むしろ、仕事に関係ないというか、仕事の邪魔になるファイルを破壊するという点で、
全体的な生産性は向上したかもしれません(こらこら)
で、あの投稿をしたあと、microsoft.public.scripting.vbscriptでソースを
見つけたのですが、全く予想していたとおりと言うか、素人がサンプルをコピーして
つなぎ合わせたような、美しくないスクリプトでした。
逆にいうと、素人同然の人間が、このような大それた犯罪行為をおこなえるという事実を
常に念頭においておく必要があると思います。
To: 【おじさま】 さん
> 最近管理人むたぐちさんがさかんに書かれていますので、そういうもの
> があるということだけは目にしていますが、中身は全く知りません(ご
> めんなさい)。Win2000 を持っていても、これでは宝の持ち腐れですね。
私も知識だけはあるものの、それを有効利用しているかといえばそうではないですね。
ネットワークの管理をしていない現状では、いくら利用してもそれは「お遊び」の
域を出ません。
これらの技術は、むしろWin2000でネットワークを運営なさっている方々に
知ってもらいたくて、こうして掲示板で連載しているのです。
そのうち記事をまとめて、コンテンツの一つにしてもいいなあ、と思っていますが、
まだ基本的な知識が完全ではないため、その段階には至っていません。
余談ですが、"WMI"というキーワードでgooで検索しても、ここはひっかかりませんね。
"WSH"でもだめだったりする…。
やはり、meta要素にキーワードを書いておかないと駄目か?
> >OS部門・インターネット&アプリ部門で分割すると、OS部門が
> >あまりにも哀れですね(^^;
>
> こういう分割になりそうなのですか。これは厳しいですね。別に Microsoft
> を擁護する気も批判する気もありませんが、OS に IE が含まれないと私は
> ちょっと困ります。
これはどこかで読んだ記憶があるだけで、正しいかどうか知りませんが、
少なくともWindowsとIEを切り離すことが第一の目的だと思うので、
この分割は妥当でしょう。
Windows OSの進化の方向性を語る上でのキーワードは、間違いなくIEとの統合です(でした)。
それがここに来て、大きく軌道修正を求められるわけですから、MSも必死で反抗するでしょうね。
To: ももんが さん
"Reg_BINARY"→"REG_BINARY"で動きます。
そういう嘘が書いてある本には、断固抗議しましょう!
う、う、教えていただいたページを参考に色々試してみたのですが
どうしても上手くいきません。
レジストリのバイナリ値を削除する事はできても作る事ができないんです。
試しにHPに書かれてある値を使ってみたのですがダメでした。
以下、ほとんど本のパクリなんですけどソースです。どこが間違ってるのでしょう?できたら教えて頂けないでしょうか。御忙しいところすみません。ぜひぜひ
よろしくお願いします。
Dim WshShell
Dim Rt
Set WshShell=Wscript.CreateObject("Wscript.Shell")
On Error Resume Next
'//ボタン (6はい 7いいえ)
Rt=MsgBox("消すなら[はい]/出すなら[いいえ]",vbYesNo,_
"ドライブの表示、非表示設定")
'//処理
If Rt=6 Then
WshShell.RegWrite"HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoDrives",&H1E0C18F5,"Reg_BINARY"
ElseIf Rt=7 Then
WshShell.RegDelete"HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoDrives"
End If
管理人むたぐちさん
レスが遅れてすみません。
>ADSIやWMIは、本当に気合というかそういうものがひしひしと伝わってくるのですが。
最近管理人むたぐちさんがさかんに書かれていますので、そういうもの
があるということだけは目にしていますが、中身は全く知りません(ご
めんなさい)。Win2000 を持っていても、これでは宝の持ち腐れですね。
>OS部門・インターネット&アプリ部門で分割すると、OS部門が
>あまりにも哀れですね(^^;
こういう分割になりそうなのですか。これは厳しいですね。別に Microsoft
を擁護する気も批判する気もありませんが、OS に IE が含まれないと私は
ちょっと困ります。
AKiOS さん
留守にしてましてお返事が遅れました(家族旅行でくたくたです)。
>ようするに「最初にあるダブルクォーテーションでくくられた文字列」を
>取り除きたいということでしょうか?
あっ、そうです。そうだったんだ!!
うーーん、すっかりフルパスの文字列を得ることばかりに捕われて
いました。おっしゃる通りです。発想の転換が必要ですね。これで
はいかん。
どうもありがとうございました。今後とも宜しくお願いします。
To: Gori さん
> わたし自身ホームページでwshから使うため"だけ"のdllをフリーソフトとして公
> 開していたりするので、よろしかったら使ってみてください。windowsの再起動
> やsendkeysなどは2.0でサポートされてしまったようですが、IMEの制御や下で話
> が出ているクリップボードの編集には役立つかと思います。
これはなかなかかゆい所に手が届く、ありがたいコンポーネントですね。
うちのリンクページからもリンクを張って、紹介させていただきますね。
IMEの制御に関しては、海外製コンポーネントには実装されていないでしょう、きっと。
To: AKiOS さん
> ようするに「最初にあるダブルクォーテーションでくくられた文字列」を
> 取り除きたいということでしょうか?
あ、なるほど。これはいいアイデアですね。
というか、気づかなかった私はどうかしている(^^;
正規表現を使い慣れていないせいで、この発想が出てこなかったんでしょう…。
location.pathnameの長さ分だけobjHta.commandLineを削る、とか考えた時点で
泥沼でしたね。
何のためにHTA自身のパスがダブルクォーテーションで囲われているのか、
全然理解していなかったことになります(恥)
もっと精進せねば。
おじさま:
>ただ昨日考えていましたが、oHTA.CommandLine が最初に自分自身のパス
>を含む以上(これ自体はC言語などでも含むし、おかしな仕様とも思わ
>ない)それを取り除いた文字列を取得するというのはちっとも稀な事で
>はなく、結構いろいろな場合に使うありふれた事ではないかと思います。
ようするに「最初にあるダブルクォーテーションでくくられた文字列」を
取り除きたいということでしょうか?
もし、そうなら replace メソッドで解決できます。
<hta:application id="hta">のとき、JScript なら次のようにできますね。
alert("<"+hta.commandLine.replace(/^".*"[ \t]+/, "")+">");
VBScript は詳しくないのですが、たぶんこんな感じになると思います。
Set re = new RegExp
re.Pattern = "^" & Chr(34) & ".*" & Chr(34) & "[ \t]+"
MsgBox("<" & re.Replace(hta.commandLine, "") & ">")
はじめまして、Goriと申します。
wshをこんなに完全に解説しているページがあったなんて・・・興奮してしまいま
した。わたしも結構使っている方だとは思ってましたが、こちらのページの内容
を理解して自分のものにするには時間がかかりそうです。
wsh2.0が出たことも、今知りましたので(苦笑
わたし自身ホームページでwshから使うため"だけ"のdllをフリーソフトとして公
開していたりするので、よろしかったら使ってみてください。windowsの再起動
やsendkeysなどは2.0でサポートされてしまったようですが、IMEの制御や下で話
が出ているクリップボードの編集には役立つかと思います。