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

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

いろいろ仕事があったり、足をケガしたり、なんやかんやで、最近なでしこのFilemakerプラグインを使えてなかったのですが、先月久々に大きくバージョンアップがあったようなので使ってみました。


プラグイン自体に「vnako()」と「vnakofile()」関数が追加になっていました。

・vnako
Filemakerとは別プロセスでなでしこ本体のランタイムみたいなものを起動して、そこでなでしこスクリプトを起動する。

・vvakofile
vnako関数は引数の中に直接スクリプトを記述してそれを起動しますが、こちらは、引数になでしこスクリプトが記述されたテキストファイルのパスを書いて、それを起動するというもの。

別プロセスなので、他の従来の関数とは違い、返り値を得ることができません。
またプロセス終了を待たないので、スクリプト中に記述した場合は、起動だけして、そのままスクリプトは順に進められます。
終了を待つ関数と待たない関数があると良かったなぁと思ったり。特にvankofile。

別プロセスなので、MS-Office操作などを行うときは、各種セキュリティのブロックに配慮がいるかもです。ランタイム配布や別の人のPCで動かすときなんかとくに。


こちらでなでしこプラグインのダイアログ各種がFMのウインドウハンドルと関連付けられていないという話をしたのですが、関連付けがされて、FMのウインドウの後ろに回ってしまうということがなくなったようです!これは個人的にかなり嬉しいです!(全部のダイアログについて調べてはいませんが)



その他、

FMプラグイン版だとブラウザ要素クリック命令があるとうまく動きません。。。。これができれば、オープンのJS製WYSIWYGライブラリを使って、Filemaker上でWYSIWYGエディタが実現できるのですが・・・。近いうちに動くといいなぁ。

前からの懸案だった、メール周りの動作はこれからチェックします。

ということでVIVA!なでしこ!!

12月 21

以前、こちらの記事で、なでしこプラグインを利用して、Filemaker内のウインドウの最小化ボタンや閉じるボタンを無効にするお話を書いたのですが、「FMアプリウインドウ自体はできないの?」というコメントを頂戴しました。

確かにそれも価値があるかも。ということで、作ってみました。

ここからダウンロードして下さい。

仕組みは以前と一緒で、なでしこからWin32APIを呼び出してウインドウスタイルを変更しています。

使い方は同梱のテキストファイルを読んでください。なお、以前のFM内のウインドウスタイルを変更するものを改造しているので、スクリプト名が重複しています。同時利用される際は、リネームするなど適宜変更して利用してくださいね。

11月 25

Filemakerなでしこプラグイン関連連投です。



今回やってみたのは、Win32APIでメッセージボックスを出す方法です。

FMにもカスタムダイアログあるじゃねぇかって、、、確かにそうなんですけど、Windows標準のダイアログじゃないので、なんかイケてないなぁって・・・。FM使いの人の中で同じコトを思った人絶対いると思います。

じゃぁなでしこに「言う」命令があるじゃねぇかって、、、こちらも確かにそうなんですけど、なでしこプラグインの仕様では、「言う」命令で出せるダイアログはオーナーがFMのウインドウハンドルになっていなくて、ダイアログのボタンを押さずに、FMのウインドウのどこかをクリックしてしまうと、ダイアログがウインドウの後ろに隠れてしまって、気がつかないとハングアップしているように見えてしまうんですよ。

ということで、
・FMでWindows標準のメッセージボックスを出す。
・ダイアログはFMのウインドウがオーナーとなっている。
ということを目標に作っています。




はい、いつものようにダウンロードはこちらから。

今回も説明は割愛・・・。申し訳ないです。時間がありません・・・。



なでしこのオープンファイルダイアログなんかも、FMがオーナーになっていないので同様の不都合が生じるので、Win32APIでやろうかなぁと思ってたら、構造体の定義が面倒で、今日は時間切れ。またそのうち。

その前に、なでしこプラグイン側で対応してくれないかなーーーとちょっと思ってたり・・・。

11月 21

ひさびさにFilemakerのなでしこプラグインについてのお話。



Filemakerは、他のソフトで言うところのマクロに値するスクリプトを駆使して、アプリケーションを作り上げるデータベースソフトです。ゆえに、開発者が意図しない利用者の動作手順は、往々にして不具合に直結しがち・・・。

