ひっし さん 2001年 11月 13日 14時 53分 03秒

To: むたぐちさん

返事が遅れて申し訳ありません。実は、仕事でミスをしてしまい
後始末でもう大変でした(^^;。あっ、サンプルをありがとう
ございます。とても参考になりました。わざわざ内容をややこ
しくしていた自分が恥ずかしいです(^^)。
MsgBoxの文字制限なのですが、いろいろ調べるとやはり制限が
あるそうで、1 バイト文字で約 1,024 文字だそうです。
レスを書いてくださった、土屋さんありがとうございました。

SIGNAL9 さん 2001年 11月 13日 11時 50分 16秒

>むたぐちさん
>ウィンドウキャプチャもできると、結構応用が利いて面白いと思います。

実は、キャプチャにちょっと手をつけてみたんですが、頓挫して
います。

(1)「デスクトップ」が無い場合がある。
 例えばASPやWSHを画面対話件無しのサービスから動かした場合。
 →これはエラーにするしかない。あんまり状況依存のコードは入れ
  たくないと思いますが…。

 デスクトップはまあいいとして、問題は特定ウィンドウのキャプ
 チャなんです。

(2)スクリプトから動いた場合、人間が介在しないので、「現在のア
 クティブウィンドウ」などの概念が難しい

 端的に言えば、
 ・スクリプトから見て「キャプチャしたいウィンドウ」をどう指定
  させるか。
 という問題です。

一般的なキャプチャソフトでは、人間が目で見て「このウィンド
ウ」をマウスで指定(し、Windowをアクティブにして最前面に持
ってくる)することができます。これが前提だと、あとは簡単で、
GetForegroundWindowとか、FindWindowでクラス名で引っ張って
きてビットマップにコピるだけですんじゃうんですが、なにがど
う表示されてるのか調べて…と思うと、ちょっとスクリプトから
やれる話とも思えなくなってきました。

目的のウィンドウがタスクトレイに入っていたり、アイコン化され
ている場合も考慮しないといけないでしょうし、これはけっこうやっ
かいなような気がしてきました。
現在のDoodleでは設計上マウスで指定させるわけにもいかないし…。

何かよいアイディア・参考資料があればお教えください。

初心者 さん 2001年 11月 13日 11時 34分 32秒

To: 土屋 さん

>こういうのは参考になりますでしょうか?

>'スクリプトのあるフォルダを取得して、ログファイルのフルパスを指定します。
>Set objFS = CreateObject("Scripting.FileSystemObject")
>Set objFile = objFS.GetFolder(objFS.GetParentFolderName(WScript.ScriptFullName))
>strLogPath = objFile.ShortPath & "\Log.txt"

ありがとうございます。取り合えずログが残るという意味で大変参考になりました。
ただやはりファイル落としだと、"Log.txt"のファイルが存在していると更新チェックが
必要になりますね。

そこで筑集眺餅さんの例を参照させて頂いたのですが、
'-------------------------------------------
sIP="127.0.0.1"
Set oShell=CreateObject("WScript.Shell")
Set oExec=oShell.Exec("ping -n 1 -w 1000 " & sIP)
Do While oExec.Status=WshRunning ' ping の実行が終わるまでループ
WScript.Sleep 50
Loop
bConnected=(InStr(oExec.StdOut.ReadAll, "Reply from")>0)
' 出力中に "Reply from" ってのがあれば、bConnected=True になります。
'------------------------------
ここで最後に
WScript.Echo oExec.StdOut.ReadAll
のような記述で標準出力の内容をそのままコマンドライン実行ウィンドウに表示できれば
ベストなのですが、これは虫が良すぎますよね。

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

またテロなのか…?



To: SIGNAL9 さん

> キャプチャの方は全画面ならたいして難しくなさそうなんで考えてみます。
> 印刷・スキャナは、どうだろう…そこまでやるとまたぞろ「スイス・アーミー」
> 状態になりそうな(^^;)

楽しみですね。
ウィンドウキャプチャもできると、結構応用が利いて面白いと思います。
タイトルバーとかメニューバーとかをはずすオプションなんかがあったら最高です。

印刷・スキャナは確かに手を出すと深みにはまるかも。
だいたい、文字の印刷すらまともな方法では無理なのが現状だし、
その手のコントロールは独立して開発すべきものかもしれません。



To: 筑集眺餅 さん

> >set objf = objfs.createtextfile("test.txt",true)
>
> の "text.txt" にはパス指定がないですが、どこのパスにできるんでしょね?

WSHから実行する場合、普通はそのスクリプトが存在するフォルダに生成します。
ただし、作業フォルダを指定していると、作業フォルダに生成します。



To: 土屋 さん

いつもお世話になります。

> > WSHの知名度を広め、情報不足を補うという趣旨で始めたこのページも、そろそろ
> > その役目を終えようとしているのかもしれません。
>
> いや、まだまだこれからですよ。
> 知名度はウイルスによってもたらされた部分がずい分あって、
> 真の姿はまだまだ広まってません。
> 世界制覇のためには、まだまだ苦難の道が・・・。(あんまり発展させると危なくなってくるので今回はこの辺で・・・)

.NET時代には、どういう形で残るのか、それどころか淘汰されるかもしれないという
わりと先行き不透明なところもありますしね。
まだまだネタは尽きないということか。問題は、そのネタに私がどこまで追従でき、
どこまで情熱を傾けつづけることができるか、ですね。

> WSHを扱うサイトも増えてきましたが、どれも基本的なことが多く、
> WSHの醍醐味が出てくるオートメーション操作など、まだまだ広めなければならないことがたくさんあると思います。

それは私も感じるところです。
OS付属のコンポーネントだけでも、まだまだ未開拓なものがいっぱいありそうですが、
あまり手をつけている人がいないのが現状ですね。

> それと、WSHではできないこと(または他の方法を探した方が無難なこと)についても、
> まだまだ布教活動が必要では。

そういえばこのページには、できないことに関する情報があまりないですね。
できないだろ、と言われたら、意地でもやり方を探してしまう性分なもんで(^^;



To: 土屋 さん

> タスクトレイ関係は、Shell_NotifyIconっていうAPIの世界ですよね。
> これはやはりWSHの範疇ではないでしょう。

というわけで、DynaCallが使えんかなあ、と思ったんですが、
このAPIはNOTIFYICONDATAという構造体を取るんで無理っぽいです…。
VBとかDelphiでCOM化して呼び出してやるのが無難でしょう。



To: 土屋 さん

> たしかに過去にSQL Serverの話は出ては来ていますが、
> ここのメインはやはりWSH(ということでいいですか?管理人さん)だと思うので、
> SQL Serverの方でお聞きになった方が早いのでは、と個人的には思います。

WSHから呼び出すという話だったら、アリだと思うんですが、
VBからだとちょっと外れ気味かもしれません。
もしおわかりの方がいらっしゃったら、回答のほうよろしくお願いします。
私にはわからないもので。

土屋さんにばっかり返信書いてる形になってしまった。



To: 高橋 さん

> こんばんは、高橋@半年振りくらいでしょうか? です。

お久しぶりです。

> おお〜、コレいいですね!
> 早速入手してしまいました。

いいでしょ?
ずいぶんこなれたヘルプになったもんだなあ、と。

> 私は仕事でかなりWSHのお世話になっています。
> ドキュメントからスケルトンコードをおこしたり、テストデータを作ったり&消したり、diffをとったり。逆にソースコードからドキュメントをおこしたり…
> 手作業でやっていたら、それこそ日が暮れてしまいますね。(笑)
> あとは、配布が簡単なところでしょうか。

WSHの良いところは、自分的にもう語り尽くした感があるので、ここでは省略します(^^;
でも実務で使っている方のご意見は、やっぱり説得力ありますね。

高橋 さん 2001年 11月 13日 01時 08分 25秒

こんばんは、高橋@半年振りくらいでしょうか? です。
遅レスですが…

>むたぐちさん
>http://www.asia.microsoft.com/japan/developer/scripting/
>
おお〜、コレいいですね!
早速入手してしまいました。
#明日の昼休みに読もう。

>土屋さん
>WSHを扱うサイトも増えてきましたが、どれも基本的なことが多く、
>WSHの醍醐味が出てくるオートメーション操作など、まだまだ広めなければならないことがたくさんあると思います。
>
私は仕事でかなりWSHのお世話になっています。
ドキュメントからスケルトンコードをおこしたり、テストデータを作ったり&消したり、diffをとったり。逆にソースコードからドキュメントをおこしたり…
手作業でやっていたら、それこそ日が暮れてしまいますね。(笑)
あとは、配布が簡単なところでしょうか。
#仕事で使っていたLinuxノートがワケありで使えなくなってしまい、またまた
#WSHのお世話になってます。

ちょっと的をはずしているかもしれませんが、
オートメーション操作が簡単なところは特筆ものだと思っています。
C++でレイトバインディングなんて、考えるだけでぞっとしてしまいます。
#WSHにはレイトバインディングしかありませんが…

土屋 さん 2001年 11月 12日 21時 52分 27秒

Dear さくぞう さん

作成したエクセルのインスタンスをobjExcelとすると、
objExcel.DisplayAlerts = False
としてみるとどうでしょう。
ただし後でTrueに戻しておく必要があります。


Dear よっしー さん

たしかに過去にSQL Serverの話は出ては来ていますが、
ここのメインはやはりWSH(ということでいいですか?管理人さん)だと思うので、
SQL Serverの方でお聞きになった方が早いのでは、と個人的には思います。
(ただ、私が何もわかってないだけかもしれませんが)

さくぞう さん 2001年 11月 12日 18時 12分 13秒

こんにちは。
ログファイル(csvファイル)をExcelでグラフ化してxls形式で自動保存するような
スクリプトを書こうと思っています。
ファイル保存時にファイルの更新ダイアログが出てこないようにする方法があれば
おしえてください。
お忙しいところお手数をおかけしますが、宜しくお願いします。

よっしー さん 2001年 11月 12日 17時 06分 38秒

はじめまして!!

質問なのですが、
VB6.0でSQL Server2000のtimestampを使った
排他制御の方法を考えているのですが
これといっていい方法がおもいつきません。

何かいい方法を教えて下さい。
よろしくお願いします。

土屋 さん 2001年 11月 12日 11時 16分 10秒

Dear 初心者 さん

で、あれば、WSH5.6の新機能で標準出力を得る方法を使うか(下の方の筑集眺餅 さんのログ参照)、
下のようにして、標準出力を取得する方法があります。
この例は、Delphi用のスクリプトファイルをコンパイルするものですが、
こういうのは参考になりますでしょうか?

'スクリプトのあるフォルダを取得して、ログファイルのフルパスを指定します。
Set objFS = CreateObject("Scripting.FileSystemObject")
Set objFile = objFS.GetFolder(objFS.GetParentFolderName(WScript.ScriptFullName))
strLogPath = objFile.ShortPath & "\Log.txt"
'次の行ですでにあるログファイルを消さなければ、ログは追加書込みになります。
If objFS.FileExists(strLogPath) Then objFS.DeleteFile(strLogPath)
Set objFile = Nothing
Set objFS = Nothing

Set objWS = CreateObject("WScript.Shell")
'コマンドを指定して、結果をログファイルに書き込むようにします。
strCommand = "command /c c:\Progra~1\Borland\Delphi6\Bin\dcc32.exe " & myFile & " >>" & strLogPath
'Trueなら、待ってから次の処理に移ります。
objWS.Run strCommand,1,True
'関連づけられたプログラムでログを開きます。
objWS.Run strLogPath
Set objWS = Nothing

初心者 さん 2001年 11月 12日 10時 12分 46秒

Dear 土屋 さん

>私はこの、新しいウィンドウが開くということが正しい動作に思えます。
>で、実はよく理解できてないのですが、
>最初からCScriptの方で行って、そのまま標準出力で結果を得るようにしては、
>何かまずいのでしょうか?

実はUNIXシェルプログラムをWSHへ移植しています。
コマンドライン起動の場合、UNIXでは起動した画面上に内部
呼び出しモデュールからのエラーメッセージが表示できます。
WSHの場合、シェル内部モデュールが新しいウィンドウを開くと
このモデュールが処理終了するとそのウィンドウも閉じてしまいます。
即ち一瞬しか表示が見えないのです。
新しいウィンドウでも良いのですが、この表示を残しておきたいのです。
何か良い方法があれば教えていただきたいのです。

あき さん 2001年 11月 11日 20時 11分 54秒

土屋さん有難う御座います。
ActiveX ですか、勉強して見ます。 有難う御座いました。
Shell_NotifyIconで検索すると結構出て来ますね。

土屋 さん 2001年 11月 11日 11時 24分 05秒

Dear あき さん

タスクトレイ関係は、Shell_NotifyIconっていうAPIの世界ですよね。
これはやはりWSHの範疇ではないでしょう。
APIを使えるActiveX コンポーネントを誰かに作ってもらうか、
アプリ側で対応してもらう以外に案はないと思います。
(WSHはマウス操作もできませんので、、、)

あき さん 2001年 11月 11日 09時 58分 25秒

土屋さん RES 有難う御座います。
これとはちょっと違って、右の方のタスクトレイに入るアプリなんですが、Terminate で停止させた時に
アイコンが消えてくれないんです。
アプリ側でちゃんとデストラクタで処理してくれていないと無理なのでしょうか。
WSH の範囲から逸脱している質問で済みませんが、よろしくご教示下さい。 お願いします。

土屋 さん 2001年 11月 09日 18時 31分 30秒

Dear SIGNAL9 さん

> 時間を盗みつつDoodle2に手を付けつつある今日この頃です。

楽しみですねえ。
個人的には、縮小の際に、パラメータをたとえば50とすると、
縦ヨコ比を保ちながら、縦ヨコの大きい方を50に合わせて縮小するなんて機能があるとうれしいです。
(計算するのが苦手なだけかも・・)


Dear むたぐち さん

> WSHの知名度を広め、情報不足を補うという趣旨で始めたこのページも、そろそろ
> その役目を終えようとしているのかもしれません。

いや、まだまだこれからですよ。
知名度はウイルスによってもたらされた部分がずい分あって、
真の姿はまだまだ広まってません。
世界制覇のためには、まだまだ苦難の道が・・・。(あんまり発展させると危なくなってくるので今回はこの辺で・・・)

WSHを扱うサイトも増えてきましたが、どれも基本的なことが多く、
WSHの醍醐味が出てくるオートメーション操作など、まだまだ広めなければならないことがたくさんあると思います。
便利なCOMもBASP21以外に伸びが今ひとつな気もしますし。。。
(できるだけ他人に頼ろうとする今日この頃・・・)

それと、WSHではできないこと(または他の方法を探した方が無難なこと)についても、
まだまだ布教活動が必要では。


Dear 初心者 さん

私はこの、新しいウィンドウが開くということが正しい動作に思えます。
で、実はよく理解できてないのですが、
最初からCScriptの方で行って、そのまま標準出力で結果を得るようにしては、
何かまずいのでしょうか?


Dear Goro さん

SendKeysを発動させる時は、AppActivateが不可欠なわけですが、
これはウィンドウが見つからなかった場合に、どういう動作をするか保証がないので、
このような分岐処理が必要な場合には向かないように思います。
ウィンドウハンドルを取得できる他の方法を探した方が無難なのでは。。。


Dear あき さん

> 終了させると、タスクトレイに残骸のアイコンが残ってしまうのですが、
> これを掃除する方法は無いでしょうか?

http://www.microsoft.com/japan/support/kb/articles/JP214/6/55.htm
に書いてある現象ですよね。
何かWSHで消す方法がひょっとしたらあるかもしれませんが、
(通常の方法では無理だと思います)
他の停止方法を探すなり、そもそも出さないように工夫する方が重要なことに思えます。
(答えになってなくてすみません)

あき さん 2001年 11月 09日 15時 14分 25秒

何時も困った時に参考にさせて頂いています。 (困った時だけで済みません m(_|_)m
で、教えて頂きたいのですが、WSH でアプリケーション(タスクトレイに居る物)を Process.Terminate で
終了させると、タスクトレイに残骸のアイコンが残ってしまうのですが、これを掃除する方法は無いでしょうか?
マウスでその上をなぞってやれば消えるのですが、幾つも起動停止させるとアイコンだらけに成ってしまうので
何とかしたいと思っています。    よろしくお願いします。

Goro さん (b@goro.com) 2001年 11月 09日 02時 57分 55秒

市販ウィンドウズソフトのアップグレードを自動化するWSHプログラムを作っています。setup.exeを起動させるとまず、"Preparing for installation"というポップアップ画面が出てきます。次に、古いバージョンのソフトがすでにインストールされている場合は”Uninstall existing software or not Y/N"というYes/Noボタンがあるポップアップ画面が出てきます。もし、古いバージョンのソフトがない場合にはただちにインストールを開始します。この"Uninstall existing software or not Y/N"のポップアップ画面が出てきたときのみSendKeyを使ってYesを押して続行させたいのです。多分、if..then.. elseだと思うのですが、この”ポップアップ画面が出てくるかどうかを認識させるにはどうしたらいいか教えてください。よろしくお願いいたします。

初心者 さん 2001年 11月 08日 17時 23分 57秒

初めての質問です。
コマンドラインの実行結果を現在のウィンドウに標準出力させたいのですが、
どうしても新しいウィンドウが開いてそこに出力しているようです。
例えば以下のようなコーディングの場合
Set Shell = Wscript.CreateObject ( "WScript.Shell" )
Shell.Run("command /c cscript.exe //H:CScript",0,1)
Shell.Run ("command /c copy a+b c")

実行させて
a
b
1 個のファイルをコピーしました。
と実行ウィンドウに表示できればよいのですが。
よろしくお願いいたします。

初心者 さん 2001年 11月 08日 17時 15分 54秒

初めての質問です。
コマンドラインの実行結果を現在のウィンドウに標準出力させたいのですが、
どうしても新しいウィンドウが開いてそこに出力しているようです。
例えば以下のようなコーディングの場合
Set Shell = Wscript.CreateObject ( "WScript.Shell" )
Shell.Run("command /c cscript.exe //H:CScript",0,1)
Shell.Run ("command /c copy a+b c")

実行させて
a
b
1 個のファイルをコピーしました。
と実行ウィンドウに表示できればよいのですが。
よろしくお願いいたします。

筑集眺餅 さん 2001年 11月 08日 13時 01分 06秒

To:sato さん

VBSを走らせる所か、テキストファイルを作る所とかで、実行権限の問題が
起きそうな気がします。

>set objf = objfs.createtextfile("test.txt",true)

の "text.txt" にはパス指定がないですが、どこのパスにできるんでしょね?
これでファイルを作るには、これを実行する人に、そこのパスの書き込み権限が
ないといけないですけど・・・。
確認するのに、ファイル作成に失敗した場合のルーチンを書き足してみては?

この辺、あまり詳しくないので、詳しい人のフォローを求む。

はずしていたら、スンマソン。

SIGNAL9 さん 2001年 11月 08日 08時 55分 02秒

>むたぐちさん

>そういうのがありなら、こういうのはどうでしょう。
>・ウィンドウキャプチャ(全画面キャプチャ)
>・印刷/スキャニング
キャプチャの方は全画面ならたいして難しくなさそうなんで考えてみます。
印刷・スキャナは、どうだろう…そこまでやるとまたぞろ「スイス・アーミー」
状態になりそうな(^^;)

>jpgの圧縮率とかGIFの透過色とかは設定できましたっけ?
JPEG圧縮はOKなんですが、透過GIFとアニGIFはけっこう面倒なんで
見ないフリしてました(爆)

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

To: sato さん

> そしてaspのファイルの中からvbsのファイルを呼び出し実行させたいのですが、呼び出しはするのですが、vbsが実行したままになってしまい処理が終わりません。

よくわかりませんが、
objWshShell.Run ScriptFileName , 6 , False

objWshShell.Run ScriptFileName , 6 , True
にして、スクリプトの終了を待ってみてはいかがでしょうか。



To: 【おじさま】 さん

> 管理人むたぐちさん
>
> >あれ、http://www.asia.microsoft.com/Japan/Developer/Scripting/default.htm消滅した?
>
> http://www.asia.microsoft.com/japan/developer/scripting/
>
> これだと入れます。本当は

おお、ドキュメントが全部WSH5.6版に変わってますね。
Windows Script5.6のヘルプは、WSH、VBS、JS、WSC、スクリプトエンコーダ統合ヘルプになっていて、
使いやすくなっています。サンプルの解説もつきました。WMIにも触れられている…。
Windows Script Interfacesのヘルプまである!
ここまできて、ついに完全なる公式ヘルプが登場したと言う感じですね。
はっきりいって、このヘルプさえあれば、私のページなどまったく不要です。
掲示板とダウンロードのコーナーを残してあとは消去しちゃってもいいくらいです。

でもまあ、それも忍びないので延命措置を施して公開を続けることにしました。
かなり内容が古くなっているので、手を入れるのが大変ですが、とりあえず一部分は
修正しておきました。まだまだ直さなきゃならんところが一杯あり、やーめた!となるのも
時間の問題かもしれませんけど。
(だいたいページ名称からして古い。いまどきWindows Script*ing* Hostと表記しているのは
なんだかなあです)

思えば公式ページにも情報が不足していた2年前とは、ずいぶん状況が変わったものです。
WSHの知名度を広め、情報不足を補うという趣旨で始めたこのページも、そろそろ
その役目を終えようとしているのかもしれません。



To: 土屋 さん

> 実はこれ、筑集眺餅 さんの書かれた、Shell.Execのことでした。
> これでいくつかのコマンドを同時に実行しながらそのStdOutを得ることができるので、
> 必要なStdOutを得たら、そのままタイムアウトにまかせて閉じてしまう、、ということでした。
> タイムアウトは.WSHファイルを使ってもできることですし。

そういえば、WScript.StdIn、WScript.StdOutを使えば、WSH自体が標準入出力を
いじれますしね。これとWSH5.6のWshExecオブジェクトを併用すれば、
互いに通信しあう2個のスクリプトなんてのが作れるかもしれません。

> 思うに、ASPでも、FileSystemObjectなどWSHでできることはかなりできるので、
> 可能であればそちらですませた方がいいのでは、という見方もありますが。

私もこの意見に賛成です。



To: SIGNAL9 さん

>  1.キャンバスの確保・破棄の自動化。これに伴い、Create/Eraseメソッド
>   は廃止(ASP対策)。
>  2.SaveToStreamメソッド追加。編集したキャンバスをスクリプトの変数に
>   渡せれば、擬似的に複数のキャンバスが扱える。また、RDBへの入力など
>   にも使えるかも。
>  3.クリップボードとの入出力(SaveToClipBoard/LoadFromClipBoardメソッド)
>  4.壁紙へのセーブ機能(SetWallPaperメソッド)
>  5.ConvertFileでのフォルダ/ワイルドカード指定での複数一括変換
>  6.LoadFrom系メソッドで、現在キャンバス上への追加読み込み。白黒マスク
>   作成メソッドと合わせれば簡単な画像合成ができるかも。
>  7.ベジエ曲線サポート(ってもWin32のAPI呼ぶだけ^^;)。
>  8.キャンバスサイズ制限の撤去。

おお、すごいです。

そういうのがありなら、こういうのはどうでしょう。
・ウィンドウキャプチャ(全画面キャプチャ)
・印刷/スキャニング

jpgの圧縮率とかGIFの透過色とかは設定できましたっけ?

SIGNAL9 さん 2001年 11月 07日 17時 23分 31秒

失礼
>2.SaveToStreamメソッド追加。編集したキャンバスをスクリプトの変数に
>  渡せれば、擬似的に複数のキャンバスが扱える。また、RDBへの入力など
>  にも使えるかも。

ぢゃなくて、LoadFromStreamを追加の間違いです。SaveToStreamで変数セット
は前からあったんでした(^^;)

SIGNAL9 さん 2001年 11月 07日 16時 44分 32秒

ども、SIGNAL9でございます。

時間を盗みつつDoodle2に手を付けつつある今日この頃です。
#遅々として進みませんが(^^;)

 内部構造から見直してしまいましたので、今のところ、ほぼ完全な
書き換えになりそうです。メソッドも統廃合するつもりですので、機
能的には上位互換ですが、スクリプトレベルでのコンパチビリティは
皆無(爆)。

今のところ、こういう機能を追加しようと思ってます;

 1.キャンバスの確保・破棄の自動化。これに伴い、Create/Eraseメソッド
  は廃止(ASP対策)。
 2.SaveToStreamメソッド追加。編集したキャンバスをスクリプトの変数に
  渡せれば、擬似的に複数のキャンバスが扱える。また、RDBへの入力など
  にも使えるかも。
 3.クリップボードとの入出力(SaveToClipBoard/LoadFromClipBoardメソッド)
 4.壁紙へのセーブ機能(SetWallPaperメソッド)
 5.ConvertFileでのフォルダ/ワイルドカード指定での複数一括変換
 6.LoadFrom系メソッドで、現在キャンバス上への追加読み込み。白黒マスク
  作成メソッドと合わせれば簡単な画像合成ができるかも。
 7.ベジエ曲線サポート(ってもWin32のAPI呼ぶだけ^^;)。
 8.キャンバスサイズ制限の撤去。

 他になにかいりますかね?>むたぐちさん、土屋さん

土屋 さん 2001年 11月 07日 13時 56分 21秒

Dear むたぐち さん

> え、これ初耳かもしれません。

実はこれ、筑集眺餅 さんの書かれた、Shell.Execのことでした。
これでいくつかのコマンドを同時に実行しながらそのStdOutを得ることができるので、
必要なStdOutを得たら、そのままタイムアウトにまかせて閉じてしまう、、ということでした。
タイムアウトは.WSHファイルを使ってもできることですし。
誤解を招く表現ですみませんです。

Shell.Execのサンプルがなかなか書けないでいたのですが、筑集眺餅 さんありがとうございます。

>> 錯乱坊?
>うる星やつらの?

チェリーって呼ばれてますよね。

旧ドラえもんは記憶にないです。その頃は、放映されている民放は1局だけだったし、、、


Dear ひっし さん

MsgBox には、表示できるテキストの量に制限があります。
むたぐち さんの方法の他、IEをダイアログ代わりに使うという、最近よく出てきた話題の方法がありますね。


Dear sato さん

> vbsのファイルはサンプルで動作テストをさせているだけなのでテキストファイルを一つ作
> 成しているに過ぎないのですが、なぜvbsファイルの実行が終了しないのでしょうか?

よくわかりませんが、option explicitをコメントにして、
エラーを出してその原因は特定できないでしょうか?

vbsファイルの方で気になるのは、
objf.writeline "create text file !!"
で文字を書き込んだあと、このテキストファイルは閉じてますか?
それでもWSHが閉じないなら、WScript.Quitで明示的に閉じても、やはりだめでしょうか?

思うに、ASPでも、FileSystemObjectなどWSHでできることはかなりできるので、
可能であればそちらですませた方がいいのでは、という見方もありますが。

【おじさま】 さん (tomiyama@seagreen.ocn.ne.jp) 2001年 11月 07日 13時 36分 02秒
URL:http://homepage1.nifty.com/~tomiyama/

管理人むたぐちさん

>あれ、http://www.asia.microsoft.com/Japan/Developer/Scripting/default.htm消滅した?

http://www.asia.microsoft.com/japan/developer/scripting/

これだと入れます。本当は

http://www.asia.microsoft.com/japan/developer/scripting/default.asp

こうなのかな。

sato さん 2001年 11月 07日 11時 31分 05秒

おはようございます。早速ですが質問させていただきます。

IIS5.0を利用してシステムを構築しております。
その際、web上で登録というボタンを押してもらい、そのタイミングでaspのファイルを実行させております。

そしてaspのファイルの中からvbsのファイルを呼び出し実行させたいのですが、呼び出しはするのですが、vbsが実行したままになってしまい処理が終わりません。

vbsのファイルはサンプルで動作テストをさせているだけなのでテキストファイルを一つ作成しているに過ぎないのですが、なぜvbsファイルの実行が終了しないのでしょうか?

何か原因があるのでしょうか? ご存知でしたらお答えください。
宜しくお願いします。

以下にサンプルコードを示します。

○aspファイル

<%@ Language=VBScript %>
<%
Option Explicit
%>
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=Shift_JIS">
<meta name="generator" content="Adobe GoLive 5">
<title></title>
</head>

<body bgcolor="#ffffff">
<p>
<%

Dim MailAddress
Dim ScriptFileName
Dim objWshShell

MailAddress = Request.Form( "newaddress" )

ScriptFileName = Server.MapPath("hello.vbs")

Set objWshShell = CreateObject("WScript.Shell")

objWshShell.Run ScriptFileName , 6 , False

Response.Redirect "mailview.asp"

%>
</p>
</body>
</html>


○vbsファイル

option explicit

dim objfs
dim objf

set objfs = createobject("scripting.filesystemobject")

set objf = objfs.createtextfile("test.txt",true)

objf.writeline "create text file !!"

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

あれ、http://www.asia.microsoft.com/Japan/Developer/Scripting/default.htm消滅した?

WSHとはぜんぜん関係ないのですが、今日本屋で見かけた怪しい本について。
その本は新潮文庫なんですが、やたらと安いんですね。たしか300円しなかったです。
書名は「マイブック 2002年の記録」と言いまして、著者名は空白。
え、いや、著者名は書いてないのです。
本文は約365ページあります。
内容ですが、一ページにつき活字が数文字しかなく、有体に言うと日付しかありません。

http://www.esbooks.co.jp/bks.svl?CID=BKS503&pcd=30870945&introd_id=Xmo46Wk9o36m9496i81GiiX463Gm3561&pg_from=p&shelf_id=02&location_id=10&
とまあ、そういう本です。

北杜夫の「船乗りクプクプの冒険」という小説(ジュブナイル?)には、締め切りになっても
原稿が仕上がらなかった小説家が、未完成の数ページの小説に数百ページの白紙を付けて
高級ノートとして売り出すというネタがありますが、本当にやってしまうとはね。
筒井康隆の小説でも数ページの空白があるのはありますが、さすがに全部というのはないし。

ところで、隣に『「チーズはどこへ消えた?」 マイ・ストーリー・ブック (2002年版)』が
あったんですが、これってどっちが本家?

個人的な意見ですが、「チーズはどこへ消えた?」はイマイチです。あれを読むなら星新一を読んだ方が良い。
バターの方はしらん。



To: 土屋 さん

> むたぐちさんの指摘の通り、バージョンの違いがあるかもしれません。
> IE5以上があれば、対応できていたような気も・・・

IE5のインストーラーで、スクリプトサポートを入れておけば問題ないですね。

> 参考までに、私はエンコードファイルを作る時も、WSH使ったりしています。
> ドラッグ&ドロップで受け取ったファイルをエンコードする例です。

いいですねえ。
私はバッチファイルで済ましています(^^;

> いつもすみませんです。20年以上も前のマンガですからねえ。
> なにせ私は、鉄腕アトムも最初の放映で見た世代なのであった(あまり覚えてないけど)。

じゃあもしかして、*日本テレビ系列*で放映されていた、旧ドラえもんもリアルタイムで
ごらんになられました?

> 最近は、職場で「あなたのお名前何ってーの?」って知ってる?って聞いても、
> 知らない人がずい分増えてきてしまって、さびしい。(なぜ聞いたのかは秘密です)

知らなーい。
ああ、ジェネレーションギャップがあ。



To: 筑集眺餅 さん

> 錯乱坊?

…うる星やつらの?



To: 土屋 さん

> 5.6だと他のスクリプトを制御できるらしいので、別スクリプトで処理させて、
> タイムアウトしたらそのまま閉じてしまうという方法もあるかなあ。(不勉強)

え、これ初耳かもしれません。
意外と新機能を見落としていたのかな?



To: 筑集眺餅 さん

> では、WSH5.6で標準出力をつかまえる例をば書いてみました。

WshExecを活用しているサンプルですね。良いです。

http://www.netal.com/ のSystem Scripting Runtimeというコンポーネントには
pingの機能があるので、これを使うと言う手もありますよ。>ああさん さん



To: ひっし さん

> いま、フォルダ内に格納されているファイルの表示を
> Msgboxで行おうとしたのですが、ファイル数が多すぎると
> 最後の方のファイルが表示されません。これは、文字制限
> とかあるのでしょうか?。全て表示できる方法などがあれば
> よろしくお願いします。

たぶん制限はあると思います。
私は、こういう結果が長文になる場合、一度テキストファイルに書き込み、
それをWshShell.Runで実行することでエディタで開くようにしています。

> あと、試しに「a」と「b」フォルダに格納されているファイルを
> 配列を使用して照合しようとしたのですが、自分の知識だと以下
> のようなものになりました。配列を使おうとしたのですが、ファイル
> 名をうまく配列にいれることができなくてDictinaryオブジェクトを
> 使用して無理やり照合をしてみました。稚拙ですが、以下がソース
> です。2つのフォルダの中身が同じであることがわかればよいのですが
> もっとシンプルな方法などないでしょうか?。宜しくお願いします。

Function IsSameFolder(Folder1,Folder2)
Set oFolder1 = Fs.GetFolder(Folder1)
Set oFolder2 = Fs.GetFolder(Folder2)
If oFolder1.Files.Count <> oFolder2.Files.Count Then
IsSameFolder = False
Exit Function
End If
For Each oFile In oFolder1.Files
If Not Fs.FileExists(Folder2 & "\" & oFile.Name) Then
IsSameFolder = False
Exit Function
End If
Next
IsSameFolder=True
End Function

こんなんどうですかあ?
ファイル名のチェックだけで、ファイルの中身まではチェックしてませんし、
サブフォルダまではチェックしないので、機能としては不十分かもしれませんが。

ひっし さん 2001年 11月 06日 20時 41分 31秒

度々お世話になっています。ひっしといいます。
いま、フォルダ内に格納されているファイルの表示を
Msgboxで行おうとしたのですが、ファイル数が多すぎると
最後の方のファイルが表示されません。これは、文字制限
とかあるのでしょうか?。全て表示できる方法などがあれば
よろしくお願いします。

以下が作成中のソースです。

Dim FS, TgFolder, n, List
Set Fs = WScript.CreateObject("Scripting.FileSystemObject")
Set TgFolder = Fs.GetFolder("C:\test")
For Each n In tgFolder.files
List = List & n.name & vbNewLine
Next
msgbox List


あと、試しに「a」と「b」フォルダに格納されているファイルを
配列を使用して照合しようとしたのですが、自分の知識だと以下
のようなものになりました。配列を使おうとしたのですが、ファイル
名をうまく配列にいれることができなくてDictinaryオブジェクトを
使用して無理やり照合をしてみました。稚拙ですが、以下がソース
です。2つのフォルダの中身が同じであることがわかればよいのですが
もっとシンプルな方法などないでしょうか?。宜しくお願いします。


Option Explicit
Dim WshShell,Fs
Set WshShell = WScript.CreateObject("WScript.Shell")
Set Fs = WScript.CreateObject("Scripting.FileSystemObject")

Dim objDic, TgFolder, n, serfolder, l
Set objDic = Createobject("Scripting.Dictionary")
Set TgFolder = Fs.GetFolder("c:\a")
Set serFolder = Fs.GetFolder("c:\b")

Set FileCount = TgFolder.files
fTotal = FileCount.count
Set FolCount = serFolder.files
folto = FolCount.count

For Each n In tgFolder.files
objDic.Add n.name,n
Next

Dim myItem,mykey,i,j,str,tr
'格納したItemを一覧表示
myItem = objDic.Items
For i = 0 To objDic.Count - 1
str = str & myItem(i) & vbCR
Next
MsgBox str

'格納したKeyを一覧表示
mykey = objDic.keys
For j = 0 To objDic.Count - 1
tr = tr & mykey(j) & vbCR
Next
MsgBox tr

For Each l In serFolder.files
If objDic.Exists(l.name) Then
Msgbox(objDic.Item(l.name))
Else
Msgbox("違うファイルがあります。"),16
End If
Next

MsgBox "処理を終了"


筑集眺餅 さん 2001年 11月 06日 19時 55分 35秒

To:ああさんさん、土屋さん

土屋さん、Wzマクロありがとうございます。活用させて頂きますぅ。(^^)

では、WSH5.6で標準出力をつかまえる例をば書いてみました。
バッチファイルの標準出力が WshExec.StdOut という TextStream に
入ってくれるので、その中身を読み出して文字列をチェックします。
一時ファイルの受け渡しがいらないってのがミソでしょう。

一瞬DOS窓らしいものが開くのが、ちょっと気になりますが・・・。

'-------------------------------------------
sIP="127.0.0.1"
Set oShell=CreateObject("WScript.Shell")
Set oExec=oShell.Exec("ping -n 1 -w 1000 " & sIP)
Do While oExec.Status=WshRunning ' ping の実行が終わるまでループ
WScript.Sleep 50
Loop
bConnected=(InStr(oExec.StdOut.ReadAll, "Reply from")>0)
' 出力中に "Reply from" ってのがあれば、bConnected=True になります。
'------------------------------

土屋 さん 2001年 11月 06日 17時 30分 54秒

Dear ああさん さん

たとえば、
strCommand = "command /c ping 192.168.0.1 -n 1 -w 1000>>" & ログファイル名
Set objWS = CreateObject("WScript.Shell")
objWS.Run strCommand,1,True

なんてすると、1秒以内にREPRYがないとログファイルの中に
Request timed out.
の文字が記入されますので、これをFileSystemObjectで開いて検索して、
見つかった時と見つからなかった時で処理を分岐するくらいしか思いつかないです。

5.6だと他のスクリプトを制御できるらしいので、別スクリプトで処理させて、
タイムアウトしたらそのまま閉じてしまうという方法もあるかなあ。(不勉強)


Dear 筑集眺餅 さん

いやどういたしまして。
では蛇足ながらWZ EDITORマクロシリーズの続編を。
素人がみようみまねで作ったものですので、あらかじめご承知おきを。

次をたとえばWSH.txcと保存すると、マクロ名WSHでWScriptエンジンを指定して実行します。
WSH.Comment で選択した行をコメントにします。
WSH.CommentOut で選択行のコメント(行の最初に'がある場合のみ)の'を取ります。
WSH.CommentDelete で選択部分のコメント行自体を削除します。
\'の部分を>や//に変更するなどいろいろ転用可かも。
処理後にカーソルが移動しますので、もとに戻す処理を書き加えれば(調べてません)OKかも。

main
{
CommandExec("wscript.exe \"" + text->szfilename + "\"");
}

Comment
{
// 選択範囲内に対して'挿入
txWalkStart(text);
while (txIsWalking(text)) {
if (!txIsCurReturn(text)) txInsert(text,"\'");
if (!txNextPara(text)) break;
}
txWalkEnd(text);
}

CommentOut
{
// 選択範囲内に対して'削除
txWalkStart(text);
while (txIsWalking(text)) {
if (txGetChar(text) == '\'') txDeleteChar(text);
if (!txNextPara(text)) break;
}
txWalkEnd(text);
}

CommentDelete
{
// 選択範囲内に対して'行削除
txWalkStart(text);
while (txIsWalking(text)) {
if (txGetChar(text) == '\'') txDeleteParaEnd(text);
if (!txNextPara(text)) break;
}
txWalkEnd(text);
}

ああさん さん 2001年 11月 05日 23時 53分 11秒

みなさん、ご指摘ありがとうございました。
エンコードしたものを会社のPCで実行したらすんなりエンコード前と同じ
動きをしてくれました。やはり、バージョンの違いだったようです。
甘えついでにもう一つ質問よろしいでしょうか?
ネットワークドライブを繋ごうとする時、相手端末電源が入っていなかったりすると結構時間が経ってから「つなげません」とメッセージが出ます。
それを回避するために、PINGを打ってreplyで帰ってきた端末にはそのまま繋ぎ、
タイムアウトになった場合にはメッセージを出すといったことはWSHでできますでしょうか?もし良かったら教えてください。
質問ばかりですみません。

筑集眺餅 さん 2001年 11月 05日 15時 04分 12秒

To:土屋さん

>ツールバーに割り当てる時も、コマンドにShellと入力して、適当にアイコンを選>べばOKです。
>いかがでしょう?

オゥ、ワンダホー。
掛け値なしに、すばらしいです。ありがとうございました。

To:むたぐちさん、たるさん
>HTAを非表示(実際は違うけど)で実行すると、常駐アプリもどきが
>作れるわけですね。結構面白いです。

すんげー。可能性が拡がりますねぇ。

To:土屋さん

>最近は、職場で「あなたのお名前何ってーの?」って知ってる?って聞いても、
>知らない人がずい分増えてきてしまって、さびしい。

今 思えば、あれは、ラップの走りだったのではないかと。

錯乱坊?

土屋 さん 2001年 11月 05日 13時 32分 04秒

Dear ああさん さん

むたぐちさんの指摘の通り、バージョンの違いがあるかもしれません。
IE5以上があれば、対応できていたような気も・・・
(昔の環境を残していないので、どうも詳しいことはわかっていません)

参考までに、私はエンコードファイルを作る時も、WSH使ったりしています。
ドラッグ&ドロップで受け取ったファイルをエンコードする例です。
エンコーダをインストールしたフォルダに応じて書き換えが必要です。
(あとWSHの2以上も必要です)

Set objArgs = WScript.Arguments
j = 0
ScriptFileName = WScript.ScriptFullName
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objWS = CreateObject("WScript.Shell")

For i = 0 to objArgs.Count - 1
FileName = objArgs(i)
If LCase(objFSO.GetExtensionName(FileName)) = "vbs" Then
EncodeFileName = objFSO.GetParentFolderName(FileName) & "\" & objFSO.GetBaseName(FileName) & ".vbe"
objWS.Run """C:\Program Files\Microsoft Windows Script\Encoder\SCRENC.EXE"" """& FileName & """ """ & EncodeFileName & """"
j = j + 1
End If
Next

Set objFSO =Nothing
Set objWS = Nothing

MsgBox j & "個のファイルをエンコードしました"


Dear むたぐち さん

> # またもや何のことかわからなかったので、Googleで検索したのでした。

いつもすみませんです。20年以上も前のマンガですからねえ。
なにせ私は、鉄腕アトムも最初の放映で見た世代なのであった(あまり覚えてないけど)。

最近は、職場で「あなたのお名前何ってーの?」って知ってる?って聞いても、
知らない人がずい分増えてきてしまって、さびしい。(なぜ聞いたのかは秘密です)

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

To: たる さん

> でも例外を作っちゃぁいけませんですよ。
> その方に、この掲示板のアドレスと、ハングル語は文字化けしそうなので、
> 出来たら英語か日本語で質問するように問いかけてみられては?

実はその内容のメールを送ってみたんですが、返事がないのです…。

> 1.htaをタスクバー無しで起動。(デバッグ中はありの方がいいですね)
> 2.指定のフォルダのタイムスタンプと名前を取得。
> 3.dictionaryオブジェクトに名前をキーに存在チェック無しにタイムスタンプを入れる。
> 4.0,0にリサイズ。
> 5.setIntervalで何秒かおきに2.を実行
> 6.3.を存在チェックありで実行
> 7.違いがあったら読み込む。リサイズ。
> 8.何秒かしたら4.を実行するようにsetTimeoutで設定

HTAを非表示(実際は違うけど)で実行すると、常駐アプリもどきが
作れるわけですね。結構面白いです。

もし良かったらテンプレートとしてお使いください↓

<html>
<head>
<hta:application minimizeButton="no"
maximizeButton ="no"
applicationname="非表示ダイアログ"
singleinstance="yes"
border="none"
borderstyle="raised"
showintaskbar="no"
version="1.00"
id="objHTA">
<script language="VBScript">
window.ResizeTo 0,0
</script>
</head>
</html>



To: 土屋 さん

> 『海が好き〜』のあのおじさん(名前何だっけ?)の方が合ってますね。

藤波竜之介の父親ですね。
# またもや何のことかわからなかったので、Googleで検索したのでした。

> ところで、キーボードの手前の方に旗のマークのついたキーといっしょに、
> Eを押すとエクスプローラ、Rを押すとファイル名を指定して実行、
> Fを押すと検索、Dを押すとデスクトップ表示できるんですね。(何気に押して発見)
> 知らなかった。。。

Win+D、Win+R、Win+Fは良く使います。
他にWin+F1でWindowsのヘルプ表示、Win+Pauseでシステムのプロパティとかがあります。
Win2000ならWin+Uでユーティリティマネージャが立ち上がったりします。

私の投稿にそれ関係のがありました。しかもWSHのコードつきだ(^^;
http://groups.google.com/groups?as_umsgid=%3C8k2312%24p6n%241@news0.hi-ho.ne.jp%3E%23&as_scoring=d



To: 土屋 さん

> たるさんの路線でいって、エクスプローラのイベントを監視して、
> ファイルコピーを感知するって、できるのかな。
> やはり、たるさんのようにループでまわしながらフォルダをスキャンした方が現実的?

ShellFileViewオブジェクトのイベントにそういうのがあったらいいんですが、
残念ながらEnumDoneとSelectionChangedしかないようです。



To: たけ さん

> Amikai の AMI テキスト デモを使ってみてはいかがでしょうか?
> http://www.amikai.com/ の右下にある AMI テキストのデモで
> 韓国語 > 日本語 の翻訳ができます。

試してみたんですが、そもそもハングルのテキスト(たぶんUnicodeなんだと思いますが)を
IEのFormのテキストエリアにコピーする方法がわかりませんでした(^^;



To: ああさん さん

> c:\screnc.exe test.vbs test2.vbe
> ですが、そのエンコードされたされたはずのスクリプトをダブルクリックしてもメモ帳がひらいて、エンコードされたであろう文字列が並んでいるだけで
> スクリプトが実行されません。根本的に何か間違っているのでしょうか?
> もしかして、NT4.0のメモ帳で作ったスクリプトをWIN98でエンコードしているからとかでしょうか?

もしかしてWSHのバージョン(というかVBSのバージョン)が古いのではないでしょうか。
VBEがサポートされたのは、VBS5.0以降でして、Win98に最初から入っているVBSでは
実行できません。

ああさん さん 2001年 11月 04日 21時 04分 08秒

土屋さん、早速のお返事ありがとうございます。
初心者の私にはVCやDelphiは触ったこともない存在なのでスクリプトエンコーダーをダウンロードしてみました。
マニュアルと格闘しながら下記のようにDOSプロンプトから実行したらできたような感じです。
c:\screnc.exe test.vbs test2.vbe
ですが、そのエンコードされたされたはずのスクリプトをダブルクリックしてもメモ帳がひらいて、エンコードされたであろう文字列が並んでいるだけで
スクリプトが実行されません。根本的に何か間違っているのでしょうか?
もしかして、NT4.0のメモ帳で作ったスクリプトをWIN98でエンコードしているからとかでしょうか?
みなさん、何か心当たりがありましたら助けていただけますでしょうか。
よろしくお願いします。

土屋 さん 2001年 11月 04日 17時 13分 22秒

Dear ああさん さん

基本的にはスクリプトの完全な隠匿は無理ではないかと思います。
VCやDelphiでコンパイルされた実行形式にするか、その部分だけコンポーネントにしてWSHから呼び出す方法にした方が無難でしょう。

MSのサイトでスクリプトエンコーダという、スクリプトを暗号っぽくするプログラムがダウンロードできますが、
これで結構読みにくくすることができますので、絶対的なセキュリティが必要でなければ、
これを使ってVBE形式にして配布することが可能です。
通常はこれでも大丈夫かとは思います。
(でも過去ログを参照していただければわかる通り、解読は不可能ではないので、
 あくまでも読みにくくするということで・・・)

ああさん さん (caq04010@pop01.odn.ne.jp) 2001年 11月 04日 16時 17分 11秒

はじめまして、ああさんと申します。
まったくの初心者なのでいつも参考にさせて頂いています。
今回、質問が有りまして、書かせて頂きました。
ネットワークドライブをつなぎ、ファイルをコピーするという
簡単なプログラムを作りました。
これを他の人たちに配ろうと思うのですが、ネットワークドライブをつなぐときに
必要な管理者権限のユーザー名とパスワードをプログラムの中に書いてあるのです。
パスワードを他の人たちには知られてはまずいので、
vbsファイルを編集できない形で配れないものかと悩んでいます。
もしくは他の方法でプログラム中のパスワードの文字列を伏せ字に出来るとか
何かいい方法がないかと思っています。
皆さんのお知恵を拝借したいのですが、宜しくお願い致します。
具体的には下記のようになっており、strpasswordがばれないようにしたいのですが。
wshnetwork.mapnetworkdrive strdrive,strshare,false,strusername,strpassword

土屋 さん 2001年 11月 04日 09時 48分 47秒

Dear 筑集眺餅 さん

> ワシもWzユーザなので、良かったら 見せてください。(^^;)

おぉっ、仲間が、、、(もっとも私はTeraPadなどに浮気したりしてましたが)

説明します。
まずWZ EDITORを立ち上げ、WZ EDITORのあるフォルダの下のmacroフォルダに、
Shell.txcの名前で新規ファイルを作成します。(この場合、Shellがマクロの名前になります)

次に、Shell.txcに次の4行を

main
{
shellExecute(text->szfilename, "open");
}

そして保存し、メニューのツールからマクロ⇒コンパイルを選んで、コンパイルします。
エラーがでなければ、これで登録完了です。
メニューのツールから「マクロを実行」を選んで、ShellとしてOKすれば、現在開いているファイルの関連するアプリケーションで開かれます。
(VBSならWSHが実行され、HTMLならIEで開かれます)

ショートカットキーで実行する場合は、ツールメニューのキーカスタマイズで、
追加ボタンを押して、コマンドをShellとして、あとは見本にしたがって、好きなキーを割り当てます。
ツールバーに割り当てる時も、コマンドにShellと入力して、適当にアイコンを選べばOKです。

いかがでしょう?

筑集眺餅 さん 2001年 11月 04日 08時 07分 17秒

To:土屋さん

>ところが、WZ EDITORのマクロが簡単に使えることが判明しまして、
>編集中のファイルを関連づけされたアプリで開く一行マクロを作ったら、
>これがまた快適。。(実行速度が速い)
>おすすめですよ。

ワシもWzユーザなので、良かったら 見せてください。(^^;)

ワシも、これでスクリプトを書いてます。
DOSの頃にVzエディタを使っていたので、キー割り当てが同じに
できてアリガタイ。 マクロは使った事ありませんが・・・。
シェアウェア全盛の昨今では確かに高いと感じますけど、
ワシとしては よく使う分、モトは取っている気がしてます。

Robo さん (y-koike@jcom.home.ne.jp) 2001年 11月 03日 21時 17分 46秒
URL:http://members.home.ne.jp/y-koike/index.html

To: 管理人むたぐち さん
>まだプログラムのダウンロードはできないみたいですね

すみません。UPし忘れていました。
あとバーナーを追加しておきました。

まだまだ出来たてもページですがどうぞよろしく。

たけ さん (e_takeda@din.or.jp) 2001年 11月 03日 17時 53分 17秒
URL:http://www.din.or.jp/~e_takeda/

こんにちは、たけ@翻訳サイト研究家 (大嘘) です。

To: 管理人むたぐち さん
> なんかハングルのメールが来たんですけど(^^;
> うーん、誰か韓国語わかる方、いらっしゃいませんか?

私は全く韓国語に明るくないので... > 爆
さすがむたぐち御大。韓国からのメールなんてグローバルですね。

Amikai の AMI テキスト デモを使ってみてはいかがでしょうか?
http://www.amikai.com/ の右下にある AMI テキストのデモで
韓国語 > 日本語 の翻訳ができます。
ちゃんと翻訳してくれるか分かりませんが (ぉぃ)
試してみる価値はあると思います。

# Excite や Nifty の翻訳サービスは Amikai の翻訳エンジンを使っています。

土屋 さん 2001年 11月 03日 16時 24分 33秒

たるさんの路線でいって、エクスプローラのイベントを監視して、
ファイルコピーを感知するって、できるのかな。
やはり、たるさんのようにループでまわしながらフォルダをスキャンした方が現実的?

WZ EDITORのおすすめU
私の場合は、DBに格納している分はどうなっているかわかりませんが、
作業フォルダ内のvbsやwsfが200を越えてしまいまして、
やはり色つきプレビューのできるWZ FILERは手放せない存在になってしまいました。
ファイル一覧のプレビュー画面からスクリプトをコピーすることも可能です。
GREP(全文検索)も結構速いので、たとえばShell.Applicationを使ったスクリプトを探すといった時に重宝します。
スクリプトとは関係なくなりますが、拡張子tmlで保存すると、書式がつけられるようになります。(専用のタグによる書式ですが)
難点をいうと、やはり値段が、、、、

土屋 さん 2001年 11月 03日 13時 11分 52秒

たまにWSHとやらの勉強でもしようかな(おいおい)と、久しぶりにあちこちのサイトにおじゃますると、結構有名なんですね。ここのサイト。
WSHについて知りたければここ。って感じで紹介されていましたね。
さすが宣教師の知名度はダテではありませんね。(たるさんのところからコピペ)


Dear 寺島 さん

私もWSHだけでは無理があると思うので、
筑集眺餅 さんの方法に一票。
SendToに放り込んどいて、右クリックで実行してしまう手もありますね。


Dear むたぐち さん

> 土屋さん的に、犬夜叉はどうっすか?

『海が好き〜』のあのおじさん(名前何だっけ?)の方が合ってますね。


ところで、キーボードの手前の方に旗のマークのついたキーといっしょに、
Eを押すとエクスプローラ、Rを押すとファイル名を指定して実行、
Fを押すと検索、Dを押すとデスクトップ表示できるんですね。(何気に押して発見)
知らなかった。。。

たる さん 2001年 11月 03日 10時 03分 12秒

To: 管理人むたぐち さん
>ハングルは珍しいのでよく読んでみると、VBAとかMSOfficeとかWSHとかの
>英単語が本文中に含まれているんです。
>とすると、これはもしかして純粋に、私個人だけに宛てたメールなんでしょうか。
それは、面白そうな話です。さすが宣教師の知名度はダテではありませんね。
でも例外を作っちゃぁいけませんですよ。
その方に、この掲示板のアドレスと、ハングル語は文字化けしそうなので、
出来たら英語か日本語で質問するように問いかけてみられては?

>頃合を見て、適当に中身をエディタで見て、なんとなくリネームして、一つのフォルダに
>放り込んでます。
自分は一つのワーキングフォルダを作って無作為に連番的な名前をふって
ファイルごとにメモを残せるスクリプトで管理しています。
さらには、本番ファイルとの違いをDB化してそれ以外の所を同期が取れる様にしたいんですがなかなか進みません。

To: 寺島 さん
>そこで適当なフォルダを作成して、その中にTXTファイルをコピーすると自動的にVBSが立上り実行する
>ということですが可能なのでしょうか。よろしくお願いします。
とりあえず愚案を考えてみました。
1.htaをタスクバー無しで起動。(デバッグ中はありの方がいいですね)
2.指定のフォルダのタイムスタンプと名前を取得。
3.dictionaryオブジェクトに名前をキーに存在チェック無しにタイムスタンプを入れる。
4.0,0にリサイズ。
5.setIntervalで何秒かおきに2.を実行
6.3.を存在チェックありで実行
7.違いがあったら読み込む。リサイズ。
8.何秒かしたら4.を実行するようにsetTimeoutで設定

あと、何かキャンセルするための方策を考えておかないといけませんね。


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

なんかハングルのメールが来たんですけど(^^;
普段なら日本語以外のメールは、だいたいspamフォルダ逝きなのですが(おい)、
ハングルは珍しいのでよく読んでみると、VBAとかMSOfficeとかWSHとかの
英単語が本文中に含まれているんです。
とすると、これはもしかして純粋に、私個人だけに宛てたメールなんでしょうか。
うーん、誰か韓国語わかる方、いらっしゃいませんか?



To: 土屋 さん

> 私は四谷さん(時に一の瀬さん)なので、管理人さんはだめですよ。(またこの話している、、、)

土屋さん的に、犬夜叉はどうっすか?

> ところが、WZ EDITORのマクロが簡単に使えることが判明しまして、
> 編集中のファイルを関連づけされたアプリで開く一行マクロを作ったら、
> これがまた快適。。(実行速度が速い)
> おすすめですよ。

以前欲しくなったことがあります。WZ Editor。
でもなんとなくインターフェースが気に入らなくて、ちょっとお高めだったし、
やめておきました。
でも、それを聞いてなんかまた欲しくなりましたよ。

私のスクリプト管理は、たぶん人が見たら笑われてしまうほどずさんです。
なんたってデスクトップに作りっぱなしで、「新規VBScript Script File (5).VBS」とかが
散乱しているというひどい状況だからなあ。
頃合を見て、適当に中身をエディタで見て、なんとなくリネームして、一つのフォルダに
放り込んでます。
箸にも棒にもひっかからんスクリプトはごみ箱へ。デスクトップは清潔に。

> ちなみに、WZ EDITORのマクロって、WindowsAPIやDLLファイルを直接操作できるとてつもない代物です。(このあたりは使いこなせませんが)

ならWSH要らないんじゃ…(禁句)



To: 寺島 さん

> やりたい内容は、VBSでテキストの置き換えを作ってみました。そこで適当なフォルダを作成して、その中にTXTファイルをコピーすると自動的にVBSが立上り実行する
> ということですが可能なのでしょうか。よろしくお願いします。

WSHでやるのは無理じゃないかと。
それを実現するには、ファイルがコピーされたというメッセージを何らかの方法で
取得してやらないといけないわけですが、WSHではそういったことは基本的には
できないですから。
APIを駆使してフックとかサブクラス化とか私にはさっぱりわからない世界の話に
なるんではないでしょうか。
もちろん常駐させなきゃいけないでしょうし。

ところでDelphi6にはShellChangeNotifierなるコントロールが付属していますけど、
これがその機能を持っているような気がします。



To: 筑集眺餅 さん

> 例えば、VBSのファイルか、そいつのショートカットの上に
> TXTファイルをドラッグドロップすると処理される、って
> 使い方でもいいのでしょうか?

それの方が簡単だし、融通が利きそうですね。
テキスト変換した後、そのファイルを特定のフォルダに保存する処理を
追加してやれば、動作的には同様になりますし。



To: Robo さん

> ところで、
> 私とここのページに来ていたWSHShell.Sendkeys "^%{DEL}"さん
> といっしょにHPを作りました。
> (HPではGaryと名乗っていますが)
> ぜひ相互リンクしてください。
> そのページではMHandという、
> HTAとVBSで作られたレジストリ変換ソフトの紹介です。

おお、お二人ともお若い。(感動するところが違うって?)
ぜひ、がんばってください。
(まだプログラムのダウンロードはできないみたいですね)

リンクは次回更新時に追加させていただきます。
こちらへのリンク、どうもありがとうございます。

Robo さん (y-koike@jcom.home.ne.jp) 2001年 11月 02日 22時 47分 10秒
URL:http://members.home.ne.jp/y-koike/index.html

はじめまして。Roboと申します。
ここはいつもは意見させていただいているのですが、
私には書くことがありませんのでご勘弁下さい。

ところで、
私とここのページに来ていたWSHShell.Sendkeys "^%{DEL}"さん
といっしょにHPを作りました。
(HPではGaryと名乗っていますが)
ぜひ相互リンクしてください。
そのページではMHandという、
HTAとVBSで作られたレジストリ変換ソフトの紹介です。

ぜひよろしくお願いします。

筑集眺餅 さん 2001年 11月 02日 20時 35分 25秒

To:寺島さん

ども。
面白そうな話題なので、茶々を入れるつもりもないのですが、
例えば、VBSのファイルか、そいつのショートカットの上に
TXTファイルをドラッグドロップすると処理される、って
使い方でもいいのでしょうか?

それで良ければ、VBSの中で、ドラッグドロップされたファイル
を受け取って処理する流れを書いてやればいいんですけど。
WScript.Arguments ってやつです。
ファイルのパス名の配列として処理すればいいです。
詳しい事は、むたぐちさんの解説で。

ダメ?


寺島 さん (terashima@dweb.co.jp) 2001年 11月 02日 11時 33分 46秒

管理人むたぐちさんありがとうございます。
やりたい内容は、VBSでテキストの置き換えを作ってみました。そこで適当なフォルダを作成して、その中にTXTファイルをコピーすると自動的にVBSが立上り実行する
ということですが可能なのでしょうか。よろしくお願いします。

土屋 さん 2001年 11月 02日 08時 36分 45秒

Dear むたぐち さん

> 私の代わりに管理人を名乗っていただけませんか?

私は四谷さん(時に一の瀬さん)なので、管理人さんはだめですよ。(またこの話している、、、)


ところで、私の場合、最近増えつつあるWSHのスクリプトを管理するのに、
WZ EDITORに付属するWZ FILERを使っているのですが、
これって、選択したファイルをすぐプレビューできるんですが、
Subなどの用語の色分けも表示されるので、便利です。
プレビューで確認してからWSHを実行できるわけです。(最近のお気に入りアプリ)

ただ、WZ EDITORでスクリプトを編集しながら、
編集中のスクリプトを実行するときにプラグインを使っていたのですが、
実行までに時間がかかって、編集だけはTeraPadにしてました。

ところが、WZ EDITORのマクロが簡単に使えることが判明しまして、
編集中のファイルを関連づけされたアプリで開く一行マクロを作ったら、
これがまた快適。。(実行速度が速い)
おすすめですよ。

ちなみに、WZ EDITORのマクロって、WindowsAPIやDLLファイルを直接操作できるとてつもない代物です。(このあたりは使いこなせませんが)

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

Windows板のWSHスレ、スクリプトスレ、どちらもdat落ち(泣)
てこ入れは失敗に終わりました。



To: 土屋 さん

いつもありがとうございます。
私の代わりに管理人を名乗っていただけませんか?



To: 寺島 さん

> 特定のフォルダを作成しておき、そのフォルダにTextファイルをコピーすると自動に内容が見ることが出来るやり方ないですか。特定のフォルダに何か入れることで処理する方法を教えてください。

「フォルダのカスタマイズ」→httファイルの編集、のことでしょうか?

Return