OpenOfficeのプロセス起動
					OpenOffice.orgは「uno」という仕組みを利用して起動します。
					OpenOffice.orgというコンポーネントコンテキスト(OpenOffice.orgの基本となるプロセスのようです。)の中にサービスマネージャがただ1つあり、そのサービスマネージャがコンポーネント(CalcやWriterなど)起動します。そして1つコンポーネントコンテキスト内に複数のコンポーネントが動いているというイメージのようです。
					
					で、「実際に起動させるに具体的にはどうするの?」ということですが、
					
					
1.Bootstrapを使ってOpenOffice.orgの基本プロセスを起動する。
「uno.util.Bootstrap.bootstrap()」メソッドを使ってコンポーネントコンテキストオブジェクトが取得できます。「soffice.bin」「soffice.exe」がまだ起動されていない場合はこの操作によって起動されます。「soffice.bin」がメインのプロセスのようです。「soffice.bin」「soffice.exe」は複数のウィンドウが起動しても1つずつしか起動しません。2.サービスマネージャを取得する。
取得したコンポーネントコンテキストオブジェクトの「getServiceManager()」メソッドを使ってサービスマネージャを取得します。3.コンポーネントローダオブジェクトを生成する。
サービスマネージャの「createInstance("com.sun.star.frame.Desktop")」メソッドを実行してコンポーネントローダオブジェクトを取得します。これをコードで書くと下記のようになります。(ここでは、クラスのネームスペースもフルパスで書いています。)
//コンポーネントコンテキストの取得
unoidl.com.sun.star.uno.XComponentContext localContext = uno.util.Bootstrap.bootstrap();
//サービスマネージャの取得
unoidl.com.sun.star.lang.XMultiServiceFactory multiServiceFactory = (unoidl.com.sun.star.lang.XMultiServiceFactory)localContext.getServiceManager();
//コンポーネントローダの取得
unoidl.com.sun.star.frame.XComponentLoader componentLoader = (unoidl.com.sun.star.frame.XComponentLoader)multiServiceFactory.createInstance("com.sun.star.frame.Desktop");
					
					これで下ごしらえができましたので、OpenOffice.orgのアプリケーション(CalcやWriter)を起動します。下記のように実行すると、それぞれのアプリケーションのドキュメントオブジェクトが取得できます。
<< OpenOffice.org Calcの新規起動の場合 >>
unoidl.com.sun.star.lang.XComponent component = componentLoader.loadComponentFromURL("private:factory/scalc", "_blank", 0, new unoidl.com.sun.star.beans.PropertyValue[0])
unoidl.com.sun.star.sheet.XSpreadsheetDocument spredsheetDocument = (unoidl.com.sun.star.sheet.XSpreadsheetDocument)component;
					
                    ちなみにOpenOffice.org Calcに「Hello World!」を表示させたいなら下記のコードを書き足してください。
  					
//シートの取得
unoidl.com.sun.star.sheet.XSpreadsheets sheets = spredsheetDocument.getSheets();
unoidl.com.sun.star.sheet.XSpreadsheet sheet = (unoidl.com.sun.star.sheet.XSpreadsheet)sheets.getByName("表1").Value;
//セルに出力
sheet.getCellByPosition(0, 0).setFormula("Hello World!");
                    
					<< OpenOffice.org Writerの新規起動の場合 >>
unoidl.com.sun.star.lang.XComponent component = componentLoader.loadComponentFromURL("private:factory/swriter", "_blank", 0, new unoidl.com.sun.star.beans.PropertyValue[0]);
unoidl.com.sun.star.text.XTextDocument textDocument = (unoidl.com.sun.star.text.XTextDocument)component;
                    
				
			
 




