Lib30 さん (lib30@yo-mail.co.jp) 2000年 07月 01日 22時 54分 42秒
URL:http://www.ob.aitai.ne.jp/~kazoo/

>ところで、バナーはありますか?あれば教えていただきたいです。

トップページの下のほうにあったようななかったような...。

Lib30 さん (lib30@yo-mail.co.jp) 2000年 07月 01日 22時 47分 22秒
URL:http://www.ob.aitai.ne.jp/~kazoo/

>> ところで、VBScriptでパソコンにインストールされているフォント名を取得する方法を知りませんか?
>
>こんなのを考えてみましたが、Win2000ではフォント名は取得できませんでした。
>Win98ではどうでしょう?

やはりフォント名は取得できません。フォントのファイル名なら取得できるんですけれど...。
VBならできるんですけれどもねー。やっぱり無理でしょうか。
どうも貴重な時間を割いていただいてありがとうございます。

TiMe さん 2000年 07月 01日 19時 14分 20秒

分かりました。参考にします。
リンクについては、今度の更新予定日7/2にアップしたいと思います。
ところで、バナーはありますか?あれば教えていただきたいです。
ちなみに家のアドレスはhttp://www.avis.ne.jp/~tsurugi/です。

go さん 2000年 07月 01日 12時 54分 32秒

こんにちはgoです。
To: むたぐち さん
いろいろと見て頂きどうもありがとうございました。
エラーの原因は引数の渡し方がまずかった様です。
<xxx@yy.co.jp> → " <xxx@yy.co.jp>"(文字列)と変更したら
うまく起動することができました。どうもありがとうございます。
ちょっとした事でかなりの時間を浪費してしまいました。
でもこんな時にこの掲示板であり皆さんと意見交換、質問等々が
できて本当に感謝しております。
今後は自分でWshを作成し意見、質問等を提示したいと思います。
それでは今後も宜しくお願いします。

ts さん (takano-su@ms.tokyo.jcom.ne.jp) 2000年 07月 01日 01時 07分 46秒

こんにちは。tsと申します。
Wordの起動について質問させていただきます。
以下のVBSで、Wordを起動して文書を表示させたいのですが、
--
set a=createobject("word.application")
a.visible=true
a.documents.open("c:\a.doc")
--
10回の起動トライで、2〜3回は起動するものの、7〜8回は起動に失敗し、
WSHから「呼び出しは、呼び出し先で拒否されました。(80010001)」
というエラーメッセージを返されます。エラー発生に規則性はないのですが、
エラーが出た後、ちょうど1〜1.5秒後に再びクリックすると起動に成功する
確率が多少高いような気がします。
マイクロソフトHPの技術情報から、winerror.hというファイルにエラーメッセージ
の説明があるというので見てみたのですが、
このメッセージが英語では「Call was rejected by callee.」ということしか
わかりませんでした。何か解決のヒントはございませんでしょうか?
ご教示のほど、よろしくお願いいたします。なお、環境は次のとおりです。
--
Windows98S.E.
Office2000Developerフルインストール
(Office全アプリケーションの削除→再インストールをしても結果を同じでした)
(SR1をあてましたが結果は同じでした)
WSH2.0
VBScript5.0
--
もう一台のWindows98(not S.E.)マシンでは、上記と同じ環境で、
上記VBSによるWord起動に100%成功しているのですが…

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

今月号のWindows2000 Worldで、WMIのことが取り上げられていました。
この記事によると、WMIを利用したユーティリティがサードパーティから出されるそうです。
WSHのスクリプトも一つ載っていました。

また、この記事中で書かれていたのですが、BackOffice Worldという雑誌で
WSH+WMIを使った高度なシステム管理についての連載が始まっているそうです(7月号から)。



To: Lib30 さん

> こんなところにうちのページが紹介されていたとは。

メールで紹介するって言いませんでしたっけ?

> ちなみにDHTMLのページならば
> http://www.st.rim.or.jp/~makoto3/ MAKOTO3 AREA
> がかなり使えます。JavaScript、CSS、ASPなどのサンプルが1000個以上も紹介されていて、
> しかもリファレンスなども公開されています。かなりすごいです。

サンプル数が尋常ではないですね。
このページをやっている方は、プロなんでしょうか?
# あ、プロならこういう形で無償公開したりしないわけですね

