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

管理人むたぐちさん

>ところで私の場合、Bool値の評価をするときは、たとえば
>If Fs.FileExists(file) Then
>のように書きます。

私も普段はこれですよ。If Fs.FileExists(file) = False Then
についても If Not Fs.FileExists(file) Then って書くことの
ほうが多いです。VB や VBS に限らず False は 0 で True は
Not False としてしか決められていないはずです。だから 0 以外
なら何でも良いのですしそのように判断されるのですが、ただ実際
には一応とりあえずの値みたいなのがあって、随分昔の話で不確か
ですがC言語はとりあえず 1 を戻したように思います。VB では
とりあえずの値が -1 なのですが。これがどうしてなのかは知り
ません。私他の言語を知らないのですが、多分とりあえずの値が
-1 であるほうが珍しいんじゃないでしょうか。

kobahide さん (kobahide@geocities.co.jp) 2000年 08月 06日 04時 50分 24秒

if a then
は、vb でも、vbs でも、同じ解釈で処理されます。
評価式a がfalse(=0) 以外の値を持つならば、not false (=true)
として解釈されます。よって、

「if a then 」=「if a<>false then」です。
評価式a がvb でいうboolean 型を返す時は、false/true の2値しかないんで
「a<>false」=「a=true」ですから、問題はありmせんが、
それ以外の値を返す事があるときには、
「if a then」を「if a=true then」としては困るようなケースがあるでしょう。

管理人むたぐち さん (mutaguchi@roy.hi-ho.ne.jp) 2000年 08月 06日 03時 54分 49秒
URL:http://www.roy.hi-ho.ne.jp/mutaguchi/

To: 【おじさま】 さん

> http://www.microsoft.com/IIT/documentation/online.htm
>
> に英語のマニュアルがありました。

やはりありましたか。
これでFindメソッドの使い方がわかるかな?

> >・IsSpeakingプロパティ(bool値)で、しゃべっているかどうかがわかる。
>
> 0 か 1 を Long で返すようです。

