バージョン 6.3.3
 —  プログラミングガイド  —

インターフェイス IRunningObjects

このドキュメントでは、次のトピックについて説明します。


目的

このインターフェイスは、実行オブジェクトテーブル(ROT)に含まれるオブジェクトの名前の中で使用する反復子です。 ROT は Windows によって提供され、管理されるシステムテーブルです。 ROT を使用すると、ユーザーが現在アプリケーションで作業中のオブジェクトやドキュメントを、他のアプリケーションで使用可能にすることができます。

このテーブルに含まれている各オブジェクトは、"モニカ" という名前で識別されます。 モニカとは、特定の構文に従う名前です。 例えば、ファイルモニカは、ファイルシステム内でファイルを識別します。 読み取り可能な形のファイルモニカとは、c:\MyDoc.doc のように、完全パス名を使用した単なるファイル名です。 別の例として、インターネット内のリソースおよびそれにアクセスするために使用するプロトコルを識別する URL モニカがあります。 読み取り可能な形の URL モニカとは、単なる通常の URL です。例えば http://www.myorg.org/MyDoc.doc のようになります。

ROT 内のオブジェクトへのアクセスを試みるアプリケーションは、オブジェクトを識別するモニカを指定し、そのオブジェクトへのインターフェイスポインタ(オブジェクトハンドラ)を受け取ります。

ユーザーが現在 ROT で作業中のオブジェクトやドキュメントが、アプリケーションによって入力されることもよくあります。

例:

ドキュメント c:\MyDoc.doc を Microsoft Word で開くと、このドキュメントの名前である c:\MyDoc.doc とこのドキュメントへのインターフェイスポインタが Microsoft Word によって ROT に入力されます。

Natural スタジオセッションが開始すると、このセッションのオートメーションルートインターフェイスである INatAutoStudio が Natural スタジオによって ROT に入力されます。 インターフェイスは次のような構造の名前で識別されます。

NaturalStudio/<version>/<userid>/>processid>

例:

NaturalStudio/n.n/SCULLY/42

n.n は製品バージョンです。

他のアプリケーションはこの名前を指定することによって ROT 内のオートメーションルートインターフェイスを取得し、これを使用して Natural スタジオセッションにアクセスできます。

インターフェイス IRunningObjects を使用すると、ROT に現在含まれているすべてのオブジェクトの名前の中で反復することができます。 見つかった名前は、その後メソッド INaturalXUtilities::BindToObject で使用して、対応するオブジェクトへのインターフェイスポインタ(オブジェクトハンドル)を取得できます。

例:

次のサンプルプログラムでは、文字 n.n が Natural 製品バージョンを表します。 このサンプルプログラムを実行する場合は、この文字を現在の Natural 製品バージョンで置き換えてください。

define data
local
1 #util handle of object
1 #studio handle of object
1 #objects handle of object
1 #progs handle of object
1 #prog handle of object
1 #rot handle of object
1 #ro (a) dynamic
end-define
*
* Create an instance of the Utilities class.
create object #util of 'SoftwareAG.NaturalX.Utilities.4'
if #util eq null-handle
  escape routine
end-if
*
* Retrieve the running objects table.
send 'GetRunningObjects' to #util return #rot
if #rot eq null-handle
  escape routine
end-if
*
* Iterate across the running objects table.
repeat
  send 'Next' to #rot return #ro
  if #ro eq ' '
    escape bottom
  end-if
* If we hit a running Natural Studio session,...
  if substring(#ro,1,17) eq 'NaturalStudio/n.n'
*   ...we access it,...
    send 'BindToObject' to #util
    with #ro (ad=o) return #studio
*   ...open a Program Editor in that session...
    #objects := #studio.objects
    #progs := #objects.programs
    send 'Add' to #progs
    with 1009 return #prog
*   ...and display the identifier of this session in the editor.
    compress 'This is' #ro to #ro
    #prog.source := #ro
  end-if
end-repeat
*
end

Top of page

メソッド

次のメソッドを使用できます。

Next

ROT 内の次のオブジェクトの名前を返します。 この名前は、その後メソッド INaturalXUtilities::BindToObject で使用して、対応するオブジェクトへのインターフェイスポインタ(オブジェクトハンドル)を取得できます。

パラメータ

名前 Natural タイプ 変形タイプ 注釈
戻り値 A VT_BSTR  
戻り値

ROT 内の次のオブジェクトの名前。

Reset

反復子を初期状態にリセットします。 Reset を呼び出した後は、その後の Next の呼び出しによって、ROT 内の最初のオブジェクトの名前が返されます。

Top of page