でも、私はブラウザ上でスクリプトを動かないようにしているので、見に行っても
何も起こりません(^^;
やはり、Lib30さんのように、まとめてダウンロードできるというのはいいですね。

> ところで、VBScriptでパソコンにインストールされているフォント名を取得する方法を知りませんか?

何かいい方法ありますかねえ?

Const ssfFONTS = 20
Set Shell=WScript.CreateObject("Shell.Application")
Set oFolder=Shell.NameSpace(ssfFONTS)

For Each oFile In oFolder.Items
For I=0 To 1
s=s & oFolder.GetDetailsOf(oFile,I) & vbTab
Next
s=s & vbCrLf
Next

msgbox s

こんなのを考えてみましたが、Win2000ではフォント名は取得できませんでした。
Win98ではどうでしょう?



To: 三浦 さん

> クライアント側からサーバー側のexeファイルを実行したいのですが、以下のように
> サーバー側で実体化して実行するとエラーがでます。
>
> Set wsh = Server.CreateObject("WScript.Shell")
> wsh.Run "C:\update.exe", 1, True
>
> このやり方は間違えでしょうか。

あっていると思いますが、エラーの内容を教えていただかないことには何とも…。


To: mira さん

> ページの先頭に「IE4以上で、セキュリティを[低]にして実行して下さい」と
>  記述してます。(爆)

やはりそうするしかないんでしょうか(^^;
まあ、「イントラネットゾーン」というのが用意されているくらいですし、
こういう使い方が正しいのでしょうね。



To: TiMe さん

> 数字当てゲームが貴ページのダウンロードに掲載されていますよね。今回それを応用してみようと考えたわけです。

では、Lesson8で私が出した「宿題」をやってくださいね(笑)

> で、質問なのですが、背景色は変更ができるのでしょうか?

MsgBoxとかで表示されるダイアログのことでしょうか?
それなら、できません。
Windowsのスタイル設定に準拠した色になります。

> もうひとつ質問ですが、やる人にレベルを選ばせてあげるにはどうしたらよいのでしょうか。

そうですね。
テキストエディタでファイルを開いて編集してください、と書く(笑)
まじめな話、WSHでユーザーから情報を入力させる手段としては、MsgBoxかInputBoxくらいしか
(標準機能としては)ないのです。
ですから、InputBoxで難易度を数値で入力させ、その返り値によって難易度を変更する、という
くらいしかないでしょう。
もちろん外部のCOMコンポーネントを使えば可能です。うちのページのリンクからいろいろ
紹介してますので、参考にしてみてください。

それか、WSHをやめてHTAで書くという手もあります。
この手のスクリプトでは、むしろこちらの方が良いでしょう。
あれはActiveXも使っていないので、普通のHTMLにスクリプトを書くのとほぼ同じ方法で
いけます。


> それと、以前リンクをはってもいいですかとメールを出しましたが、分類はどこにいれたらいいでしょうか?
> あるのは「友達系」「MIDI関係」「検索関係」です。もしこのどれにも入りたくないというようでしたら「言語開発系」を作ります。

この中にはあまり適当なジャンルがなさそうですね。
言語開発系を希望したいと思います。
# もし私を友達と思われているなら、友達系でもいいですよ(^^;

リンク集を作るときは、「その他」というジャンルを作っておくと便利です(^^;

私のページへリンクしてくださる方には、こちらからもリンクを張り、相互リンクに
させていただいてますが、よろしいでしょうか?

TiMe さん (tsurugi@avis.ne.jp) 2000年 06月 30日 20時 45分 11秒
URL:http://www.avis.ne.jp/~tsurugi/

はじめましてTiMeというものです。WSHははじめたばかりであんまり理解していないので、教えていただきたいことがあります。
数字当てゲームが貴ページのダウンロードに掲載されていますよね。今回それを応用してみようと考えたわけです。
で、質問なのですが、背景色は変更ができるのでしょうか?
もうひとつ質問ですが、やる人にレベルを選ばせてあげるにはどうしたらよいのでしょうか。
大変、つまらないことかとは思いますが、どうか教えてください。
それと、以前リンクをはってもいいですかとメールを出しましたが、分類はどこにいれたらいいでしょうか?
あるのは「友達系」「MIDI関係」「検索関係」です。もしこのどれにも入りたくないというようでしたら「言語開発系」を作ります。

mira さん 2000年 06月 30日 10時 53分 15秒

> To: むたぐち さん
>このように、クライアント側のブラウザ上で、VBSを実行させてやるといいわけですが、
>ActiveXの実行が許可されている環境のみで動作が期待できます。
>こればっかりは、セキュリティ上の問題なので、ASPではどうしようもないと思います。
>私が知らないだけかもしれませんが…。
>イントラネット内でのASPを用いたWebアプリケーション(といっていいのか、わかりませんが)は、
>実際にはどのようにして運用されるものなんでしょうか。

mira%イントラしてます です。
ページの先頭に「IE4以上で、セキュリティを[低]にして実行して下さい」と
 記述してます。(爆)

三浦 さん (mura@mcsite.co.jp) 2000年 06月 30日 01時 33分 57秒

クライアント側からサーバー側のexeファイルを実行したいのですが、以下のように
サーバー側で実体化して実行するとエラーがでます。

Set wsh = Server.CreateObject("WScript.Shell")
wsh.Run "C:\update.exe", 1, True

このやり方は間違えでしょうか。
何かやり方はありませんか。
よろしくお願いします。

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

To: go さん

SMTPを使ってメールを送るスクリプトですね。
一応見てみたんですが、どの行でエラーがでているか教えてもらえませんか?
ファイルの入出力に関係ある部分というのはないと思うんですが…。

まさか、cmd.exeが、cscript.exeがない! というエラーを出しているか、
cscript.exeが、sendmail.vbsがない! というエラーを出している、ていうことはないですよね(^^;



To: TEN さん

>  #ところで,もしや?と思ったのですが,サーバ側でクラ
>   イアントからのアクセスログをとることは出来ますでし
>   ょうか?出来るなら,早速試したいと思っていますが。

ASPの話でしょうか?
IIS Log コンポーネントというのでできるのではないでしょうか。



To: moto さん

> やっぱりダメですか。
> 面倒くさいけどC++でやるしかありませんね。。

まあ、それでもいいですが、APIとか結構面倒なのですよね?
私は、コンポーネントを探して利用することをお勧めしますが…。



To: AKiOS さん

> いえ、WSHとは関係なくて、対Java ということだと思いますよ。

そうなんですか。C# Script Editionも作って欲しい…。

Lib30 さん (lib30@yo-mail.co.jp) 2000年 06月 30日 00時 31分 50秒
URL:http://www.ob.aitai.ne.jp/~kazoo/

To: 管理人むたぐち さん

初めて書き込みさせていただきます。

>DHTMLに関する良きページの紹介です。
>http://www.ob.aitai.ne.jp/~kazoo/ Write-Off!!

こんなところにうちのページが紹介されていたとは。お褒めいただきありがとうございます。
まだたいした内容はないし、HTAのページも工事中なので早いところ更新して内容をもっと充実させないといけませんね。
ちなみにDHTMLのページならば
http://www.st.rim.or.jp/~makoto3/ MAKOTO3 AREA
がかなり使えます。JavaScript、CSS、ASPなどのサンプルが1000個以上も紹介されていて、
しかもリファレンスなども公開されています。かなりすごいです。

ところで、VBScriptでパソコンにインストールされているフォント名を取得する方法を知りませんか?
もし知っている人がいれば返信レスをよろしくお願いします。

AKiOS さん 2000年 06月 29日 20時 54分 46秒

To: 管理人むたぐち さん

>> 米Microsoft社がプログラミング言語「Microsoft C#」(Cシャープ)
>> を発表したそうです。
>> # 1年ぐらい前だったと思うのですが、Javaに対抗するため、
>> # COOL(C++ Object Oriented Languageの略)というものを出すらしい、
>> # みたいなことを何かで読んだのを思い出しました。(^^;
>
>おお、これは興味深い話ですね。なんとなく、ActiveX Scripting Engineの一つになるような
>気がしますが、そうなると面白そうですね。
>やはり、WSHで使えてなんぼ、な話でしょうし。

いえ、WSHとは関係なくて、対Java ということだと思いますよ。

moto さん 2000年 06月 29日 13時 04分 31秒

管理人むたぐちさん
>残念ながら、RegWriteメソッドでは、バイナリ値のバイト配列による書き込み
>はサポートされていません。
>Long型で指定できる範囲だけです。
やっぱりダメですか。
面倒くさいけどC++でやるしかありませんね。。


TEN さん 2000年 06月 29日 10時 42分 57秒

To:管理人むたぐちさん

先日は,分かりやすい説明どうもありがとうございました。
レジストリの読み込み/書き込みの項目を見つけて早速トライ
したところ,うまく出来ました。レジストリの詳細まで操作
できるとは感心です。またHTAの存在も知り,もっと勉強
したいとも思っています。ありがとうございました。

 #ところで,もしや?と思ったのですが,サーバ側でクラ
  イアントからのアクセスログをとることは出来ますでし
  ょうか?出来るなら,早速試したいと思っていますが。

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

Visual Basicの雑誌で、WMIを使ったスクリプトが載ってました。
スレッドとプロセスはどう違うか、ということを独特の文体で書かれていて、結構
面白そうです。
でも、WSHを使って何か便利なスクリプトを作るというよりはむしろ、WSHを使って
COMとは何かを知る、というスタンスに近いので、この手の雑誌で取り上げられても、
インパクトとしてはいまいちな感じです。



To: 石村 さん

> ASPでレジストリの内容を参照する方法を教えてください
> できればVBSCRIPTでお願いします。

ASPの基本機能でクライアントのレジストリを取得することはできません。
# そんなことができたら怖いです。

> ASPファイルの中に下記を記載したのですが
> エラーになります
> (Activexコンポーネントはオブジェクトを作成できません"Wscript.Shell")

> vbsファイルを作成して実行するとエラーはおきません
> 原因を教えて下さい

このように、クライアント側のブラウザ上で、VBSを実行させてやるといいわけですが、
ActiveXの実行が許可されている環境のみで動作が期待できます。
こればっかりは、セキュリティ上の問題なので、ASPではどうしようもないと思います。
私が知らないだけかもしれませんが…。
イントラネット内でのASPを用いたWebアプリケーション(といっていいのか、わかりませんが)は、
実際にはどのようにして運用されるものなんでしょうか。




To: AKiOS さん

> エディタと標準のJava2 SDK(通称JDK1.2)で開発しました。
> いわゆるプログラムを一から記述するスクラッチですが、(^^;
> コンソールアプリの場合はこれで十分です。
> ビジュアル開発ツールはいろいろありますが、本家Sunはもちろんのこと
> Inprise(旧Borland)やIBMからもIDE(統合開発環境)が無償公開
> されていますので、開発ツールには困らないと思います。

ぜんぜん知りませんでした。いや、世界は広いですねえ。
いつまでもWSHとか言っている場合ではないですね。
JAVAもPerlも興味を惹かれますね。C++も無償なコンパイラがありますし、
別にWSHに固執する必要もない、か?

> 米Microsoft社がプログラミング言語「Microsoft C#」(Cシャープ)
> を発表したそうです。
> # 1年ぐらい前だったと思うのですが、Javaに対抗するため、
> # COOL(C++ Object Oriented Languageの略)というものを出すらしい、
> # みたいなことを何かで読んだのを思い出しました。(^^;

おお、これは興味深い話ですね。なんとなく、ActiveX Scripting Engineの一つになるような
気がしますが、そうなると面白そうですね。
やはり、WSHで使えてなんぼ、な話でしょうし。

そうなれば、WSHの新規ユーザーの獲得にもつながるでしょう。
私もC++の勉強をしないといけなくなるでしょうが(^^;



To: moto さん

> Hdata = objWSH.RegRead(レジストリ)
> Hdata(44) = CByte(&H02)
> Hdata(402) = CByte(&H02)
> objWSH.RegWrite レジストリ,Hdata
> ----------
> では、「型が一致しません」と出てしまいます。

残念ながら、RegWriteメソッドでは、バイナリ値のバイト配列による書き込みはサポート
されていません。
Long型で指定できる範囲だけです。
WMIを使えば可能なんですが、Win2000に限られますし…。

書き出したregファイルを、TextStreamで開いて、該当部分を置換するスクリプトを
書いて対処するしかないでしょうね。
あと、外部のCOMコンポーネントを使うとか。

# ScriptXでもできるのかな?
# ところでScriptXって、MS公認なんでしょうか。



To: go さん

> WSHの初心者で、次のURLのメールを出力するサンプルを作成し起動したのですが
> 『指定されたファイルが見つかりません』のエラーとなってしまいます。
> http://www.microsoft.com/JAPAN/support/kb/articles/J051/2/09.htm

このページにそのサンプルがあるんですよね?
ちょっと待ってください。後で見てみます。

ishimura さん (ishimura@adgator.co.jp) 2000年 06月 28日 22時 07分 06秒

何度もごめんなさい
ASPファイルの中に下記を記載したのですが
エラーになります
(Activexコンポーネントはオブジェクトを作成できません"Wscript.Shell")

<script language="vbscript">
sub GetReg()
set wscr=CreateObject("WScript.Shell")
rr=wscr.RegRead("HKEY_CURRENT_USER\Software\adgator\Email")
end sub
</script>

vbsファイルを作成して実行するとエラーはおきません
原因を教えて下さい

ishimura さん (ishimuar@adgator.co.jp) 2000年 06月 28日 22時 03分 48秒

<script language="vbscript">
sub GetReg()
set wscr=CreateObject("WScript.Shell")
' rr=wscr.RegRead("HKCR\Software\adgator\Email")
rr=wscr.RegRead("HKEY_CURRENT_USER\Software\adgator\Email")
end sub
</script>

go さん 2000年 06月 28日 20時 08分 46秒

はじめて質問させて頂きます。(NT4.0 Server+IE4)
WSHの初心者で、次のURLのメールを出力するサンプルを作成し起動したのですが
『指定されたファイルが見つかりません』のエラーとなってしまいます。
http://www.microsoft.com/JAPAN/support/kb/articles/J051/2/09.htm
ログを参照致しましたが同様な質問がありませんでしたので、教えて下さい。

moto さん 2000年 06月 28日 18時 07分 31秒

レジストリの書き換えが出来て喜んでいたのも束の間、
ピンポイントで変えたい設定の所だけ変更する事になりました。
(プリンタの設定をA4縦からA4横に変更など)
しかし、レジストリの値を書き出したら、その値はヘキサみたいなんです。
RegWriteでヘキサの値を書き込む事はできないのでしょうか。
文字列と数値しかダメ見たいな事を書いていたのですが、
もしかしたら、と思って書き込んでみました。
----------
Hdata = objWSH.RegRead(レジストリ)
Hdata(44) = CByte(&H02)
Hdata(402) = CByte(&H02)
objWSH.RegWrite レジストリ,Hdata
----------
では、「型が一致しません」と出てしまいます。

AKiOS さん 2000年 06月 28日 05時 18分 55秒

To: 管理人むたぐち さん

>Javaアプリケーションなんて、存在も知りませんでした(爆)
>過去記事検索スクリプト最新β版に同梱されていましたが、あれは何かツールを
>使って作成されたのでしょうか?
>実行環境自体は、Windows(IE?)に付属しているんですよね。

エディタと標準のJava2 SDK(通称JDK1.2)で開発しました。
いわゆるプログラムを一から記述するスクラッチですが、(^^;
コンソールアプリの場合はこれで十分です。
ビジュアル開発ツールはいろいろありますが、本家Sunはもちろんのこと
Inprise(旧Borland)やIBMからもIDE(統合開発環境)が無償公開
されていますので、開発ツールには困らないと思います。

それから、私も最近になって知ったのですが、IE4以降にはJDK1.1相当
の実行環境が付いているので、それを利用しています。

PS.
米Microsoft社がプログラミング言語「Microsoft C#」(Cシャープ)
を発表したそうです。
# 1年ぐらい前だったと思うのですが、Javaに対抗するため、
# COOL(C++ Object Oriented Languageの略)というものを出すらしい、
# みたいなことを何かで読んだのを思い出しました。(^^;

石村 さん (ishimura@adgater.co.jp) 2000年 06月 28日 00時 40分 28秒

ASPでレジストリの内容を参照する方法を教えてください
できればVBSCRIPTでお願いします。

例)HKEY_CURRENT_USER
SOFTWARE
ADGATOR
EMAIL

クライアントの
レジストリEMAILに書き込まれている値
を取得したいのです

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

それでははりきってレス書きいってみましょう。

To: AKiOS さん

> 確かにJavaアプレットはWebサーバーからダウンロードして、ブラウザ上
> で実行されるので、(デジタル署名がない場合)セキュリティ上問題の
> ある操作はすべて禁止されますが、Javaアプリケーションはブラウザとは
> まったく関係ないフツーのアプリケーションとして実行されますので、
> 通常の(SecurityManagerがセットされていない)場合は制限はありません。

Javaアプリケーションなんて、存在も知りませんでした(爆)
過去記事検索スクリプト最新β版に同梱されていましたが、あれは何かツールを
使って作成されたのでしょうか?
実行環境自体は、Windows(IE?)に付属しているんですよね。



To: TEN さん

> さて質問があるのですが,「ネットワーク」−「ユーザ情報」タブ
> 内にあるコンピュータ名を「TCP/IP」プロパティの「DNS
> 設定」タブの「ホスト(H)」にコピーするという流れを作りたいの
> ですが,どのように組めばいいのでしょうか。

まず、コンピュータ名は、レジストリの値を読み込めばOKでしょう。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerNameキーに
ComputerNameという文字列の値がありますが、これが該当するのかな?(Win2000)

コピー先は、
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parametersキー
Hostnameという文字列の値でしょうか。

レジストリの読み込み/書き込みについては、Lessonなどを参照してください。
ただ、このレジストリの内容を変更するだけでいいかどうかは私にはわかりません。

SendKeysで、キー入力をそっくり再現してしまうという手もあるでしょうね。
この方法は、時に強力な効果を生み出しますが、リスクも大きいです。とくに処理が複雑になると…。



To: Makoto さん

> たしかに ActiveXコンポーネントって言ってますね
> はじめて見聞きする名前です;
> 単に COMコンポーネント でいいんじゃないんでしょうか

なんだ、MSもよくわかっていないのか(笑)
英語版でもActiveX Componentって出るらしいです。

> こう言っておけば、全てあてはまる訳だから
> 細かく分けたいのであれば、OLE/COM Object Viewer の
> Grouped by Component Category でどのカテゴリーに属するかを
> 見る方法があります

なるほど、WshShellとかは、COMコンポーネントのオートメーションオブジェクトに
分類されるわけですね。



To: moto さん

> そして、objWSH.Run "regedit.exe /s xxx.reg"を見つけたので、
> 早速試してみました。いやーPCを壊すことなくプリンタの設定(A4縦->A4横など)
> を変更する事ができました(しかも楽に)。

良かったです。
あらかじめregファイルとして書き出しておき、スクリプト中でそのファイルを実行
させればいいわけですね。
ん? それだけなら、ショートカットで十分かも(^^;



To: abuku さん

> >システム管理をキーワードにしてまた流行りだすといいんですが。
> >また、どこかの雑誌(Windows Start除く(笑))で特集とかしないかなあ…。
>
>  Windows Startは駄目なんですか?

無意味にマニアックだから駄目です(笑)
# まあ、私が最初に手にした雑誌がこれだった(誌名にだまされた。どこがStartやねん)ので、
# Windowsに関しては相当マニアックになってしまいましたけど(^^;

>  いろいろな人間がいますからね。良いことをする人もいれば悪いことをする
> 人もいる。これはどうしようも無い事なので、防ぐ手立てを考えるのが先決と
> も言えますけどね。

一般論としてはそうなんですが、たとえばWMIという技術に関しては、
これを使って悪いことをする人が現れる以前に、良いことをする人すらほとんどいない、
という段階なのです。そのため、防ぐ手立てというものはまだほとんどの人が考えるに
至っていないはずです(たぶんですが)。

>  むたぐちさんもお忙しいみたいですね。メールでの返答の辛さは僕も重々承
> 知しています。どうかお体を壊さぬように・。

はい。十分注意いたします。もう寝ます(笑)
>
> >私は一番下の過去ログから、右クリック->対象をファイルに保存
> >で15個全部自分のPCに持ってきました。
>
>  あ、なるほど・・・。ありがとうございました♪

実は、手元にあるβ版では、記事のダウンロードも自動でやってくれます。
いろいろと応用の利きそうなテクニックが満載です。ご期待を。

# 私も何か提供しなきゃなあ…。テキストファイルビューア(HTA)は、個人的に使うには
# 問題ない完成度なんですが、とても一般公開する出来ではないです(^^;

abuku さん 2000年 06月 27日 18時 38分 45秒

motoさん、こんにちは。

>私は一番下の過去ログから、右クリック->対象をファイルに保存
>で15個全部自分のPCに持ってきました。

 あ、なるほど・・・。ありがとうございました♪

moto さん 2000年 06月 27日 16時 33分 57秒

abukuさん
>「過去記事」ってどこから取ってくればいいのでしょうか?
私は一番下の過去ログから、右クリック->対象をファイルに保存
で15個全部自分のPCに持ってきました。

abuku さん 2000年 06月 27日 13時 14分 36秒


 つけたしです。

>★掲示板の記事検索には、AKiOSさんご提供のWSH Lab. 掲示板 記事検索プログ
>ラムが便利です(IE5が必要です)。

 とありますが、これを利用する時の「過去記事」ってどこから取ってくればいい
のでしょうか?

 初歩的ですいません・・・(ゥ;)

abuku さん 2000年 06月 27日 13時 12分 06秒


 むたぐちさんこんにちは。


>ん?
>無効にしている人はほとんどいないのでは?
># だからILOVEYOUが蔓延した…
>
>IEのActiveXは、さすがに無効にしておかないと怖いですけど。

 あ、そうでした・・。自分がActiveXを使って処理をしようとしていたので、
ちょっと混同してしまいました。

>あらら(^^;
>WSHは、そういう意味でちょっと押しが弱いんでしょうかね。

 僕の力不足かもしれませんけどね(ゥ;)

>あれって、JAVAで動くようなものでしたっけ?
>JAVAでは、ローカルなファイルにはアクセスできないと思っていましたが…。

 ちょっと詳しい事は分からないんですけど、可能みたいです。

>でもこのスレッドでさえ、一度も"WSH"という単語が出てこないのは、やっぱ
り悲しいものがある(^^;

 そう言えばそうですね。単語という観点では出てないと思います。

>やっぱり、地道な布教活動しかないでしょう。
>WSHも登場してからずいぶん進化してきたように思いますし、Win2000の登場
をきっかけに、
>システム管理をキーワードにしてまた流行りだすといいんですが。
>また、どこかの雑誌(Windows Start除く(笑))で特集とかしないかなあ…。

 Windows Startは駄目なんですか?

># たしかにセキュリティ的には怖いものがあるんですけども。

 いろいろな人間がいますからね。良いことをする人もいれば悪いことをする
人もいる。これはどうしようも無い事なので、防ぐ手立てを考えるのが先決と
も言えますけどね。


 むたぐちさんもお忙しいみたいですね。メールでの返答の辛さは僕も重々承
知しています。どうかお体を壊さぬように・。


Makoto さん 2000年 06月 27日 04時 06分 52秒

むたぐちさんへレス

>>それでは、ActiveXコンポーネントというと正しいのでしょうか?
>>CreateObject関数で、実在しないProgIDを指定したときに表示される
>>エラーメッセージにこの用語が使われています。

たしかに ActiveXコンポーネントって言ってますね
はじめて見聞きする名前です;
単に COMコンポーネント でいいんじゃないんでしょうか
こう言っておけば、全てあてはまる訳だから
細かく分けたいのであれば、OLE/COM Object Viewer の
Grouped by Component Category でどのカテゴリーに属するかを
見る方法があります

TEN さん 2000年 06月 26日 12時 25分 01秒

初めて投稿します。
WSHの存在は前から知っていたのですが,機能のすごさには先週
あたりに,このHPを通してはじめて知りました。今までは色んな
プログラムを試したものの,今ひとつとっつきにくかったのですが,
WSHをはじめてからは,大変重宝しています。今後とも,参考に
していきたいので,よろしくお願いいたします。

さて質問があるのですが,「ネットワーク」−「ユーザ情報」タブ
内にあるコンピュータ名を「TCP/IP」プロパティの「DNS
設定」タブの「ホスト(H)」にコピーするという流れを作りたいの
ですが,どのように組めばいいのでしょうか。

ご多忙中恐縮ですが,ご教示方よろしくお願いいたします。

moto さん 2000年 06月 26日 11時 38分 58秒

To:管理人むたぐちさん

早速AKiOSさんの検索プログラムを使用して、regwriteで検索しました。
そして、objWSH.Run "regedit.exe /s xxx.reg"を見つけたので、
早速試してみました。いやーPCを壊すことなくプリンタの設定(A4縦->A4横など)
を変更する事ができました(しかも楽に)。
みなさんありがとうございました。m(__)m

moto さん 2000年 06月 26日 10時 27分 12秒

To:管理人むたぐちさん

msgbox Join(Hdata)でレジストリの値を見ることができました。
ありがとうございます。
Hex(Hdata(5))も見たいレジストリの場所がわかっている場合は便利ですね。
データの内容も見れたので、これからデータの変更を行いたいと思います。
PCが潰れない事を祈ってください。

AKiOS さん 2000年 06月 26日 04時 34分 38秒

To: 管理人むたぐち さん

>JAVAでは、ローカルなファイルにはアクセスできないと思っていましたが…。

できます(笑)。
確かにJavaアプレットはWebサーバーからダウンロードして、ブラウザ上
で実行されるので、(デジタル署名がない場合)セキュリティ上問題の
ある操作はすべて禁止されますが、Javaアプリケーションはブラウザとは
まったく関係ないフツーのアプリケーションとして実行されますので、
通常の(SecurityManagerがセットされていない)場合は制限はありません。

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

えっと、最近質問メールが私のところによく来るのですが、申し訳ないんですけど
これにはお答えしない方針で行かせてもらいます。

理由は、
・答えた内容が、質問者にしか読むことができない
・メールを書いている時間がない
・せっかく返信してもその後の音沙汰がないメールが多すぎる
・マナーがなっていないメールが多い(画像添付、日本語になっていない文章、
WSHと全然関係ない質問etc.etc...)

というものです。
まあ、私の個人的な話ばかりなんですけどね(^^;

掲示板への返答なら、データベースとしての価値が出てくるので、質問だけして
消えていく人々もあまり気にならないのですが、メールとなると、こういうことを
やられると本当にやる気が失せてしまいます。

どうしてもメールでないと聞けない話というのはあるでしょうから、それにはお答え
したいと思いますが、それ以外の質問は、掲示板でお願いします。

それから、これは以前にも書いたことですが、この掲示板で質問されたとき、何らかの
返答があった場合、できるだけその後の報告を(簡単でいいので)していただけるとありがたいです。
別に、うまくいきました、というだけでもかまわないので…。うまくいくかどうか、
回答者にも確信が持てないケースというのは多々あるのです。
もしうまくいかなかった場合は、どこが駄目だったかを具体的に書いていただけると、
回答者はさらなる対策が指示できますし、回答者も知らなかった新たな問題点を
浮かび上がらせることになるかもしれません。
よくわからない、という報告もありだと思います。それならもっとわかりやすく
書くように努力する、などの対策が立てられるので。

それと、現状では回答者というのが、ほとんど私一人という状況です。
これ、ちょっとつらいものがあるので、できれば、答えられる質問があれば、
どしどし回答していただけるとうれしいです。
別に、私を気遣う必要はないので…。

情報は、give & take でいきましょう。

今回はちょっと本音を書いてみました。
以前に書いたこととほとんど同じなんですけど(^^;

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

WSH Lab.掲示板記事検索スクリプトのテストも兼ねて…。
それにしてもこのスクリプトはずいぶん完成度が上がっています。
AKiOSさんからの正式公開の許可が出次第(今はβ版なのです)、みなさまにも
ご利用いただけるようになると思います。
便利なだけでなく、ソースを見るだけで勉強になるという優れものです。



To: motoさん

UCase(Hdata)
ではなく、
UBound(Hdata)
ですね。間違えました。

それと、Hex(Hdata(5))で、ヘキサの値になります。

Win2000なら、WMIを使えばもっと高度なレジストリへのアクセスが
可能となります。詳しくはこの検索スクリプトでWMIをキーワードにして
探してください。

ところで、ニュースグループを見ていると気になる記述がありました。
# 最近はあまり見るひまがなく、未読がたまっていますが…

Message-ID: <#F$tqTJ3$GA.198@cppssbbsa05>
Newsgroups: microsoft.public.scripting.wsh

>In WSH 2.0 you get a variant array for REG_BINARY. Each array element is a variant of subtype Byte.
>In WSH 1.0 it was a native byte array (Typename ==> "Byte()" ) which was sort of nasty to parse.

つまり、WSHのバージョンによって、返り値のデータ型が違うようです。

ついでに、
>You can only RegWrite a REG_BINARY that fits in a Long.

ということなので、Long型の範囲を超えるREG_BINARY の値を
そのまま書き込むことはできません。
(WMIならできます)

regedit.exeを併用する必要があります。詳しくは「オブジェクトの解説」にて。



管理人むたぐち さん (mutaguchi@roy.hi-ho.ne.jp) 2000年 06月 25日 17時 31分 51秒
URL:http://www.roy.hi-ho.ne.jp/mutaguchi/wsh/

To: もぐたん さん

> 私の周りにはWSHやHTAの認知度ってかなり低いです。

そうなんですよね…。

> 私は初めてWSHを人に教えてもらった時、かなり感動したんですが
> ねぇ、、なにしろ
> ・とっつきやすい言語で(VBScript)
> ・テキストファイルで動いて
> ・COMコンポーネントも使えて
> ・無料
> なんですから。

まあ、OSさえあれば遊べるってことですね(違)

> まぁお仕事で本格的に使うにはコードを隠蔽する事も
> 考えなきゃいけないんですが、HTAなんかも体験しちゃう

VBSはエンコードできますよ。
HTML/HTA/ASP/WSHなどに含まれる、VBS/JSのコードを読めなくします。
http://www.asia.microsoft.com/japan/developer/scripting/vbscript/download/vbsdown.htm

うちの「WSH技術情報」に使いかた等を書いてますので、参考にしてください。

でも、ASPはあまりコードを隠蔽する必要もないか…(もともとクライアントからは見えなくできるし)
WSHをログオンスクリプトに使うときも、NT/2000ならアクセス制限をかけておけばいいことですしね。

> とVBなんかでアプリケーション作ってるのが馬鹿馬鹿しく
> 思えてきます。

まだ、VBには追いつけない部分も多いのですが、そこを創意工夫でカバーするのが
楽しいですね。

> Windowsにプラットホームを限定してしまえば対抗馬のJA
> VAも、とっつきやすさではWSH(VBScript)には負けると思
> ってます。

プラットホーム限定、というのがやはりネックですね。
ただ、その性質上、マルチプラットホームたりえない技術なので、これは
どうしようもない宿命ですね。

> まぁ、セキュリティなんかの話はOUTLOOKとかの責任で
> WSHのせいではないと思ってますので、これからも布教
> 活動は続けていきたいです。

まあ、突き詰めるとOutlookも悪くないと思いますが、
Windows+WSH+Outlookだと悪くなってしまう、という感じでしょうか。
Windows自体が、生まれつき持っているセキュリティの脆弱性が、問題の
本質なのでしょうが…。

布教活動、がんばってください(笑)
# たしかに、宗教みたいなところはあるな(爆)



To: moto さん

> ----------
> Set objWSH = createObject("Wscript.Shell")
> Hdata = objWSH.RegRead("レジストリ")
> msgbox Hdata
> ----------
> ↑こいつ(msgbox)でエラーになっているみたいです。
> 値はおそらくヘキサだと思うのですが、ヘキサの値を表示する方法は
> ないでしょうか。WSHでなくVBの質問になってしまいましてすみません。

どこかに書いた(WshShellのオブジェクト解説か、Lesson応用編)と思うのですが、
ヘキサの値は、VBでいうところのbyte型で返されます。
byte型とは、各値が0〜255のInteger型になっている一次元の配列です。

ですから、この場合、
Join(Hdata)
などで、各値を結合したものが参照することができます。

特定の部分を抜き出すには、
Hdata(5)
などでいけます。

()内の最大値、つまりデータ長を調べるには
UCase(Hdata)
を使います。



To: Makoto さん

> あげあし取るみたいですが、WshShell や FileSystemObject は
> COMコンポーネントで ActiveX コントロールでは無いと思います。

ご指摘ありがとうございます。
やはり、用語の使い方を混乱していたようです。

> ActiveX コントロールは、自身でウインドウを持っているので(ウインドウレスもある)
> クライアント側にホストすべきウインドウが必要です

そうですね。これに近いことを、最近この掲示板で言ったような気がするなあ…(^^;

> よって WScript.CreateObject で成功するのは、ActiveX コントロールで
> ないと言えるでしょう

それでは、ActiveXコンポーネントというと正しいのでしょうか?
CreateObject関数で、実在しないProgIDを指定したときに表示される
エラーメッセージにこの用語が使われています。

Makoto さん 2000年 06月 24日 03時 23分 40秒

>>(おなじみWshShellやFileSystemObjectなどは、ActiveXコントロールです)
>>COMコンポーネントとか言い換えておけば、だませるかも知れません(^^;

あげあし取るみたいですが、WshShell や FileSystemObject は
COMコンポーネントで ActiveX コントロールでは無いと思います。
ActiveX コントロールは、自身でウインドウを持っているので(ウインドウレスもある)
クライアント側にホストすべきウインドウが必要です
よって WScript.CreateObject で成功するのは、ActiveX コントロールで
ないと言えるでしょう
(厳密に言えば、コントロールとしての必須インターフェイスを実装してるか
どうかなんですけど)

moto さん 2000年 06月 23日 17時 58分 48秒

>レジストリの値がヘキサかバイナリ(私にはどっちか区別がつきません)
>のために「型が一致しません」というエラーが出力されてしまいます。

すみません。読み込みでエラーになっているのではなく、
----------
Set objWSH = createObject("Wscript.Shell")
Hdata = objWSH.RegRead("レジストリ")
msgbox Hdata
----------
↑こいつ(msgbox)でエラーになっているみたいです。
値はおそらくヘキサだと思うのですが、ヘキサの値を表示する方法は
ないでしょうか。WSHでなくVBの質問になってしまいましてすみません。

moto さん 2000年 06月 23日 16時 56分 52秒

お久しぶりです。
WSHでレジストリの中身を読み込もうとしたのですが、
レジストリの値がヘキサかバイナリ(私にはどっちか区別がつきません)
のために「型が一致しません」というエラーが出力されてしまいます。
下記レジストリなのですが、このような場合どのようにして読み込み&書き込み
を行えばいいのですか。お教え下さい。

プリンタの設定(A4縦とか)に関してのレジストリのはず↓
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Print\Printers\
EPSON LP-8600FX(Gn-pr4)\Default DevMode

もぐたん さん (ogura_k@livedoor.com) 2000年 06月 23日 16時 33分 21秒

はじめまして〜。話に割り込む形になってしまうかも知れませんが

>WSHは、そういう意味でちょっと押しが弱いんでしょうかね。

そうかも知れませんね。システム開発の仕事をしているのですが、
私の周りにはWSHやHTAの認知度ってかなり低いです。

私は初めてWSHを人に教えてもらった時、かなり感動したんですが
ねぇ、、なにしろ
・とっつきやすい言語で(VBScript)
・テキストファイルで動いて
・COMコンポーネントも使えて
・無料
なんですから。
まぁお仕事で本格的に使うにはコードを隠蔽する事も
考えなきゃいけないんですが、HTAなんかも体験しちゃう
とVBなんかでアプリケーション作ってるのが馬鹿馬鹿しく
思えてきます。
Windowsにプラットホームを限定してしまえば対抗馬のJA
VAも、とっつきやすさではWSH(VBScript)には負けると思
ってます。

まぁ、セキュリティなんかの話はOUTLOOKとかの責任で
WSHのせいではないと思ってますので、これからも布教
活動は続けていきたいです。


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

To: abuku さん

>  そうなんですよね・・僕は画期的な技術だと思うのですが、無効にしている人の方が多
> いみたいです。

ん?
無効にしている人はほとんどいないのでは?
# だからILOVEYOUが蔓延した…

IEのActiveXは、さすがに無効にしておかないと怖いですけど。

>  ああ・・・WSHの可能性がどんどん闇に葬られていく気がしますね。僕が前にむたぐち
> さんに教えていただいて作ったシステムは、WSHを導入していないと動かない、Windowsで
> しか動かないという理由で知らず知らずの内にJAVAで作り変えられていました。初めから
> JAVAで作れば良かったのに・・とは思いますけどね・・。

あらら(^^;
WSHは、そういう意味でちょっと押しが弱いんでしょうかね。

あれって、JAVAで動くようなものでしたっけ?
JAVAでは、ローカルなファイルにはアクセスできないと思っていましたが…。

> ですよね・・・むたぐちさんの心中お察し致します。

あのスレッドは、シェルが拡張子だけでファイルを判断し、誰にでも実行できてしまうのが
いかん、そもそもWindowsというOSにはセキュリティの概念がない…とかいう話に展開してます。
まあ、私もおおむね同意見です。

VBSがいかんといえば、BATだって同じことですしね。

でもこのスレッドでさえ、一度も"WSH"という単語が出てこないのは、やっぱり悲しいものがある(^^;

>  良いものを作っても結局汎用性や、セキュリティの面から否定されては元も子も無いで
> すよね。何とか巻き返しの打開策があれば良いのですが・・・。

やっぱり、地道な布教活動しかないでしょう。
WSHも登場してからずいぶん進化してきたように思いますし、Win2000の登場をきっかけに、
システム管理をキーワードにしてまた流行りだすといいんですが。
また、どこかの雑誌(Windows Start除く(笑))で特集とかしないかなあ…。

# たしかにセキュリティ的には怖いものがあるんですけども。

abuku さん (abuku521@anet.ne.jp) 2000年 06月 20日 11時 49分 48秒
URL:http://www.geocities.co.jp/HeartLand-Gaien/6716/

 お返事が遅れました・・すみません。

>じゃあ、WSHは使えませんね(笑)
>WSHは、ActiveXの申し子のようなものですからね。
>(おなじみWshShellやFileSystemObjectなどは、ActiveXコントロールです)
>COMコンポーネントとか言い換えておけば、だませるかも知れません(^^;

 そうなんですよね・・僕は画期的な技術だと思うのですが、無効にしている人の方が多
いみたいです。

>たしかに、WSHに対する風当たりが強くなっているのを感じます。ILOVEYOUのせいで!
>
>microsoft.public.scripting.wshではあいかわらず、WSHを使えなくする方法についての
>質問が絶えないし、fj.comp.miscでもWSHはWindowsのセキュリティホールだとする説が
>流れています。

 ああ・・・WSHの可能性がどんどん闇に葬られていく気がしますね。僕が前にむたぐち
さんに教えていただいて作ったシステムは、WSHを導入していないと動かない、Windowsで
しか動かないという理由で知らず知らずの内にJAVAで作り変えられていました。初めから
JAVAで作れば良かったのに・・とは思いますけどね・・。
 僕がWSHと巡り会う事ができたのがせめてもの救いです。

>#このスレッドに参加したいのですが、時間もないし、やはりWSHには思い入れがあるの
>#で、私は議論には参加できないでしょう。冷静になれないと思うので。

 ですよね・・・むたぐちさんの心中お察し致します。

>このままいくと、WSHがOSに標準添付されない、少なくともデフォルトではインストール
>されなくなるという事態が惹起しそうです。
>
>まあ、仕方のないこととはいえ、これでますますマイナーな存在になっていくのでしょ
>うか。

 良いものを作っても結局汎用性や、セキュリティの面から否定されては元も子も無いで
すよね。何とか巻き返しの打開策があれば良いのですが・・・。


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

DHTMLに関する良きページの紹介です。
http://www.ob.aitai.ne.jp/~kazoo/ Write-Off!!

ダイナミックに動くコンテンツのサンプルは必見です。
地味になりがちなHTAを、派手にデコレーションするのにも役立つと思いますよ。
# サンプルを一括ダウンロードできるという親切設計です。

HTAのTipsも準備中らしいです。
でも、メインは車のページだそうです(^^;




To: 初心者 さん

> Windows2000上でのEXCELについてはなんとかできました。ありがとうございました。

えっと、例のコードで問題なく動作したと言うことでしょうか?
せっかくなので、動作報告もお願いしますね。

> 今回トライしているのは、WSHを利用し、開発するソフトのマクロ言語のように利用できるかどうかです。この点についてもし意見があればお願いします。(せっかくこれだけの機能があるのに利用しないてはないと思うのは私だけか?)

ActiveXDLL(というか、オートメーションをサポートしたCOMインターフェースというか…
いまだに正確な言葉がわかっていないのですけど(^^;)を作成し、ソフトの機能を
スクリプト(ActiveXScripting)からも利用できるようにする、というのが基本になると思います。
(これで、WSHなどから、オートメーションを介してそのソフトの機能を操れるようにできますね)
無論(多分?)、COMの知識が要求されます。

その上で、ソフト側に、スクリプトを実行する環境(スクリプトホスト)というのを追加すれば
いいわけです。
http://www.asia.microsoft.com/Japan/Developer/Scripting/default.htmの、
「スクリプトコントロール」をチェックしてみてください。
たぶん、これが該当すると思うのですが…。
# なんかライセンスとかがいるみたいだが…

また、実際に、WSHをマクロとして採用しているエディタが存在します。
http://fukuoka.cool.ne.jp/yfuji/Fxedit.html FxEditor
http://www.sapien.com/primalscript.htm PrimalScript

何か、全然的外れなことを言っているかも知れませんが、その線で攻めてみてください。




To: よっさん

> > 直メールである比例を、お許し願います。
> 「比例」→「非礼」 m(__)m あ〜恥ずかしい。(^^;

(笑)
とりあえずつっこむのはやめておきました(^^;

> 私には糸口も見つかりません。
> もちっと、勉強して出直してきます。

というわけで、この件については引き続き情報求む、ということで。

そういえば、メールでいただいたスクリプトのことですが、ご要望の添削するのを
忘れていました。

たしかに、バッチファイルを動的に作成するという点で面白いスクリプトだと思うんですが、
Win98には、Scanregというよくできたレジストリバックアップツールがついていますし、
Win98ではあまり必要性がないかも、と思いました。
Win95では活躍しそうですね。

…具体的な添削についてはご勘弁をm(__)m


よっさん さん (yossan@lily.yyy.or.jp) 2000年 06月 19日 20時 17分 29秒

こんにちは、よっさんです。
またまた、すみません。 m(__)m

まず、メールの二行目の訂正です。
> 直メールである比例を、お許し願います。
「比例」→「非礼」 m(__)m あ〜恥ずかしい。(^^;

>> 隠しファイルは処理できませんです。
> 私のところではできますが…。

う〜、もう一度確認したら出来ますね。
際して、「寝ぼけていた」に、一票入れるしか無いです。
お騒がせして、申し訳無い。m(__)m

> で、対策なんですが、これは実に難しい(^^;

私には糸口も見つかりません。
もちっと、勉強して出直してきます。

どうも有難う御座いました。
以上、お詫びと報告でした。

ではでは。


初心者 さん 2000年 06月 19日 09時 56分 01秒

早速の回答、ありがとうございます。


>GetObject関数が使えるようです。
>詳しくは過去に投稿された記事を参照してください。
>(↓過去記事リスト13の42番目と49番目の記事という意味です)
>
>13-49 管理人むたぐち さん 2000/05/02 23:05
>13-42 ぽう さん 2000/05/01 23:28
>
>ぽうさんの記事によると、うまくいく場合と、うまくいかない場合があるようですね。

Windows2000上でのEXCELについてはなんとかできました。ありがとうございました。
今回トライしているのは、WSHを利用し、開発するソフトのマクロ言語のように利用できるかどうかです。この点についてもし意見があればお願いします。(せっかくこれだけの機能があるのに利用しないてはないと思うのは私だけか?)

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

HTMLの印刷に関して、こんなページがあります。
http://www.asia.microsoft.com/japan/developer/workshop/author/script/dhtmlprint.asp



To: よっさん

# ネットニュース→メールで質問されたのですが、掲示板での返信OKということなので
# さらに場所を移して続けます。

「送る」に、batファイルを登録して、選択したファイルの一覧をテキストファイルに
出力しようとしたが、指定するファイルが多すぎる(4〜6)とオプションの文字列長制限に
ひっかかって、実行できない、というのが今回の件です。
そこで、私が次のようなスクリプトを投稿しました。

Set Fs = WScript.CreateObject("Scripting.FileSystemObject")
Set ts=Fs.CreateTextFile("C:\dirlist.txt")
For Each sArgument In WScript.Arguments
ts.WriteLine sArgument
Next
ts.Close

このスクリプトだと、batよりは多くのファイルを指定できますが、この掲示板でも
話題になったように、WSHにも引数の文字列制限というものがあります。
それがなんとかならないか、という話です。

> ですが、隠しファイルは処理できませんです。
> 出来るように、もう少し教えてください。

え?
私のところではできますが…。
(Win98/2000ともに)
もちろん、隠しファイルを表示する設定にしていますが。

> 先日のスクリプトの実行結果では、浅い階層なら23個前後いけます。
> もう少し数が増えると、良いのですが、Win9xの仕様なので諦めてますけど、
> 工夫できないものでしょうか?
> (選択を複数回に分ければ済みますし、諦めモードですが。)

# これは、Win2000でも同じなんです。

Windowsの仕様かどうかは、実は微妙なところです。
なぜかというと、batファイル、VBSファイルで制限長が異なっていますし、
exeファイルには、もっとたくさんのファイルを指定できるものもあります。
おそらく、アプリによって違うのでしょう。

で、対策なんですが、これは実に難しい(^^;
ひとつの案として、エクスプローラの関連付けを使う方法があります。
レジストリの
HKCR\*
は、すべての拡張子にマッチするファイルタイプが定義されていますが、
ここに、
wscript.exe filename.vbs "%1"
というアクションを追加しておくと、複数選択時の右クリックメニューから、この
スクリプトを走らせることができます。

この場合は、ファイル数の制限はなくなります。

ただし、ひとつのファイルに対して、1回ずつスクリプトが動くので、かなり
ロスが大きくなります。
また、ひとつの出力ファイルに同時にアクセスすることになるので、共有エラーが
発生すると思います。# その対策が必要
さらに、この方法だと、LFNではなく、8+3形式で出力されてしまいます。

以上を総括すると、「あまり使えない方法」であることは否めません。
何かほかのいい方法があればよいのですが…。

ところで、Win2000なら、検索ダイアログをオブジェクトとして扱えるような
ので、いずれつついてみたいと思っています。

> 検索画面のメニューには複数選択すると送るメニューは出ませんでした。

Windows2000ならできるんですね、これが。



To: SHIN さん

> 投げる分にはかまわないのですが、リターンキーのときは上記コードのチェック部
> を通っていないような感じでASP側でエラーになってしまいます。
>
> 教えていただきたいことは、リターンキーが押されたときでもチェックできるようにするにはどうすればいいのか?ということです。

Button_OnClickではなく、Form_Submitイベントを使うといいと思います。
Submitイベントは、Submitを実行しようとしたときに発生します。
Submitイベントの中で、
window.event.returnValue=False
とすると、Submitを中断することができます。

# VBSは、イベントの戻り値を引数でしか取得できないので、引数がないイベントでは
# returnValueプロパティを使うようにします。
# J(ava)Scriptでは、returnステートメントを使えばOK。
# 詳しくは、MSDNライブラリのDHTMLの項目にある、「イベントモデルの理解」参照。

ところで、VBScript(クライアント側スクリプト)が動作しない環境というのは想定しなくてもいいのでしょうか?
(私のように、スクリプトの実行を許可していない人もいるでしょうし)

もし、VBSが動かない環境からSubmitされた場合は、空白のデータが送られてくる
可能性もあるわけです。
その可能性を考慮して、ASPでの処理も付け加えたほうがいいと思います。

SHIN さん 2000年 06月 18日 14時 30分 10秒

以前、このページでお世話になったものですがまた困ったことが発生し
悩んでいます。
内容は、
HTMLのスクリプトをVBSで記述しているのですがその中のフォームから
ASPへデータを投げるところでデータのチェックをして投げています。
コードは以下のコードです。(必要部のみ)

<script language="vbscript">
'入力データのチェック
sub btn_onclick()
if document.hantei.henko.value =""then
msg1 = "変更Noが未入力です"
err = 1
end if
if err = 1 then
msgbox msg1
else
hantei.submit
end if
というコードでフォームの送信というのをクリックするとチェックしてASPに
データを投げています。
で、困っているのは内容入力中(INPUT TYPE=TEXT)にリターンキーを押すとデータを投げてしまいます。
投げる分にはかまわないのですが、リターンキーのときは上記コードのチェック部
を通っていないような感じでASP側でエラーになってしまいます。

教えていただきたいことは、リターンキーが押されたときでもチェックできるようにするにはどうすればいいのか?ということです。

どうかよろしくお願いします。

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

AKiOSさんの掲示板検索スクリプトに、cscript.exeを使った面白いコードが
あったので、紹介します。

以下は、AkiOSさんからのメールの引用です。(転載許可とってます)

>> # ダウンロードに失敗したときbeepが鳴りますが、あれどうやるんですか?
>
>ASCIIコードの 7 にはベルが定義されているので、VBS だと
> WScript.echo chr(7)
>とかすればできると思います。
>通常のバッチファイルや DOSプロンプトからだと
> echo ^G
>ですね(^G は Ctrlキーを押しながら G を押す)。

WSHで音を出す方法があったんですね(^^;

ところで、HTAでは、一つのプロシージャが終了するまでは、HTMLの表示が
変化しない、という仕様があります。
短い処理ならば別に問題ないのですが、実行に時間がかかる処理では、
画面が固まったようになってしまうので、あまり良くありません。
VBなら、DoEvents関数で、処理中の画面の更新が可能になりますが、
VBSでは使えません。

そこで、setIntervalメソッドで代用する方法というのを考えました。
(これって、結構一般的な方法のようだが)
この方法だと、一つの処理の実行中に、他のイベントを実行することも可能に
なります。

↓は、AKiOSさんへのメールに書いた内容の転載です。(私自身に転載許可を取ってます)


Dim timeout,count

Sub command1_Onclick()
timeout=window.setinterval ("proc()",1)
'↑この行は、プロシージャの最後に書く(setintervalの後に書いたコード
'は、同期に実行されるので)
End Sub

Sub command2_OnClick()
'キャンセル処理
window.clearInterval(timeout)
End Sub

Sub proc()
'処理の一つをここに書きます。
'カウンタをインクリメントし、カウンタが所定の値になったときは、つぎの
'ようにして、setintervalをclearIntervalで無効にします。
count=count+1
If count=10 Then
window.clearInterval(timeout)
End If
End Sub



To: AKiOS さん

> >で、さらにお願いなんですが、記事番号からの検索というのもできると便利だと思うので、
> >話の種に(^^;実装してみてはいただけないでしょうか。
>
> かまいませんけど、どういうふうに検索しますか?
> たとえば、
> 1-23 12-34
> のように空白で区切って、複数入力できるようにしましょうか?

そうですね。複数の記事番号を同時に探したいということはあまりないでしょうから、
一つだけ探せればいいと思います。

> >私もその方法を使っていますが、何か問題があるのでしょうか?
>
> いえ、それを聞いて安心しました。(^^;

もしかして、私の知らない問題があるのかも?
Version 5.0=WSH1.0
Version 5.1=WSH2.0
という対応であっていると思いますが…。



To: 4bit さん

> WSHのサンプルに、ファイルの情報を、EXCELで、表示するってのがありますが、

ん? そんなサンプル、ありましたっけ?
WScriptオブジェクトの各プロパティを出力する、excel.vbsというファイルはありますが。

# ADSIを使った、addusers.vbsなんてのもあったんですね。

> ファイルのフルパスまでは、でませんでした。
> そこで、
> 指定したファイル名と、フルパスが、EXCELで、表示出きるようなWSHってできないですか?
> おねがいします。

ちょっと、質問の意味がわからないのですが、ファイル名からフルパスを取得する、
ということでしたら、FileSystemObjectのGetAbsolutePathName メソッドが使えるのでは
ないかと思います。



To: 初心者 さん

> つい最近WSHを知り、その機能に驚いています。それで質問ですが、通常CreateObjectを実行することでそのオブジェクトを操作できますが、既に起動しているオブジェクトに対して操作するようなことはWSHで可能なのでしょうか?

GetObject関数が使えるようです。
詳しくは過去に投稿された記事を参照してください。
(↓過去記事リスト13の42番目と49番目の記事という意味です)

13-49 管理人むたぐち さん 2000/05/02 23:05
13-42 ぽう さん 2000/05/01 23:28

ぽうさんの記事によると、うまくいく場合と、うまくいかない場合があるようですね。

初心者 さん 2000年 06月 17日 00時 13分 32秒

初めて投稿します。
つい最近WSHを知り、その機能に驚いています。それで質問ですが、通常CreateObjectを実行することでそのオブジェクトを操作できますが、既に起動しているオブジェクトに対して操作するようなことはWSHで可能なのでしょうか?
たとえばEXCELなどで現在編集しているシート上のデータをグラフ化するような
(この例ではEXCELのVBAを利用すればもちろんできますが、WSHでやってみたいのです)宜しくお願いします。

4bit さん (chojin@p1.coralnet.or.jp) 2000年 06月 16日 10時 06分 06秒

あったらごめんなさい。
WSHのサンプルに、ファイルの情報を、EXCELで、表示するってのがありますが、
ファイルのフルパスまでは、でませんでした。
そこで、
指定したファイル名と、フルパスが、EXCELで、表示出きるようなWSHってできないですか?
おねがいします。

AKiOS さん 2000年 06月 15日 02時 10分 37秒

To: 管理人むたぐち さん

>で、さらにお願いなんですが、記事番号からの検索というのもできると便利だと思うので、
>話の種に(^^;実装してみてはいただけないでしょうか。

かまいませんけど、どういうふうに検索しますか?
たとえば、
1-23 12-34
のように空白で区切って、複数入力できるようにしましょうか?

>> ところで、WSH 2.0 の新機能を使いたいので 2.0 以降かどうかのチェックを
>> したいのですが、どうすればいいのでしょう?
>> 今はとりあえず WScript.version が 5.1 以降ならOKとしていますが…。
>
>私もその方法を使っていますが、何か問題があるのでしょうか?

いえ、それを聞いて安心しました。(^^;

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

To: abuku さん

>  あれから自分でもいろいろ調査してみたのですが、むたぐちさんのおっしゃるとおり、ActiveXを使えば
> できない事もないようです。が、一般的にActiveXの評判があまり芳しくなく、今回作成しようとしたもの
> を実際使うと思われるユーザに聞いたところ、ActiveXは×といわれました。

じゃあ、WSHは使えませんね(笑)
WSHは、ActiveXの申し子のようなものですからね。
(おなじみWshShellやFileSystemObjectなどは、ActiveXコントロールです)
COMコンポーネントとか言い換えておけば、だませるかも知れません(^^;

たしかに、WSHに対する風当たりが強くなっているのを感じます。ILOVEYOUのせいで!

microsoft.public.scripting.wshではあいかわらず、WSHを使えなくする方法についての
質問が絶えないし、fj.comp.miscでもWSHはWindowsのセキュリティホールだとする説が
流れています。
# このスレッドに参加したいのですが、時間もないし、やはりWSHには思い入れがあるので、
# 私は議論には参加できないでしょう。冷静になれないと思うので。

MS側も、最近Outlookの対応モジュールを出したそうで、スクリプトからのアドレス帳のアクセスに
警告が出るようになったそうです。

このままいくと、WSHがOSに標準添付されない、少なくともデフォルトではインストールされなくなる
という事態が惹起しそうです。

まあ、仕方のないこととはいえ、これでますますマイナーな存在になっていくのでしょうか。




To: ymd さん

> ブラウザの文章や画像などを自動的に印刷してくれることを作りたいのですが、
> ブラウザでファイルを開くことまでは出来たのですが、印刷までは出来ませんでした。
> 印刷方法があればご教授いただけませんでしょうか?

Const OLECMDID_PRINT = 6
Const OLECMDEXECOPT_DODEFAULT = 0

IE.ExecWB OLECMDID_PRINT,OLECMDEXECOPT_DODEFAULT

のようなかんじでしょうか。# ちゃんと動くかわかりませんが…。
IEのオブジェクトを利用して、ページ表示させる方法については、ログを参考にされたし。

> URLの所に間違えて書いてしまいました。
> 掲示板を汚してすみませんでした。

いえ、これはこれで結構いいアイデアだと思いました。




To: 西 さん

> さて、あのランチャーの続きなんですが、ボタンに絵を貼り付けることができるんでしょうか。教えてください。

# 補足しておきますと、私が"SiteWindows"の掲示板にお邪魔して、WSHの質問に勝手に回答してきたのです(^^;

ボタンに絵を貼り付けるには、<input type="button">ではなく、<button></button>を使います。
button要素は、ブロックエレメントなので、内部にタグを記述できます。(SELECT、BUTTON、INPUT、A除く)
この場合は、<button><img src="hoge.png"></button>のようにするといいでしょう。
というか、私が以前作成した、「インターネットショートカット作成ウィザード」というHTAで
使っているので、参照してみてください。(「ダウンロード」のページから入手できます)




To: どらっち さん

> あるフォルダ(C:¥work)にある5日以前に作ったファイルを、別の
> フォルダ(C:¥back)へ毎週金曜日の午後7時にバックアップ(コピー)
> するようなスクリプトはどのようになりますか?

えっと、とりあえずヘルプはお読みになられたのでしょうか?

簡単に手順を説明しますと、

For Each...NextでFilesコレクションのアイテム(Fileオブジェクト)を順に検索
各Fileオブジェクトに対して、DateCreated プロパティを確認
DateDiff関数で今日(Now)との日付間隔をチェック
もし、5日より前なら、copyメソッドでコピー

となります。

このスクリプトを、タスクスケジューラに登録して、毎週金曜日の午後7時に実行されるように
しておけばよいでしょう。

# 古いファイルは、スクリプトの実行のたびに上書きバックアップ
# されてしまうので、すでにバックアップしたファイルはバックアップしない、という処理を
# 付け加える必要があるかもしれません。


Return