伊藤清徳の垂直落下式ムーンサルトプレス

PerlとかPHPとかMySQLとか…がんばっても8割だ。
10月 31

VBS(WSH)で、コマンドラインアプリを実行して、その標準出力を得る方法。

いろいろ調べた結果、WScript.ShellのExecメソッドを利用する方法と、同じくRunを使う方法があることが判明。

今回は私がFilemaker用に開発したVBS実行プラグインでコマンドラインアプリの出力を得たいとおもっている。

Execメソッドは標準出力から直接データを得ることができるが、Runメソッドでは実行結果をいったんテキストファイルに保存し、その内容を取得する必要がある。

「じゃぁExecで良し!」と思ったら、全然良くなかった。Execメソッドを使うと、コマンドプロンプトが必ず開いてしまう。。。Filemakerで使うことを前提としているので、あまりに不都合だ。

ということで、Runメソッドで実装。

Function KIYO_VBS( dummy )

	Dim WshShell, oExec
	Set WshShell = CreateObject("WScript.Shell")
	exCommand = "実行するコマンド"

	Dim tmpFileName
	tmpFileName = "tmptmptmp.txt"

	Dim command
	command = "cmd /S /C " & exCommand & " > " & tmpFileName

	Dim result
	result = WshShell.Run(command, 0, true)

	Dim fso
	Dim TextFile
	Dim Text

	Set fso=CreateObject("Scripting.FileSystemObject")

	Dim Path
	Path = tmpFileName

	Dim fUNICODE
	Dim BOM
	Set TextFile = fso.OpenTextFile( Path )
	If Not TextFile.AtEndOfStream Then BOM = TextFile.Read(2)
	fUNICODE=BOM=Chr(&HFF)&Chr(&HFE) Or BOM=Chr(&HFE)&Chr(&HFF)
	Set TextFile = fso.OpenTextFile(Path,,,fUNICODE)

	If Not TextFile.AtEndOfStream Then
	  Text=TextFile.ReadAll()
	Else
	  Text="(Empty)"
	End If
	TextFile.Close

	fso.DeleteFile(tmpFileName)

	KIYO_VBS = Text
End Function

WScript.Echo( KIYO_VBS("") )

KIYOVBSプラグインで使うことを前提としているので、なんだかとっても変な書き方でごめんなさい。必要に応じて書き換えて使ってください。

6月 17

クライアントさんから先日リリースしたKIYOVBSが動作しないとご指摘頂きました。
多謝です。

環境によりVC++2008ランタイムが必要です。

インストールしてみて動作しないということであれば、
ランタイムをインストールしてみてください。

ランタイムはマイクロソフトサイトより
http://www.microsoft.com/downloads/details.aspx?familyid=A5C84275-3B97-4AB7-A40D-3802B2AF5FC2&displaylang=ja
こちらからダウンロードしてください。

6月 9

昨日公開した、FilemkerからVBSを実行するためのプラグイン
昨日の今日でいきなりバージョンアップです。、

JScriptを使えるようにしました。

当初、こういうのはGUI機能が標準で備わっている
VBScriptを中心に使えたほうがいいと思っていたのですが、
私は、どうにも、VB系言語の扱いが苦手なので、
どうしてもJScriptを使いたくなってしまったためのバージョンアップです。

あと、初版であった余計な機能は隠蔽しましたので、
少し計算式エディタが使いやすくなると思います。

ここからダウンロード

基本的な使い方は、VBSと同じです。
同梱の説明書をご覧ください。

まだまだしばらくベータ版です。

気に入った!という方はカンパくださいというスタンスでしばらく行きます。
あ、以前、私の作った別のカンパウェアで、
お菓子を物納してくれた方もいらっしゃいます。
そういったものも面白いと思っています。

次回バージョンは、
・環境がインストールされていればPerlScriptなども使えるよう
・スクリプト実行
を予定しています。

6月 7

FilemakerからVBScriptを実行するプラグインを作りました。
とりあえず、日曜大工で作ったので、実装が適当ながらも公開しておきます。

こちらからダウンロードしてください。

利用方法などは、同梱の「readme.txt」に書いてありますので、
必ず読んでから利用してください。

今のところあまりに実装が適当ですので、ベータ版です。
利用する人の責において利用してください。
(いずれ正式版になったときは有料になるかも??)

しばらく、気に入った人はカンパしてねというスタンスで行きます。



仕組みは、プラグイン中で、MS COMである「ScriptControl」をロードして、
そこへVBSを渡して実行するという仕組みになっています。

ですので、実行するVBSスクリプトの実装は、OS環境によって変わりますので、
その点はご了承ください。

ScriptControlを利用していますから、JScriptも実装できると思います。
次期バージョンでは、JScriptも実装します。

(JScriptは、マイクロソフトによるECMAScriptの実装で、Javascript1.5相当に独自拡張を加えたものです。)

JScript実行も実装しました!
※現在JScriptの実装は多くのバグが発見されていますので、おまけ機能と考えてください。



実装が適当とはいえ、手前味噌でアレですが、案外便利です(^-^;

Filemaker界隈では、VBSでプリンタ切り替えをしたりするのが常套手段になっているようですから、
この辺は実装次第ではどうにかなるのではないでしょうか。


今回のプラグインはクジラ飛行机さんの八角研究所での記事を参考に作りました。多謝です。

クジラ飛行机さんは、
なでしこ」という日本語を使って作成するユニークなプログラミング言語の作者で、
この「なでしこ」をFilemakerに組み込むプラグイン「なでしこプラグイン」の作者さんです。
最も尊敬し、目標としているプログラマの一人です。

なでしこプラグインは私も愛用しており、便利さも使いやすさも抜群で、命令も豊富です。

今回のプラグインは、
なでしこプラグインほど豊富な機能はいらない。
というような場合向けに作ったプラグインです。

クジラ飛行机さんの回し者ではないですが、
より便利な機能をお求めの方、
より簡単なスクリプト環境をお求めの方は、
「なでしこプラグイン」オススメです!



【追記:2009年6月8日】
ver.0.6公開 JScriptも使えるようになりました!余計な機能を隠蔽しました。


【追記:2009年6月17日】
プラグインを認識・動作させるにあたり、VC++2008ランタイムが必要です。
インストール方法は、同梱readme.txtに記述しております。

 ANZXCvg