MRI の起動の仕方 
MRI はどんな言語からも呼び出すことができ、またアドオンメニューからも実行できます。
言語から利用 
あなたが利用したい言語から MRI を利用したいとき、"mytools.Mri" サービスをインスタンス化してください。そして、そのオブジェクトからターゲットオブジェクトを引数として inspect メソッドを呼び出してください。
inspect メソッドは com.sun.star.beans.XIntrospection インターフェースのメンバーであり、利用する言語によってはそのインターフェースをクエリーする必要があります。com.sun.star.beans.Introspection サービスから取得できる普通の inspect メソッドと同様に MRI の inspect メソッドも com.sun.star.beans.XIntrospectionAccess インターフェースを返します。
UNO オブジェクト以外のものを inspect メソッドに渡しても MRI は正しく動作しません。
com.sun.star.beans.XIntrospectionAccess inspect( [in] any aObject )
OpenOffice.org Basic 
OOo Basic 用に MRILib ライブラリが付属しています。MRILib ライブラリにある Mri サブルーチンを利用すると、OOo Basic から次のように簡単に MRI を利用できます。
Mri ThisComponent
Mri の引数はオプションです。引数を与えずに呼び出したときには OOo Basic のランタイム関数 StarDesktop を利用してデスクトップオブジェクトを引数として MRI を起動します。
Mri '
Mri を最初に呼び出す前に MRILib ライブラリを読み込んでおく必要があります。
Globalscope.BasicLibraries.LoadLibrary("MRILib")
また、Mri サブルーチンを利用せずに一般的に MRI を実行するには次のようにします。
oMRI = CreateUnoService("mytools.Mri")
oMRI.inspect(ThisComponent)
プログラムのコントロールは Mri サブルーチンが実行された後に戻ってきます。そのため、ターゲットのオブジェクトをよく調べたいときや一時的に作成されたオブジェクトのときには Basic IDE のデバッガのブレークポイントを利用する必要があります。
MRI に渡したターゲットが開かれているドキュメントの一部の時には Basic のコードが終了した後にもターゲットは生きているため、引き続き MRI で情報を取得できます
BeanShell から利用 
This is an example of how to use MRI from BeanShell macros.
import com.sun.star.uno.UnoRuntime;
import com.sun.star.uno.XComponentContext;
import com.sun.star.lang.XMultiComponentFactory;
import com.sun.star.beans.XIntrospection;
//import com.sun.star.beans.XIntrospectionAccess;
XComponentContext xContext = XSCRIPTCONTEXT.getComponentContext();
XMultiComponentFactory xMCF = xContext.getServiceManager();
try {
oMRI = xMCF.createInstanceWithContext( "mytools.Mri", xContext );
} catch (com.sun.star.uno.Exception e) {
System.out.println( e.Message );
}
XIntrospection xIntrospection = (XIntrospection) UnoRuntime.queryInterface(
XIntrospection.class, oMRI );
Object oDoc = XSCRIPTCONTEXT.getDocument();
Object oIAccess= xIntrospection.inspect(oDoc);
JavaScript から利用 
下記の例では JavaScript のマクロから MRI を利用します。
importClass(Packages.com.sun.star.uno.UnoRuntime);
importClass(Packages.com.sun.star.beans.XIntrospection);
oDoc = XSCRIPTCONTEXT.getDocument();
xContext = XSCRIPTCONTEXT.getComponentContext();
xMCF = xContext.getServiceManager();
oMRI = xMCF.createInstanceWithContext("mytools.Mri", xContext);
xIntrospection = UnoRuntime.queryInterface(XIntrospection, oMRI);
xIntrospection.inspect(oDoc);
Java から利用 
BeanShell と同じようにします。
import com.sun.star.beans.XIntrospection;
try {
Object oMRI = xMultComponentFactory.createInstanceWithContext(
"mytools.Mri", xContext );
XIntrospection xIntrospection = (XIntrospection) UnoRuntime.queryInterface(
XIntrospection.class, oMRI);
xIntrospection.inspect(oShape);
} catch (com.sun.star.uno.Exception e) {
System.err.println();
}
Python 
Python マクロから MRI を利用する方法です。
def Mri_test():
ctx = XSCRIPTCONTEXT.getComponentContext()
document = XSCRIPTCONTEXT.getDocument()
mri(ctx,document)
def mri(ctx, target):
mri = ctx.ServiceManager.createInstanceWithContext(
"mytools.Mri",ctx)
mri.inspect(target)
Python-UNO ブリッジからも次のようにして利用できます。
import uno
def connect():
try:
localctx = uno.getComponentContext()
resolver = localctx.ServiceManager.createInstanceWithContext(
"com.sun.star.bridge.UnoUrlResolver",localctx)
ctx = resolver.resolve(
"uno:socket,host=localhost,port=2002;urp;StarOffice.ComponentContext")
except:
return None
return ctx
def mri(ctx, target):
mri = ctx.ServiceManager.createInstanceWithContext(
"mytools.Mri",ctx)
mri.inspect(target)
if __name__=="__main__":
ctx = connect()
if ctx == None:
print "Failed to connect."
import sys
sys.exit()
smgr = ctx.ServiceManager
desktop = smgr.createInstanceWithContext("com.sun.star.frame.Desktop",ctx)
model = desktop.loadComponentFromURL("private:factory/scalc","_default",0,())
mri(ctx,model)
ctx.ServiceManager
VB Script 
MRI は VB Script からも利用できます。
Set oSM = WScript.CreateObject("com.sun.star.ServiceManager")
Set oDesktop = oSM.createInstance("com.sun.star.frame.Desktop")
Dim aArgs()
Set oDoc = oDesktop.loadComponentFromURL("private:factory/scalc","_blank",0,aArgs)
Set oMRI = oSM.createInstance("mytools.Mri")
oMRI.inspect(oDoc)
ooRexx 
ooRexx (with Vienna BSF4Rexx).
/* */
xScriptContext = uno.getScriptContext()
xContext = xScriptContext~getComponentContext()
xServiceManager = xContext~getServiceManager()
oDoc = xScriptContext~getDocument
oMRI = xServiceManager~createInstanceWithContext("mytools.Mri", xContext)
oMRI~XIntrospection~inspect(oDoc)
::requires UNO.CLS
アドオンメニューからの起動 
MRI はメニューからも利用できます。MRI をインストールすると、ツール - アドオンメニューに MRI のメニューが追加されます。
"MRI" メニューは現在のドキュメントを OOo Basic で書くと次のようなオブジェクトをターゲットとして実行します。
oDesktop = CreateUnoService("com.sun.star.frame.Desktop")
oTarget = oDesktop.getCurrentComponent()
Mri oTarget
Add-Ons メニューから選択範囲と 
メニューからツール - アドオン - "MRI <- selection" を選択すると現在のドキュメントの選択オブジェクトをターゲットオブジェクトとして MRI ウィンドウを開きます。 OOo Basic で記述すると次のようになります。
oDesktop = CreateUnoService( "com.sun.star.frame.Desktop" )
oTarget = oDesktop.CurrentComponent.getCurrentSelection()
Mri oTarget ' using Mri subroutine of the MRILib
'or
oMri = CreateUnoService("mytools.Mri")
oMri.inspect(oTarget)
このメニューを利用してドキュメント上の選択できるオブジェクトの情報を簡単に取得できます。たとえば Writer ではテキスト、テキストオブジェクトなど、Calc ではセルやセル範囲や図形描写オブジェクトなどです。
図形描写オブジェクトを選択して選択範囲をターゲットとして MRI を呼び出すと図形描写オブジェクトは com.sun.star.drawing.SvxShapeCollection サービスにまとめられています。そのときには、getByIndex メソッドにより取得したいオブジェクトを取得します。そのほかの選択可能なオブジェクトは同様に振舞います。
独自のメニュー項目の作成 
MRI のメニュー項目を追加、またはツールバーボタンへ追加したいときには次の URL を使用してください。
service:mytools.Mri?current
"current" 引数が与えられると MRI はターゲットとして Desktop から CurrentComponent を取得します。
Desktop の CurrentComponent から選択オブジェクトをターゲットとするときは次の URL を使用します。
service:mytools.Mri?selection
コマンドラインから起動 
ターミナルなどコマンドラインから起動するには次のようにします。
>soffice service:mytools.Mri?none