ウインドウ内の「閉じる」「最大化」「最小化」ボタンもその一端じゃないでしょうか?私の個人的な経験ではそういった問題は結構多いです。

そこで、なでしこプラグインで、これらのボタンを有効化|無効化できる仕組みを作ってみました。

↑これが通常状態。これを、、、

↑こんな風に変えれます。最小化と閉じるボタンを無効にしています。

どうですか?使いようによっては便利でしょ?(・・・とは言いつつ、実はすでに同様のプラグインがどっかにあったとは記憶していますが・・・)



せっかくなので、使っていただけるようサンプルを用意しました。

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

使い方は同梱のテキストをお読みください。




仕組みだけ説明しますと、なでしこがWin32APIを実行できるようになっているので、これを使って、ウインドウのスタイルを変化させています。

FilemakerでWin32APIを実行できるというのは、結構強みだと思います。そういう意味でも私は、なでしこプラグインが大好きなんだなー。(バグはご愛嬌ということで・・・笑)

細かい説明は難しい話になってしまい、FMのユーザー向けじゃないのなかぁ・・・という勝手な言い訳をさせてください。(本当は書くのが面倒なだけ・・・)

サンプルをダウンロードしてもらえれば、ソースは丸分かりですから、なでしことWin32APIが少し分かる人なら、なんとなく理解ができるはずです。改変も許可していますから、ご自由にお使いください。

11月 15
FM-Chubu
icon1 admin | icon2 Filemaker | icon4 11 15th, 2009| icon3No Comments »

ファイルメーカーユーザーグループ中部というグループの勉強会に行ってまいりました。

FMに関しては私は専門というわけではないので、私なぞのレベルの10段階とか100段階とか上の方々がいらっしゃるのかと内心ガチガチに緊張しながら行ったのですが、中にはそういった方もいらっしゃいましたし、業務でちょっと触るだけだよって方もいらっしゃいました。本当にさまざまな人が集まっていて、なかなかいいグループじゃないかと思います。また、FMの汎用さを物語っているのかなという気がします。

何名かの方々は、このブログをご覧いただいているようで、普段私はWCAN界隈や、オープンソース界隈で生息するWEBプログラマなので、専門が違い非常に恐縮ですが、今後ともよろしくお願いいたします。

東海近県でFMを使っている方、今度参加してみませんか?

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に記述しております。

5月 30

最近、Filemakerの内容をエクセルへ書き出すということが増えてきて、
単純にエクセルファイルを出力するだけなら、FM単体でできるんですが、
罫線や計算式がすでに設定されたテンプレートファイルを用意しておいて、
そこへFMのDB内容を流し込むということはFM単体ではできません。

ということで、
ODBCでFMDBに接続

適切なSQLを発行してエクセルに出力したい内容を得る

エクセルをOLEとかで制御
という手段でエクセルファイルを出力したい。

VBAとかWSHを使えばできるんでしょうけど、
ADOでFMに接続して、エクセル起動して、
そのためにはDLLを呼び出してfasdlkdfjpaodfi:aoあうdsf…
と、まぁとてもめんどくさいわけですよ。

そこで登場するのがわれらがなでしこ
特に何かライブラリをインクルードしたりすることなく、
標準でADO接続したり、エクセル制御したりということができるようになっているので、
リファレンスどおりの命令文を使えば、
大体実現可能です。

が、ひとつ問題があります。
以前、なでしこからODBC接続で
FMのDBへ接続する方法という記事を書いたのですが、
ここを読んでもらえば分かるとおり、
FMへの接続はちょっと特殊です。

接続の下準備とか、SQL文の仕様はどうにもならないにしても、
接続するのに毎回UTFエンコードして,,ウダウダウダと接続文字列を作るのはめんどくせぇよぉ。
ってことで、FMのDBへODBC接続するための
なでしこ関数を作りました。

ここからダウンロードして下さい

使い方は、ダウンロードファイルに書いてあります。

※改変OKです。自作ソフトにバンドルの配布や販売もOKです。
 自己の全責任においてご利用ください。
※すみませんが、この関数のみの、再配布や再販は行わないで下さい。
※DB接続時、ハンドルをとらない仕組みなっているので、
 必要な人は、改造して利用してください。
※なでしこプラグインは未テストです。

« Previous Entries

 ANZXCvg