◆ [Delphi] スクリプト言語を利用し、ユーザによる処理実装を実現する方法 その1 : 実現方法の調査結果
どーもボキです。

世の中の処理系アプリには、
ユーザがスクリプト言語を記述することで処理機能を拡張できるもの多々ある。(例.Excelのマクロ機能)

そのスクリプト言語も、
C言語ベース、VBスクリプト+独自処理、完全なオリジナル言語 と多種多様。

EXEをスクリプト言語で拡張するメリット、それはコンパイル不要で機能拡張が出来ることだ。
コンパイルが不要になれば、拡張作業する場所(PC)を選ばない。拡張処理の修正や拡張もその場で出来る。
既存のコンポーネントを利用してスクリプト処理機能を実装できれば、自前で逆ポーランド記法処理をする必要もないわけだ。

実現方法が不思議でしょうがなかったスクリプト処理拡張機能、
色々調べているうちにその実装方法が徐々にわかってきた。


まずは、
Pascalベースのスクリプト言語拡張コンポーネントを利用する方法
 Project-PPA
 Pascalベースのスクリプトで拡張が可能になるので、Delphi使いには非常に扱いやすい。
 PPA = Poor Pascal for Application ということもあり、機能面ではすこし不足気味か?

次は本命、
Microsoft Script Control の ActiveX を利用する方法
 ・Microsoft Script Control の ActiveXコンポーネントの作成&インストール方法
  DelFusaBlog DelphiでVBScriptを使う(もうちょっとちゃんとした記事に...)
 ・サンプルプログラム
  DelFusaBlog VBScriptとの連携めんどうです。
 ・Delphi EXE と VBスクリプト 間のデータやりとり事例
  DelFusaBlog DelphiとVBScriptとの連携、VBScriptの関数に値渡したり、戻り値を受け取ったりする

 この方法なら、VBスクリプトの実装が可能になる。
 VBスクリプトが利用できるので、PPAより機能&信頼 の両面で勝っているだろう。

どちらもまだ使いこなせてはいないので、これから詳細を調べていく予定。
[PR]
by yozda | 2009-09-30 01:24 | プログラミング | Trackback | Comments(3)
トラックバックURL : http://yozda.exblog.jp/tb/9035531
トラックバックする(会員専用) [ヘルプ]
Commented by fullone at 2009-09-30 08:07
専門的に言うと、エクセルのマクロは、スクリプト言語を用いた拡張機能なんだ。
マクロのようなパッチ的なプログラムって、エクセル以外でもできるんだねぇ。
Commented by yozda at 2009-09-30 15:22
> パッチ的なプログラムって、エクセル以外でもできるんだねぇ。

出来るよ。メモ帳さえあれば、ある程度のプログラムは組めるよ。

下の二行をテキストファイルにペーストして、拡張子を「vbs」で保存。
んで、実行すればPCへのログイン名が表示される。
' -------------------------------------------------------------
Set WshNetwork = WScript.CreateObject("WScript.Network")
WScript.Echo WshNetwork.UserName
' -------------------------------------------------------------

エクセルのマクロは、このVBScriptを内部で呼び出してあるのよ。
Word や Outlook にも同じマクロ機能があるよね。

異なるEXE間でVBScriptを呼び出してるってことは、
つまり、VBScriptを外部EXEから呼び出す仕組みがあるだろうと思ったわけ。

現に、VBScript に 独自文法を追加して、スクリプト拡張機能を実装しているアプリがあるし。
そのアプリがVBScriptのコード解釈まで0から作っているわけもないだろうから、
どーにかしたら、VBScript を EXEに組み込めるだろうと思ってたわけよ。
Commented by fullone at 2009-10-01 23:48
なるほど。
少しだけ分かった。 
便利だね。
<< [Delphi] スクリプト言... [ソフト] Movica ~分... >>