そうですね。これは単純に私の勘違いでした。
IsなんとかはBool値という固定観念があったもので…(^^;

それにしても、なんとなくずさんな(異質な?)オブジェクトモデルだと思いませんか?
speakerオブジェクトというのがあっても良かったような気がする…。
他にもいろいろ変なところがあります。まあ、面倒なのでいちいち挙げませんが。

> 最初に If TextToSpeech.IsSpeaking = True Then とやったらうまく動
> かず調べてみたらこうでした。VB では True は -1 で戻すから(きっと
> VBS も)なんでしょうね。

VBSでも
False=0
True=-1ですね。
# なんで1じゃないんだろう…。

ところで私の場合、Bool値の評価をするときは、たとえば
If Fs.FileExists(file) Then
のように書きます。これは
If Fs.FileExists(file)=True Then
と等価です(意味というかニュアンス的にはちょっと違うと思う)。
If...Then構文は、...にBool値の値を取るのですが、最初の場合は、Fs.FileExists(file)の
返り値をそのまま取っているのに対し、後の場合は、返り値がTrueと等しければ、という
意味になります。最初の場合の方が、意味的に明確に「ファイルが存在すれば」ということを
アピールしているような気がしますが如何。

IsSpeakingが、Bool値を返すものとばかり思っていたので、
If TextToSpeech.IsSpeaking Then
と書いていたのですが、実はこれは正しく動作します。

If...Thenは、あくまでBool値の解釈をする構文なので、Boolじゃない
値を指定すると、勝手にBool値に変換されます。つまり、
If CBool(TextToSpeech.IsSpeaking) Then
が実行されていることになります。
IsSpeakingプロパティは、真のとき1、偽のとき0を返します。
CBool(0)=False は当然ですが、
CBool(1)=True となるのです。CBool関数は、引数が0以外の値のときTrueを返すので。
このように、結果的には If TextToSpeech.IsSpeaking Then は期待通りの動作を
するわけです。このようなIf...Thenの使い方が望ましいものかどうかわかりませんが、
結構面白いと思いませんか? え、そうでもないか。

> 英語版 Text-To-Speech は 4.0a みたいですが(日本語のは知らない)、
> 今日見たら 5.0 ベータが出ていました。SDK 版だけで、どうもこれには
> 日本語のエンジンも含まれているようです。エンドユーザー向けのエンジ

これはおそらく Windows me に乗るエンジンなんでしょうね。
そりゃもう、マルチメディア対応の本命OSですからね。
(でもリリース時期から考えるとちょっと遅いかも)

Text-To-Speechコントロール自体は、WSHから使えないっぽいですね。
しかも同時に一個しか呼べないし…。

MS Agentなら同時に複数呼べるし、WSHからも使えるし、Win2000にはデフォルトで
キャラが一人いる(Samさんが吹き替え担当)し、今度はこっちを本格的に
いじってみようかな。

【おじさま】 さん (tomiyama@seagreen.ocn.ne.jp) 2000年 08月 06日 00時 00分 16秒
URL:http://homepage1.nifty.com/~tomiyama/

管理人むたぐちさん

>これはどこかにあるでしょうね。
>私はMS Agentのドキュメントしか見つけられなかったですが。

http://www.microsoft.com/IIT/documentation/online.htm

に英語のマニュアルがありました。

>・IsSpeakingプロパティ(bool値)で、しゃべっているかどうかがわかる。

0 か 1 を Long で返すようです。

最初に If TextToSpeech.IsSpeaking = True Then とやったらうまく動
かず調べてみたらこうでした。VB では True は -1 で戻すから(きっと
VBS も)なんでしょうね。

>・Speedプロパティでスピードの調節が出来る。デフォルト150。

私のところでは何も操作しなければ 170 でした。どこかいじってしまっ
たのかも。

英語版 Text-To-Speech は 4.0a みたいですが(日本語のは知らない)、
今日見たら 5.0 ベータが出ていました。SDK 版だけで、どうもこれには
日本語のエンジンも含まれているようです。エンドユーザー向けのエンジ
ンだけならダウンロードしたかもしれませんが、SDK のみでベータだとさ
すがにダウンロードする気になりません。

>また、1=Sam 2=Naoko 3=Kenjiとなっていて、【おじさま】さんのところと
>番号が違います。

>Win2000では、標準でこのコントロールを持っており、Samさんがデフォルトで
>待機しています。

あちゃー、そうでしたか。

Win2000 標準のままで日本語版をインストール
英語版をアンインストールしてから再度 MSTTSL.EXE をインストール
日本語版を再度インストール

こういう順番でやったのでむたぐちさんのところとは順番が違っているの
でしょう。Win2000 で保護されているシステムファイルみたいなので、同
じように Win98SE にインストールしても Win2000 では一部のファイルは
Win2000 オリジナルのものに修復されて、結局そういう違いでエディタが
Win98SE では英語版、Win2000 では日本語版になっているようです。

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

To: AKiOS さん

> 最初に思った通りでよかったんですね。(^^;

ええ、私が余計なことを書いたため、混乱させてしまったようです。すみません。

> ということは、私の環境(Win98+IE5.01)では問題ないので
> IE5.01へバージョンアップすればOKのような気がします。

やはりそうですか。IE5.01SP1が手に入ったらインストールしますね。

> この方法でもたぶんダメですね。誤動作すると思います。
> 取り出した後、オリジナルとまったく同一になるよう整形する必要があります。

結構厳密な処理をやらせているのですね。
HTMLのDOMを利用しているわけではないんですね。

> ご要望であればオマケとして添付してもかまいませんが、添付をやめた場合でも
> 利用できるようにするつもりです。

そうしていただけると助かります(^^;
旧バージョンのものが使えれば、そうしていただくとうれしいです。

> なんか、こんなのばっかりですね。(^^;

(_ _;)

> # WshShell.AppActivate(title) や WshShell.Run(cmd, 9) も
> # HTMLのスクリプトからだと効かないことがあります。

これは、Win2000のIEのzオーダーの処理が滅茶苦茶だからだと思いますよ。
よくあんな不良品を出せたものだ(^^; > MS



To: shigehara さん

> モバイル端末(OS:Windows CE)なのですが、VBScriptを動かしたいのです。
> インターネットでいろいろ探しているのですが、なかなかたどれない状態です。
> Windows CEでVBScriptを動かすことは可能なのでしょうか?

可能だと思います。
microsoft.public.scripting.vbscriptの過去記事を検索すると、
Internet Explorer for Windows CEというものがあり、これがVBScriptをサポートしているそうです。
参考URLとして、以下のものが挙げられていました。
http://msdn.microsoft.com/workshop/c-frame.htm?951257132816#/workshop/essentials/windowsce/internet_support.asp

また、MS VBCE と NS Basic/CE という開発キット?のようなものがあるそうですが、
これがVBScriptを使って記述するらしいです。

なお、microsoft.public.scripting.wshの過去記事によると、WSH for CEというのは
存在しないそうです。WSHが使用するAPIのいくつかが、CEでサポートされていないため、
移植が難しいと言うことらしいです。

shigehara さん 2000年 08月 05日 14時 30分 43秒

何回も質問をよせて申し訳ないと思っております。
またまた質問なのです。

モバイル端末(OS:Windows CE)なのですが、VBScriptを動かしたいのです。
インターネットでいろいろ探しているのですが、なかなかたどれない状態です。
Windows CEでVBScriptを動かすことは可能なのでしょうか?

それとさっそくMSDNライブラリを「お気に入り」に追加しました。

AKiOS さん 2000年 08月 05日 11時 47分 42秒

To: 管理人むたぐち さん

InternetExplorer.Applicationのオフラインに関しての
詳しい説明ありがとうございました。

> はい、「Win2000では問題ないけどWin98では(余分な)外枠が表示されてしまう」のです。
> それで、Win2000ではborderが非表示なのに、Win98ではborder(へこんだ外枠)が表示されてしまう、
> ということなのです。

最初に思った通りでよかったんですね。(^^;
ということは、私の環境(Win98+IE5.01)では問題ないので
IE5.01へバージョンアップすればOKのような気がします。

> > InternetExplorer.Applicationを使ってダウンロードした場合は、
> > body.innerHTMLで中身を取り出すんでしたよね?
>
> その方法より、オリジナルに近い形で取り出す方法があるのです。
> 過去記事9-21です。HTML要素のouterHTMLプロパティを使う方法です。
> これだと、少なくとも<html>タグがまともに使われているドキュメントなら、もとの
> 内容がそのまま取り出せるのです。

この方法でもたぶんダメですね。誤動作すると思います。
取り出した後、オリジナルとまったく同一になるよう整形する必要があります。

> > # どちらにしても今のdownload.jsはあまり使い勝手がよくないので
> > # 次から添付はやめようと思います。
>
> そうですか。残念ですね。私は愛用しているのですが…。

ご要望であればオマケとして添付してもかまいませんが、添付をやめた場合でも
利用できるようにするつもりです。
# ただ、現在のモーダルダイアログ表示を本体から切り離したいのですが、
# そうするとダウンロード完了したことをどうやってHTAに知らせるかで
# 悩んでいます。

> IE.Offline=False
> とすると、オンライン状態に移行すると書いてありますが、実際にはそうなりません。
> また、
> IE.Navigate2 URL,4
> とすることで、キャッシュを読み込まないようにできるはずですが、こちらも
> うまく働かないみたいです。

なんか、こんなのばっかりですね。(^^;
# WshShell.AppActivate(title) や WshShell.Run(cmd, 9) も
# HTMLのスクリプトからだと効かないことがあります。

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

Windows2000では、HTAがシステムの一部として使われているらしい証拠をつかみました。

res://appwiz.cpl/default.hta

を開いてみてください。ダウンロードのダイアログが出ると思いますが、そのまま
開いてください。
すると、「アプリケーションの追加と削除」のダイアログが出ます。
これ、どうもHTAっぽい外観なんですが、本当にHTAだったとは。
# ちなみに、この情報源はWin2000のニュースグループで、「アプリケーションの追加と削除」を
# 開くとエラーが出るという記事に書かれていたエラーメッセージです。
# 肝心の解消法についてはわからないのでフォローできなかったんですが。

他にも、「お気に入りの整理」もHTA(少なくともHTML)だったと思います。
# これはWindows Startという雑誌に載っていたんですが、res://なんとかだという
# ことは覚えているのですが、詳細は忘れてしまいました。

IE関係のウィザードでもそれらしいのがありますね。
# バージョン情報のダイアログなんかも。

このように、WindowsではHTMLが用いられるところが多くなっているようですね。




To: shigehara さん

> 自分の持っている本を見たのですが載っていなかったので。

MSDNライブラリを「お気に入り」に入れておくと便利だと思いますよ。
URLは、リンクのページにあります。



To: 【おじさま】 さん

> コアコンポーネントって・・・? もしかして Win2000 はこれ
> を標準で持っていて、Win98SE だと持っていないのでしょうか。

Win2000では、標準でこのコントロールを持っており、Samさんがデフォルトで
待機しています。

おそらく、MSTTSL.EXEがこれに該当すると思います。
私はこれをインストールしていませんので。

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

管理人むたぐちさん

ユーザー辞書エディタの「編集」タブの中のサンプルの発声で
エラーということですか。うーーん、これは起こりません。
Win98SE でも Win2000 でもAを選んで発声をクリックすると
「かた」と発音してます。

>まず、コアコンポーネントをインストールしないと駄目でし
>ょうが、それが面倒なので(^^;

コアコンポーネントって・・・? もしかして Win2000 はこれ
を標準で持っていて、Win98SE だと持っていないのでしょうか。
こういうこと全然考えないでどちらも同じにインストールしち
ゃったんですけど。

shigehara さん 2000年 08月 04日 17時 32分 53秒

むたぐち さん

レスありがとうございます。
納得しました。
自分の持っている本を見たのですが載っていなかったので。

それと先程間違って2回質問を送ってしまいました。
申し訳ありません。

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

To: 【おじさま】 さん

> 日本語のほうでちょっと操作してみましたが特にエラーは出ませんでした。

これなんですが、サンプルを発音させようとしても、出来ませんでしたというエラーが
出るんですよね(Win2000)。

Win98の方にはインストールしていません。まず、コアコンポーネントをインストールしないと
駄目でしょうが、それが面倒なので(^^;



To: shigehara さん

> <INPUT TYPE="text">
> を作ったとした場合、入力できないようにすることって出来るのでしょうか?
> VBでいうプロバティーのLockedのような感じなんですが。

READONLY属性、もしくはreadOnlyプロパティをどうぞ。

shigehara さん 2000年 08月 04日 16時 24分 26秒

いつも参考にさせてもらっています。

疑問に思ったことがありましたので教えてください。
<INPUT TYPE="text">
を作ったとした場合、入力できないようにすることって出来るのでしょうか?
VBでいうプロバティーのLockedのような感じなんですが。

shigehara さん 2000年 08月 04日 16時 24分 06秒

いつも参考にさせてもらっています。

疑問に思ったことがありましたので教えてください。
<INPUT TYPE="text">
を作ったとした場合、入力できないようにすることって出来るのでしょうか?
VBでいうプロバティーのLockedのような感じなんですが。

【おじさま】 さん (tomiyama@seagreen.ocn.ne.jp) 2000年 08月 04日 14時 29分 04秒
URL:http://homepage1.nifty.com/~tomiyama/

管理人むたぐちさん

>ツリーの、Microsoft Speech Synthesis Engine か L&H TTS3000 を選択したときに
>ボタンが有効になります。

あっ、何で気付かなかったんだろう。ちゃんと有効になりました。
ありがとうございます。

Pronunciation... ボタンをクリックした時に起動する画面が Microsoft
Speech Synthesis Engine と L&H TTS300 では異なりますね。L&H TTS300
だと、それこそ「L&H ユーザ辞書エディタ (UDE)」が起動しました。
Microsoft Speech Synthesis Engine だと語句を入力する別な画面になり
ます。これが Win2000 だと日本語で Win98SE だと英語画面になりました。

日本語のほうでちょっと操作してみましたが特にエラーは出ませんでした。

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

To: AKiOS さん

> > Bodyのborder-style: noneが無視されている状態、という感じですね。
> > # このHTAでは、ほかの方法でboderを非表示にしているのかもしれませんが…。
>
> えっと、ますますわからなくなってしまいました。(^^;
> 最初、Win2000では問題ないけどWin98では(余分な)外枠が表示されてしまう
> のかと思っていました。borderが非表示ならそれでいいと思うのですが…。

はい、「Win2000では問題ないけどWin98では(余分な)外枠が表示されてしまう」のです。
それで、Win2000ではborderが非表示なのに、Win98ではborder(へこんだ外枠)が表示されてしまう、
ということなのです。
やはりわかりにくい説明ですか?

> # bodyのborder-styleは設定していませんが、htaのinnerBoderはnoに設定しています。

思うに、Win98+IE5.0では、innerBoder属性が効かないんじゃないかと(今Win2000でこれを
書いているので確かめていませんが)。
bodyのborder-styleは、どちらでも有効でした。

> InternetExplorer.Applicationを使ってダウンロードした場合は、
> body.innerHTMLで中身を取り出すんでしたよね?

その方法より、オリジナルに近い形で取り出す方法があるのです。
過去記事9-21です。HTML要素のouterHTMLプロパティを使う方法です。
これだと、少なくとも<html>タグがまともに使われているドキュメントなら、もとの
内容がそのまま取り出せるのです。

> # どちらにしても今のdownload.jsはあまり使い勝手がよくないので
> # 次から添付はやめようと思います。

そうですか。残念ですね。私は愛用しているのですが…。
やはり、キャッシュを再利用とか、しみったれた発想はやめるべきですか(^^;

> ところでInternetExplorer.Applicationはオフライン制御できますか?

IE.Navigate URL を実行した場合…

オンライン状態なら、最新の内容を取ってきます(IEデフォルトの設定では)。
オフライン状態なら、キャッシュの内容を取ってきます。
もしキャッシュになければ、オンラインに移行するかどうかのダイアログが出て、
そこで「オフライン継続」を選ぶと、「オフライン状態では利用できないページ」という
ドキュメントが表示されます。
「接続」を選ぶと接続してオンライン状態になります。そのまま最新の内容を取ってきます。
ここでキャンセルすると、やはり「オフライン状態では利用できないページ」という
ドキュメントが表示されます(オフライン状態になる)。

IE.Offline=False
とすると、オンライン状態に移行すると書いてありますが、実際にはそうなりません。

また、
IE.Navigate2 URL,4
とすることで、キャッシュを読み込まないようにできるはずですが、こちらも
うまく働かないみたいです。




To: 【おじさま】 さん

> 私のところではコントロールパネルの Speech を開いてもエンジンの表示
> はされるもののボタンはすべて灰色の使用不可です。JPJLXD60.HLP を読む

ツリーの、Microsoft Speech Synthesis Engine か L&H TTS3000 を選択したときに
ボタンが有効になります。

> ありがとうございます(^^;)。書庫の中を見てもこういったことが書かれた
> ヘルプらしきものがありませんね。どこかにまとめてヘルプはヘルプであ
> るのかもしれません。

これはどこかにあるでしょうね。
私はMS Agentのドキュメントしか見つけられなかったですが。

【おじさま】 さん (tomiyama@seagreen.ocn.ne.jp) 2000年 08月 04日 10時 43分 27秒
URL:http://homepage1.nifty.com/~tomiyama/

管理人むたぐちさん

>これで発音辞書のようなものを編集できるみたいです。

私のところではコントロールパネルの Speech を開いてもエンジンの表示
はされるもののボタンはすべて灰色の使用不可です。JPJLXD60.HLP を読む
と「L&H ユーザ辞書エディタ (UDE)」というのがあって、このツールがむ
たぐちさんが書かれた編集ツールのことらしいのですが、これに該当する
ものがありません。どうも何かインストールし忘れているものがあるのか
もしれません。もう一度あのサイトに行ってみます。

私がインストールしたのは MSTTSL.EXE LHTTSJPJ.EXE SPCHCPL.EXE なので
すが。

>ええ!? それは義務ですか?
>
>とりあえずざっと調べました。

ありがとうございます(^^;)。書庫の中を見てもこういったことが書かれた
ヘルプらしきものがありませんね。どこかにまとめてヘルプはヘルプであ
るのかもしれません。

AKiOS さん 2000年 08月 04日 00時 36分 23秒

To: 管理人むたぐち さん

> > ・外枠が表示されてしまう(Win98+IE5.0で再現)
>
> Bodyのborder-style: noneが無視されている状態、という感じですね。
> # このHTAでは、ほかの方法でboderを非表示にしているのかもしれませんが…。

えっと、ますますわからなくなってしまいました。(^^;
最初、Win2000では問題ないけどWin98では(余分な)外枠が表示されてしまう
のかと思っていました。borderが非表示ならそれでいいと思うのですが…。
# bodyのborder-styleは設定していませんが、htaのinnerBoderはnoに設定しています。

> InternetExplorer.Applicationを使えば、キャッシュとの親和性も良好で、もちろん
> キャッシュにない場合はダウンロードしてくれますが、こちらを採用していない理由
> というのはあったのでしたっけ?
> # すいません、何か理由があったような気はするのですが、忘れてしまいました。

InternetExplorer.Applicationを使ってダウンロードした場合は、
body.innerHTMLで中身を取り出すんでしたよね?
そうだとすると中身がオリジナルと異なりますので、
記事検索HTAが誤動作する可能性があります。
# どちらにしても今のdownload.jsはあまり使い勝手がよくないので
# 次から添付はやめようと思います。
ところでInternetExplorer.Applicationはオフライン制御できますか?

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

To: 【おじさま】 さん

> http://msdn.microsoft.com/workshop/imedia/agent/agentdl.asp#tts
>
> に、Speech control panel というのがあったので、いかにもこれで
> コントロールパネルから音声や言語の切り替えができそうな気がして
> インストールしてみましたが、インストールされている音声や言語を
> 表示するものの切り替えはできません。

ええ、これは先ほど私もインストールしてみました。
これで発音辞書のようなものを編集できるみたいです。
Samさん(私より年上)に、私の名前の読み方を教えて差し上げました。
とりあえず、uを発音しなければそれらしいです。

しかし、日本語エンジンのダイアログではエラーが出てしまい、
設定できませんでした。何か面白そうなんですが、ね。
# 細かく設定すれば、歌わせることも可能?

> ちゃんと調べていないので嘘を書いてるかもしれませんが、きっとこ
> れくらい書くと管理人むたぐちさんが興味を持ってくれて、もっと詳
> 細に調べてくれるでしょう(^^;)。

ええ!? それは義務ですか?

とりあえずざっと調べました。

・Pause,Resume,StopSpeakingなど、引数なしのメソッドでしゃべりの制御が可能。
・CountEnginesプロパティで、インストール済みのエンジン数がわかる。
・Speaker,Age,LanguageID等、index As Longの引数を持つメソッドで、各スピーチエンジンの
情報が取得できる。引数には、1からCountEnginesプロパティの値が指定可能。
・FindEngineプロパティで、スクリプトエンジンが検索できるみたい(引数が省略できないのに
どうやって使うのか?)。また、Findメソッドの役割は? 引数のRankListって?
・CurrentModeプロパティのほかにも、Selectメソッドでもエンジンが選択できる。
・LexiconDlg,GeneralDlg等、hWnd As Long, title As Stringを引数として持つメソッドは、
おそらく設定ダイアログを出すのでしょうが使い方がよくわからない。
・Speedプロパティでスピードの調節が出来る。デフォルト150。
・IsSpeakingプロパティ(bool値)で、しゃべっているかどうかがわかる。
・LipTension,JawOpen,MouthWidth等、Integerのプロパティは、唇の絵柄を変えるのに使う。
・SpeakingStarted,SpeakingDoneイベントでしゃべり始め、終わりを検出できる。

あと、TextToSpeechコントロールは、複数呼び出してもそれは一つの実体でしかありません。
HTAやVBに貼り付けたのを同時に表示させておくと、同時に唇を動かします(^^;
# VBの開発画面上でも動くので不気味(^^;

私のところでは、デフォルトがナオコさんになってしまったのですが、どうやったらSamさんに
変えられるんでしょうね。
一応、スクリプトからしゃべり手を変えられることはわかったのですが…。
また、1=Sam 2=Naoko 3=Kenjiとなっていて、【おじさま】さんのところと番号が違います。
やはり、Findメソッド等の使い方を把握しておく必要がありそうです。

【おじさま】 さん (tomiyama@seagreen.ocn.ne.jp) 2000年 08月 03日 15時 40分 15秒
URL:http://homepage1.nifty.com/~tomiyama/

管理人むたぐちさん

私のところでは日本語版の Text-To-Speech をインストールしても日
本語を認識できませんでした。

http://msdn.microsoft.com/workshop/imedia/agent/agentdl.asp#tts

に、Speech control panel というのがあったので、いかにもこれで
コントロールパネルから音声や言語の切り替えができそうな気がして
インストールしてみましたが、インストールされている音声や言語を
表示するものの切り替えはできません。

仕方がないのでオブジェクトブラウザで Text-To-Speech を見てみる
と CurrentMode といういかにもそれらしいプロパティがあったので
早速試してみますとどうもこれのようです。ちゃんとは調べていない
のですが、Speech control panel に表示される順番に先頭が 1 で、
以下 2 3 4 ・・・・となっているようです。ちなみに Speaker とい
う Function で名前が分かり、TextToSpeech.Speaker(1) はナオコさ
んで、(2) はケンジ君でした。CurrentMode を 1 や 2 にすると、こ
のおふたりがちゃんと日本語を話してくれました(でも英語は話せま
せん)。

ちゃんと調べていないので嘘を書いてるかもしれませんが、きっとこ
れくらい書くと管理人むたぐちさんが興味を持ってくれて、もっと詳
細に調べてくれるでしょう(^^;)。

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

To: AKiOS さん

> > ・本文のコピーができない。キーワード欄に貼り付けができない(Win2000のみで再現)
>
> 私の環境でも Ctrl+C と Ctrl+V が効かないことがありました。

これに関してなんですが、IEのWebBrowserコントロールを使っているほかのアプリ(Datulaなど)
でも、Ctrl+Cが効かなくなっています。
WebBrowserコントロールのバグなのかもしれません。

> > ・外枠が表示されてしまう(Win98+IE5.0で再現)
>
> 外枠っていうのがよくわかりませんが、

すいません。説明不足ですね。
Bodyのborder-style: noneが無視されている状態、という感じですね。
# このHTAでは、ほかの方法でboderを非表示にしているのかもしれませんが…。

> > ・「ダウンロード」するとき、たまに「書き込みできません」というエラーが出て失敗する。
>
> 私はdownload.jsを使っていないし、たまにしか起こらない
> ということなので対処は難しいですが、とりあえず、
> エラーが出たら以下のことを教えていただけませんか。

バグ報告の駄目な見本みたいで申し訳ありませんでした(^^;

> ・何行目でエラーになるのか

最近、このエラーにあまり遭遇しないので、ちょっとすぐにはわからないですm(_ _)m
# ひかえておけばよかったですね…。少し前まではわりと頻発していたのですが。

また発生したらご報告させていただきます。

> ・最新記事かそれとも過去記事か

最新記事です。

> ・オフライン作業かそれとも接続中か

オフライン作業中です。そのせいかも。
そういえば、仮にエラーが出ても、そのままスクリプトを続行させて再度実行すると、
うまくいきます。

Win98+IE5.0では、IEの窓をすべて閉じると「オンライン状態」になるので、
「オフライン状態」を保つにはIEの窓を一つ開いておかないといけません。
これは仕方ないことですが、なんか理不尽な仕様のような気がします。

また、Win2000では一度オフライン状態にしておけば窓を閉じてもずっとオフライン状態の
ままなのはいいのですが、IEの「ファイル」メニューに「オフライン作業」の
チェック項目がないので、わざとキャッシュにないURLの表示を試みてダイアログを出し、
「オフライン作業」に移行するしかないので大変不便です。

IEのオブジェクトにはofflineプロパティと言うのがあるのですが、これが思うように
作用してくれないので役に立ちません(^^;

microsoft.xmlhttpでキャッシュを読み込むと言うのは、かなり無理やりな
処理なのかもしれませんね。

InternetExplorer.Applicationを使えば、キャッシュとの親和性も良好で、もちろん
キャッシュにない場合はダウンロードしてくれますが、こちらを採用していない理由
というのはあったのでしたっけ?
# すいません、何か理由があったような気はするのですが、忘れてしまいました。
# 私が、microsoft.xmlhttpを使う良い参考例になるから、といって強要(^^;)させてしまったのでしたっけ?




To: nao さん

> 私の知っているのでは,ここに,あります。
> http://www.math.titech.ac.jp/Users/sasaki/another/javascript.html#xbm_editor

ありがとうございます。参考にしてみます。

> これも,使えるかもとかんがえたのですが,色をどうするのかわからなかったので使ってません。

そうですか。単色ではやはりちょっと寂しいですしね。

【おじさま】 さん (tomiyama@seagreen.ocn.ne.jp) 2000年 08月 03日 13時 10分 45秒
URL:http://homepage1.nifty.com/~tomiyama/

管理人むたぐちさん

>で、インストールしてみたんですが、あの唇が日本人になってしまいました(笑)
>どうやら英語を忘れてしまったみたいです。どうすればいいのでしょうか(^^;

日本語版を入れると英語版が使えなくなるのですか。それもまた困った
仕様ですね。両方が必要なこともあるでしょうに。

実はこのコントロール、面白そうなのでいつか使うこともあるだろうと
インストールだけは早々にしていたのですが全く使わないままになって
いました。

nao さん 2000年 08月 03日 07時 59分 24秒

To: 管理人むたぐち さん

># xbmのフォーマットは知らないんですが。

私の知っているのでは,ここに,あります。
http://www.math.titech.ac.jp/Users/sasaki/another/javascript.html#xbm_editor
これも,使えるかもとかんがえたのですが,色をどうするのかわからなかったので使ってません。

To AKiOS さん

ありがとうございます。また利用することがあれば参考にさせていただきます。


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

To: 【おじさま】 さん

> を読まぬままの送信になってしまいました。すみません。で、結局消えち
> ゃったのでもう一度書きます。

おや、これは申し訳ありませんでした。
タイミングが悪かったですね…。

> 多分これが日本語版の情報だと思います。違うかな(^^;)
>
> http://www.forest.impress.co.jp/article/2000/07/06/speechengine.html

まさにこれです。
MS Agentは、このスピーチエンジン(Text-to-speech engines)を使っているわけですね。

http://msdn.microsoft.com/workshop/imedia/agent/agentdl.asp
から日本語のスピーチエンジンがダウンロードできます。

で、インストールしてみたんですが、あの唇が日本人になってしまいました(笑)
どうやら英語を忘れてしまったみたいです。どうすればいいのでしょうか(^^;

# 日本語スピーチエンジンの出来は…まあ、努力は認めましょう(笑)
# よく漢字を知っているなあ、とは思います。



To: 西 さん

> また化けました。(普通に入れましたよ)

わかりにくいですが、半角かぎ括弧(「」)や、半角句読点(、。)、半角中黒(・)なども
半角カナの一種ですので文字化けの原因となります。ご注意を。
IMEの設定を見直しておくといいかもしれません。

# できれば、書き込む前にその内容をテキストファイルに保存しておき、もし化けたら
# それをファイルとして添付してメールしてもらえませんか?
# 何かがわかるかもしれないので。

AKiOS さん 2000年 08月 03日 00時 46分 40秒

To: 管理人むたぐち さん

> このHTAを使い込んでいるうちに、いくつか不具合らしきものを見つけたので
> ついでにご報告です。

ご報告ありがとうございます。

> ・本文のコピーができない。キーワード欄に貼り付けができない(Win2000のみで再現)

私の環境でも Ctrl+C と Ctrl+V が効かないことがありました。

> ・外枠が表示されてしまう(Win98+IE5.0で再現)

外枠っていうのがよくわかりませんが、
私の環境はWin98+IE5.01なので、再現できればなんとかなるかもしれません。

> ・「ダウンロード」するとき、たまに「書き込みできません」というエラーが出て失敗する。

私はdownload.jsを使っていないし、たまにしか起こらない
ということなので対処は難しいですが、とりあえず、
エラーが出たら以下のことを教えていただけませんか。
・何行目でエラーになるのか
・最新記事かそれとも過去記事か
・オフライン作業かそれとも接続中か

> > 新言語C#ですが、HTMLのスクリプト(<script lanuage="C#">)
> > としても使えるそうです。
>
> ということは、ActiveXスクリプティングエンジンとして提供されると見て
> ほぼ間違いないでしょうね。=WSHでも使える…?
> # 拡張子は.csかな…。

スクリプトとしても使えるということは、WSHでも使える可能性大ですね。
拡張子はおっしゃるとおり.csだったと思います。



To: nao さん

> この掲示板に公開されたスクリプトを使ってページ作りました。
> http://www.kgw-kokubunji-j.ed.jp/etc/script/magic.htm
> 本意でない使い方かもしれませんが連絡させていただきます。
> ActiveXの警告が出て,表示に時間かかります。

ご連絡ありがとうございます。
今ごろ気付いたんですが、
Dictionaryオブジェクトは使う必要ありませんでした。(^^;
これでActiveXの警告も出なくなると思います。
以下サンプルです。ご参考までに。
---------- ここから ----------
<html>
<head>
<script language="javascript">
var colors = get_colors();
var icons = new Object();
icons.heart = new Array(
"□□赤赤□□□□□赤赤",
"□赤赤赤赤□□□赤赤赤赤",
"赤赤赤赤赤赤□赤赤赤赤赤赤",
"赤赤赤赤赤赤赤赤赤赤赤赤赤",
"赤赤赤赤赤赤赤赤赤赤赤赤赤",
"□赤赤赤赤赤赤赤赤赤赤赤",
"□□赤赤赤赤赤赤赤赤赤",
"□□□赤赤赤赤赤赤赤",
"□□□□赤赤赤赤赤",
"□□□□□赤赤赤",
"□□□□□□赤"
);
function startup() {
heart.innerHTML = get_iconHTML(icons.heart);
reverse.innerHTML = get_iconHTML(icons.heart.reverse());
}
function get_iconHTML(icon) {
var s = '<table cellpadding="0" cellspacing="0">\n';
for (var i = 0; i < icon.length; i++) {
var line = icon[i];
s += "<tr>";
for (var j = 0; j < line.length; j++) {
s += '<td class="'+colors[line.charAt(j)]+'">'
}
s += "</tr>\n"
}
s += "</table>\n";
return s;
}
function get_colors() {
var o = new Object();
o["□"] = "pixel";
o["黒"] = "black";
o["赤"] = "red";
return o;
}
</script>
<style type="text/css">
.pixel { width:1; height:1; }
.black { width:1; height:1; background-color:black; }
.red { width:1; height:1; background-color:red; }
</style>
</head>
<body onload="startup()">
<table cellpadding="0" cellspacing="5">
<tr>
<td id="heart"></td>
<td id="reverse"></td>
</tr>
</table>
</body>
</html>
---------- ここまで ----------

西 さん 2000年 08月 02日 22時 09分 14秒

また化けました。(普通に入れましたよ)
同でもいいことなので別にいいですが。

西 さん 2000年 08月 02日 22時 07分 30秒

ログを修正するのがそんなに大変だったとは知りませんでした。
大変ご迷惑かけました。
文字化けですがど當未貌フ呂靴討「蠅泙后C燭瀬▲襯侫.戰奪箸鯑「譴襪箸ュ
シフトキーを押しながら入力していますがそれは関係ないと思います。
結論としてはじ彊ヌ毀世任后」

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

kon nichiwa.
yo-cosso,cono homepage ni.
koko dewa, windows scripting hostno khaisetsuwo shiteimass.
watashi wa, nihongo mo shabelemasuga?
kor you no, tek noro gie no mdadzukei tor ieemass.

あの唇にしゃべらせてみてください(笑)
みなさんも、何かおもしろいネタができたら書き込んでくださいね。
(って、こういうことをしてもいいのだろうか(^^;)

WWW. Feb.. ltd.. i.e.. etc.. N.Y.. :-). #12,345,678. 12kg.. $12.23.

数字も略語も得意です。



To: 西 さん

> レスありがとうございます。
>
> また質問ですが、
> どうすればHTA内でフレームを使うときにフレームのリンク先がHTAでもうまく動作できるようになるのですか。
> 普通にリンクするとファイルのダウンロードになります。

と、こういうことがおっしゃいたかったわけですね(^^;

この質問自体は、過去にAKiOSさんが出されたものと似ていますので、
ログの方を参照してみてください。
過去記事12の39番目の記事、12の41、12の46あたりでしょうか。

IE5.5なら、<hta:application>要素のnavigable属性を使うといいのかもしれませんが、
私はIE5.5を持っていないので未確認です。


先ほども書きましたが、この掲示板のログを修正するには、サーバーからテキストを
ダウンロードし、エディタで書き換えて(記事番号に欠番・重複・入れ違いがでないように、
余計なスペースなどが入らないように注意しながら)、アップロードして既存の
ログの上書きをしなければなりません。
そのため、下手をするとその間の書き込みが消えてしまう可能性があるのです。

# お得意のスクリプトで対処しろって? さすがにそこまでは(笑)

西さんの書き込みはよく文字化けしていますが、半角カナあるいはそれに類するものを
使用していませんか?
そうでないのなら、仕方がないんですけど…。何か理由があるのでしょうか。

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

管理人むたぐちさん。

オフラインでメッセージを書いて送信したので

>とりあえずログを削除するので、しばらく書き込みをお控えください。

を読まぬままの送信になってしまいました。すみません。で、結局消えち
ゃったのでもう一度書きます。

>残念ながら、日本語はしゃべれないようですが、英文はなかなか流暢に
>読み上げてくれます。

多分これが日本語版の情報だと思います。違うかな(^^;)

http://www.forest.impress.co.jp/article/2000/07/06/speechengine.html

もしこれならば最近これを使ったオンラインソフトがいくつか続けて
出ています。

管理人むたぐち さん 2000年 08月 02日 20時 01分 22秒

削除完了しました。この掲示板では、アクティブなログの修正がなかなか
大変なので、書き込みは注意しておこなってください。

レスはまた後ほど。

管理人むたぐち さん 2000年 08月 02日 19時 49分 07秒

とりあえずログを削除するので、しばらく書き込みをお控えください。

西 さん 2000年 08月 02日 18時 08分 57秒

すいません。
なんだかたくさんはいってますね。18時2分41秒より前のは消してください。


西 さん 2000年 08月 02日 18時 06分 43秒

ごめんなさい。
2つ下のが文字化けしたので文字化けを直してもう1度入れたのですが
正しくは〜を入れ忘れました。
文字化けのところだけなので当てはめて読んでください。

西 さん 2000年 08月 02日 18時 04分 06秒

また質問ですがぃ硲圍粗發妊侫譟璽爐鮖箸ケ「縫侫譟璽爐離螢鵐_茲。硲圍舛世函悒瀬Ε鵐蹇璽匹靴泙垢@戮箸い錣譴討靴泙い泙后」

西 さん 2000年 08月 02日 18時 03分 47秒

レスありがとうございます。

また質問ですが、
どうすればHTA内でフレームを使うときにフレームのリンク先がHTAでもうまく動作できるようになるのですか。

西 さん 2000年 08月 02日 18時 03分 29秒

レスありがとうございます。

また質問ですがい匹Δ垢譴丕硲圍粗發妊侫譟璽爐鮖箸Δ箸C縫侫譟璽爐離螢鵐_茲。硲圍舛任發Δ泙e虻遒任C襪茲Δ砲覆襪里任垢@」
普通にリンクするとファイルのダウンロードになります。

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

○Windows2000をしゃべらせる

面白いものを見つけました。
Windowsをしゃべらせることができるのです。
残念ながら、日本語はしゃべれないようですが、英文はなかなか流暢に読み上げてくれます。

最近、エクスプローラの話とかばっかりでしたが、これはマニアじゃなくても純粋に
面白いネタだと思います。
これで、"WSH"をどう発音するかもわかります(?)

まだ詳しい仕様がわからないのですが、女性の声とかも出せるのかな?
SDKがあったらぜひ入手したいですね。
# とりあえず、コントロール名はMicrosoft Voice Textです。

また、音声認識のコントロールもあるみたいです。
そういえば、Win2000の発売前にそういう話があったっけ…。

なお、↓はWin2000のみで動作するHTA(HTML)です。

<html>
<head>
<title>Voice!</title>
<script language="VBScript">
Sub window_OnLoad()
TextToSpeech.Speak "Click Me!"
End Sub
Sub TextToSpeech_ClickIn(ByVal x, ByVal y)
If textarea.innerText<>"" Then
TextToSpeech.Speak textarea.innerText
Else
TextToSpeech.Speak "Please input some words in this text area."
End If
End Sub
Sub window_OnUnLoad()
TextToSpeech.Speak "Good bye."
End Sub
</script>
</head>
<body scroll="no">
<object classid="CLSID:2398E32F-5C6E-11D1-8C65-0060081841DE" id="TextToSpeech">
</object>
<textarea id="textarea" rows="30" cols="60"></textarea>
</body>
</html>

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

To: 西 さん

> >HTAの中にマイコンピュータやコントロールパネルを表示できませんか
> の応用でマイドキュメント・マイピクチャーズや検索のIDも探したのですが
> 発見できませんでした。これらにもIDはありますよね?

マイドキュメントは{450D8FBA-AD25-11D0-98A8-0800361B1103}ですが、
マイピクチャーズのクラスIDはわかりませんでした(ないかも)。

ただ、これらのフォルダの位置をスクリプトから取得する方法はある
(実体はただのフォルダですし)ので、スクリプトでsrc属性を切り替えてやることで
うまくいくかもしれません。

偶然見つけたんですが、{871C5380-42A0-1069-A2EA-08002B30309D}は、ホームページの
IDです。これは、スクリプトを使わないでホームページにジャンプするのにも使えるかも
しれませんね(ただしWindowsのみ)。



To: AKiOS さん

> 確かに見にくいですね。
> 近日中に何とかします。

ありがとうございます!
これで、掲示板にスクリプトを貼り付けるときも、ちゃんとインデントしておいて
損はなくなります(?)

このHTAを使い込んでいるうちに、いくつか不具合らしきものを見つけたので
ついでにご報告です。

・本文のコピーができない。キーワード欄に貼り付けができない(Win2000のみで再現)
・外枠が表示されてしまう(Win98+IE5.0で再現)
・「ダウンロード」するとき、たまに「書き込みできません」というエラーが出て失敗する。

よろしくお願いします。

> 新言語C#ですが、HTMLのスクリプト(<script lanuage="C#">)
> としても使えるそうです。

ということは、ActiveXスクリプティングエンジンとして提供されると見て
ほぼ間違いないでしょうね。=WSHでも使える…?
# 拡張子は.csかな…。




To: nao さん

> http://www.kgw-kokubunji-j.ed.jp/etc/script/magic.htm
> 本意でない使い方かもしれませんが連絡させていただきます。

テキストで画像を表現できるというのは面白いですね。
テキストで画像、といえば、うちのページで使われているカウンタの*.xbmも、
中身はテキストですね。単色の絵ならこれで再現できるかもしれません。
# xbmのフォーマットは知らないんですが。

> このところの,内容は大変参考になることばかりですね。
> でも,アクティブディスクトップでもWin2000でもない環境では,
> Shell.Applicationが使えないなど悩んでいる所です。

そうですか。いまいち反応がなくてやっぱりマニアックすぎるのかな、
と思っていたところでした(^^;

たしかにシェル統合していないと使えないというのは痛いですね。

nao さん (kokubj01@kagawa-edu.takamatsu.kagawa.jp) 2000年 08月 02日 10時 37分 21秒

To AKiOS さん

この掲示板に公開されたスクリプトを使ってページ作りました。
http://www.kgw-kokubunji-j.ed.jp/etc/script/magic.htm
本意でない使い方かもしれませんが連絡させていただきます。
ActiveXの警告が出て,表示に時間かかります。

To: 管理人むたぐち さん
このところの,内容は大変参考になることばかりですね。
でも,アクティブディスクトップでもWin2000でもない環境では,
Shell.Applicationが使えないなど悩んでいる所です。
(Win NT4.0からWin2000にするのは,クライアントの40台は,)

AKiOS さん 2000年 08月 02日 00時 38分 24秒

To: 管理人むたぐち さん

> # それにしてもこの掲示板は行頭のスペース・タブが表示されなくなるので見にくいですね。

確かに見にくいですね。
近日中に何とかします。

PS.
新言語C#ですが、HTMLのスクリプト(<script lanuage="C#">)
としても使えるそうです。

西 さん 2000年 08月 01日 21時 40分 32秒

すいませんまた文字化けです。
正しくは「自分でやってみたけど成功しなかったので出来ないと思っていました。」です。
>HTAの中にマイコンピュータやコントロールパネルを表示できませんか
の応用でマイドキュメント・マイピクチャーズや検索のIDも探したのですが
発見できませんでした。これらにもIDはありますよね?

shigehara さん 2000年 08月 01日 19時 59分 39秒

むたぐち さん

レスありがとうございます。
むたぐちさんの意見を参考にしてやってみます。

また何かありましたらお願いします。

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

To: shigehara さん

> テキストボックスなどでフォーカスを受け取った時などに
> その下あたりにちょっとしたリストボックスのようなものを表示したいのです。
> そして表示されたリストボックスから項目を選択したいのです。

リストボックス自体は、
<select size="3">
<option value="1">test1</option>
<option value="2">test2</option>
<option value="3">test3</option>
</select>
で表現可能です。何の飾り気もありませんが、凝りだすと限度がないので…(^^;

次に、<input type="text">にフォーカスがあたったとき(onfocusイベント)、
フォーカスが外れたとき(onblurイベント)にそれぞれリストボックスを
表示/非表示にするコードを書けばいいでしょう。
あと、リストボックスのアイテムを選択したときのコードを書けば完成!
…といっても、位置指定など、ほかにも考えなければならない要素が結構あります。
一筋縄ではいかないかもしれません。
# 私も、ちょっとすぐにはサンプルを書いたりはできないですね…。

shigehara さん 2000年 08月 01日 17時 25分 49秒

shigehara です

以前に質問させていただいた時はありがとうございました。
ちょっとわからないことがありまた質問させてください。

現在VBScriptを使用しHTML箕荷を作成中なのですが・・・。

テキストボックスなどでフォーカスを受け取った時などに
その下あたりにちょっとしたリストボックスのようなものを表示したいのです。
そして表示されたリストボックスから項目を選択したいのです。

イメージ的にはマウスを右クリックした時に出てくるようなメニュー画面を
リストボックスのように作りたいのです。

ちょっとわかりづらいと思いますが、どのように作成すればいいのかわからない状態です。よろしければ教えてください。

西 さん 2000年 08月 01日 10時 10分 01秒

むたぐちさんどうもありがとうございます。
自分でやったことがあったのですがい世瓩世辰燭里能侏茲覆い箸个C蟷廚辰討い泙靴拭」

きむち さん (kim@x.age.ne.jp) 2000年 08月 01日 09時 01分 12秒

>管理人むたぐち さん

>いちばん簡単なのは、FileSystemObjectのGetFileNameメソッドを使うことです
無事、ファイル名を取得できました。有り難うございます。

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

To: 西 さん

> 正しくは(HTAの中にマイコンピュータやコントロールパネルを表示できませんか?)というものでした。

folder.httを参考にして、
<object id=FileList classid="clsid:1820FED0-473E-11D0-A96C-00C04FD705A2" tabIndex=1></object>
なんてやってみたんですが、駄目ですね。
# どうも、IEやエクスプローラのウィンドウでしか動かないコントロールらしい…。

WebBrowserコントロールを埋め込んで、マイコンピュータやコンパネを表示することなら
できるかもしれません。# これってVBに付属のコントロールでしたっけ?

ちょっと発想を変えて、iframeでフォルダウィンドウを埋め込むという手を思いつきました。

<iframe id="Explorer" src="file:///::{20D04FE0-3AEA-1069-A2D8-08002B30309D}"></iframe>
これだと、「マイコンピュータ」が埋め込まれます。同様に、

<iframe id="Explorer" src="file:///::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{21EC2020-3AEA-1069-A2DD-08002B30309D}" ></iframe>
で、(なんか表示がおかしい気もするが)コンパネが埋め込まれますね。
src属性をスクリプトで切り替えてやることも可能でしょう。


ここからはマニアックな話になりますが、こんなことも可能です。
# 私が最近この掲示板に書いてきた一連の話を知らない方が見れば、何でこんなことができるのか、
# 不思議に思うでしょうね。

<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>

<button id="cmdTest">test</button>
<iframe id="Explorer" src="file:///::{20D04FE0-3AEA-1069-A2D8-08002B30309D}" ></iframe>

西 さん 2000年 07月 31日 22時 24分 51秒

すいません。文字化けしました。
正しくは(HTAの中にマイコンピュータやコントロールパネルを表示できませんか?)というものでした。

西 さん 2000年 07月 31日 19時 32分 38秒

お久しぶりです。
質問ですがぅ泪ぅ灰鵐團紂璽燭筌灰鵐肇蹇璽襯僖優襪鬘硲圍粗發防充┐垢詈j,呂△蠅泙垢@ゥ

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

To: YOSSHI さん

> 1.WSHをつかって、マシンに設定されているIPアドレス等の情報を
> 戻り値にする方法を教えてください。

過去記事リスト11の44番目、4の9番目、4の8番目の記事を参考にしてください。

・Winsockコントロールを使う(VBを持っている場合のみ)
・ipconfig.exeの出力ファイルを無理やり解析する(大変そう)
・WMIを使う(基本的にWin2000のみ)
・レジストリを読み込む(NTでは無理らしい。Win9x,2000では未確認)

お好きな方法をどうぞ。

戻り値にする方法は、
WScript.Quit 戻り値
でできますが、戻り値はinteger型であることに注意してください。
IPアドレスは4294967296通りあるので、このままではintegerの範囲を超えてしまいます。
ファイル出力にするなどして工夫してください。

> 2.WSHで書いたスクリプトを実行中は実行中のダイアログ以外に
> フォーカスが移らないようにするのはどうしたらいいですか?

一定時間ごとにAppActivateメソッドを実行してやるしかないでしょう。
SendKeysするときは、該当ウィンドウをAppActivateしてからするのが定石です。

> または、コントロールパネル等で、最小化ができないダイアログ等
> について、表示させない状態で処理を行うことはできるなら
> その方法を教えてください。

WshShell.Run "パス",0
とやると、ウィンドウが非表示の状態でアプリが実行されます。

パスは、 control.exe hoge.cpl という感じでしょうか。
ただし、こうやってウィンドウを非表示にした場合、SendKeysでキーコードを送ることが
できるかどうかについては未確認です(確かめておく必要があるな…)。




To: きむち さん

> この場合はパスまで取得してしまいますよね?
> ファイル名のみというのは可能でしょうか?

フルパスからファイル名を取り出す処理を書いてやればいいのでは?

いちばん簡単なのは、FileSystemObjectのGetFileNameメソッドを使うことですが、
そのためだけに使うというのがもったいないと感じられるなら、VBSの関数だけでも
可能です。InStrRev関数、Right関数、Len関数を組み合わせればできると思いますよ。
ご自分で考えてみるのも面白いでしょう。

あと、WScript.Argumentsは、ドロップしたファイルのパスを返すだけでなく、
スクリプトファイルに与えた引数を返すものですので、ファイル名以外のものが
返される可能性を想定しておいた方がいいでしょう。
FileExists、FolderExistsメソッドで確認した方がいいのかもしれません。
# 結局FileSystemObjectを使うことになりますが。

きむち さん (kim@x.age.ne.jp) 2000年 07月 31日 16時 59分 01秒

こんにちは、いつも参考にさせて頂いています。
ファイルのドラッグ&ドロップ処理を行いたいのですが
こちらで紹介されているコードを試させていただきましたが
この場合はパスまで取得してしまいますよね?
ファイル名のみというのは可能でしょうか?


Set WSHArguments = WScript.Arguments
If WSHArguments.Count > 0 Then
For Each I In WSHArguments
str=str & I & vbCrLf
Next
MsgBox str
End If

Return