*ServiceManager [#vf246a21]
主にさまざまなサービスをインスタンス化するために利用されるサービス。インターフェースは次のようなものがよく利用されます。
-com.sun.star.lang.XMultiComponentFactory
-com.sun.star.lang.XMultiServiceFactory
ServiceManager の実体は /singletons/com.sun.star.lang.theServiceManager singleton です。
**ServiceManager [#k184c697]
OOo Basic ではランタイム関数を利用してアクセスします。
oSmgr = GetProcessServiceManager()
***サービスのインスタンス化 [#ka9946a5]
OOo Basic では CreateUnoService ランタイム関数を利用することが多いのであまり利用されませんが、インスタンス化時に引数が必要なときには利用することもあります。
oPointer = oSmgr.createInstance("com.sun.star.awt.Pointer")
oFilePicker = createInstanceWithArgument( _
"com.sun.star.ui.dialogs.FilePicker", nAny )
***ComponentContext [#c07b6340]
デフォルトの ComponentContext にアクセスする場合に利用します。OOo Basic では代わりに GetDefaultContext ランタイム関数がよく利用されます。
oContext = oSmgr.DefaultContext
oContext = GetDefaultContext()
***サービス名 [#me6b3b17]
利用可能なサービス名を AvailableServiceNames プロパティから取得できます。このサービス名のリストはすべて createInstance メソッドや CreateUnoService ランタイム関数でインスタンス化して利用できます。
Sub WriteServiceNames
sServiceNames = GetProcessServiceManager().getAvailableServiceNames()
oDoc = StarDesktop.loadComponentFromURL( _
"private:factory/scalc","_blank",0,Array())
oSheet = oDoc.getSheets().getByIndex(0)
For i = 0 To UBound(sServiceNames)
oSheet.getCellByPosition(0,i).String = sServiceNames(i)
Next i
End Sub