オートメーションとは

オートメーションを使って外部から OpenOffice.org を操作する
返信する
MoIshihara
記事: 337
登録日時: 6月 21, 2010, 6:52 am

オートメーションとは

投稿記事 by MoIshihara »

■ 1 ■ オートメーションって何?
・本来の意味で言えば自動化ですが、ここでは Windows で利用される COMオートメーションを指しています。
・説明を始めると、その歴史や意義、技術的な背景等かなり長くなってしまいますので、うまくまとめてあるマイクロソフト自身が説明した文章(の一部)を引用しておきます。

http://msdn.microsoft.com/ja-jp/library/cc482689.aspx

> なぜオートメーションなのか?
> オートメーションはもともと、アプリケーション(Word や Excel など)がスクリプティング言語を含むほかのアプリケーションに機能を公開するための方法として開発されました。その目的は、オートメーション クライアントにできるだけ負担をかけずに、プロパティにアクセスしたりメソッドを呼び出したりするシンプルな手段を提供することと、アクセス対象オブジェクトの型に関する情報がなくても呼び出しを行えるようにすることでした。
> インターフェイス用の C++ ヘッダで型情報を調べたり、関数テーブルのメソッドのオフセットを調べたり、そして特に、メソッドを正しく呼び出せるように正しい C++ スタック フレームを設定したりするのは簡単なことではありません。これらはすべて、テキスト ベースのインタープリタ言語ではとりわけ難しいのです。
> すべてのスクリプティング言語でこの難しいプログラミングをしなければならなかったとしたら、わずかな人しか COM オブジェクトにアクセスできなかったでしょう。しかしオートメーションによって、オブジェクトは単純化されたオートメーション インターフェイスを提供できるので、スクリプティング言語を使う開発者は IDispatch といくつかの COM API を覚えるだけで済むのです。

・簡単にアプリケーションを外部から操作する為の仕組みと言えると思います。

■ 2 ■ どんなプログラム言語が使えるの?
・オートメーションを実装、またはライブラリとして用意出来ている言語及び開発環境なら使えるはずです。

例えば、
・マイクロソフトの言語
 (VisualC++, VisualC#, VisualBasic等)
・エンバカデロの言語
 (C++Builder, Delphi等)
・多くのスクリプト
 (VBScript, Ruby(WIN32OLE), Perl(Win32), Python(Python for Windows Extensions), Lua(luacom)等)

・使った事が無いものがほとんどなので間違っているかもしれません。

■ 3 ■ で、具体的には?
・まず tani さんのトピックを参考にして下さい。
http://user.services.openoffice.org/ja/ ... f=19&t=186

・今回は、Writer を操作する VBScript を例として取り上げたいと思います。

コード: 全て選択

set oServiceManager = CreateObject("com.sun.star.ServiceManager")
set oDesktop = oServiceManager.createInstance("com.sun.star.frame.Desktop")
set oDoc = oDesktop.loadComponentFromURL("private:factory/swriter", "_blank", 0, array)
call oDoc.Text.setString("Hello OpenOffice.org")
・1行目で、OpenOffice のサービスに接続しています。
・2行目で、Desktop オブジェクトを生成しています。
 (Desktop オブジェクトとは、ドキュメントを表示するウィンドウの元締め的存在です、既に開いているドキュメントウィンドウにも Desktop オブジェクトからアクセス出来ます)
・3行目で、新規の Writer ドキュメントを生成しています。
 (loadComponentFromURL メソッドはファイルを開く事も出来ます)
・4行目で、ドキュメントのテキストオブジェクトに文字列を設定しています。

・4行のスクリプトで、既に文章が入力された新規のドキュメントを手に入れる事が出来ます。


・興味がわきましたでしょうか?
返信する

“オートメーション (COM) Windows専用”に戻る