次の方法で共有


Connected プロパティ

[Microsoft エージェントは Windows 7 の時点で非推奨となり、以降のバージョンの Windows では使用できない可能性があります。]

説明

現在のコントロールが Microsoft エージェント サーバーに接続されているかどうかを示す値を取得または設定します。

構文の

*agent.*Connected [ = boolean]

部分 形容
ブール コントロールが接続されているかどうかを示すブール式。 True コントロールが接続されています。

備考

多くの場合、コントロールを指定すると、Microsoft エージェント サーバーとの接続が自動的に作成されます。 たとえば、Web ページの <OBJECT> タグに Microsoft エージェント コントロールの CLSID を指定すると、サーバー接続が自動的に開き、ページを終了すると接続が閉じます。 同様に、フォーム上のコントロールを削除できる Visual Basic やその他の言語の場合、プログラムを実行すると自動的に接続が開き、プログラムを終了すると接続が閉じます。 サーバーが現在実行されていない場合は、自動的に起動します。

ただし、実行時にエージェント コントロールを作成する場合は、Connected プロパティを使用して、サーバーへの新しい接続を明示的に開く必要がある場合もあります。 たとえば、Visual Basic では、New キーワード (または CreateObject 関数) で Set ステートメントを使用して、実行時に ActiveX オブジェクトを作成できます。 これによりオブジェクトが作成されますが、サーバーへの接続が作成されない場合があります。 次の例に示すように、Microsoft エージェントのプログラミング インターフェイスを呼び出すコードの前に、Connected プロパティを使用できます。

   ' Declare a global variable for the control
   Dim MyAgent as Agent

   ' Create an instance of the control using New
   Set MyAgent = New Agent

   ' Open a connection to the server
   MyAgent.Connected = True

   ' Load a character
   MyAgent.Characters.Load "Genie", " Genie.acs"

   ' Display the character
   MyAgent.Characters("Genie").Show

この手法を使用してコントロールを作成しても、エージェント コントロールのイベントは公開されません。 Visual Basic 5.0 (以降) では、プロジェクトの参照にコントロールを含めることでコントロールのイベントにアクセスし、変数宣言で WithEvents キーワードを使用できます。

   Dim WithEvents MyAgent as Agent

   ' Create an instance of the control using New
   Set MyAgent = New Agent

WithEvents を使用して、実行時にエージェント コントロールのインスタンスを作成すると、Microsoft エージェント サーバーとの接続が自動的に開きます。 そのため、Connected ステートメントを含める必要はありません。

エージェント オブジェクトに対して作成したすべての参照 (IAgentCtlCharacterEx、IAgentCtlCommandEx など) を解放することで、サーバーへの接続を閉じます。 エージェント コントロール自体への参照も解放する必要があります。 Visual Basic では、変数を Nothingに設定することで、オブジェクトへの参照を解放できます。 文字を読み込んだ場合は、文字オブジェクトを解放する前にアンロードします。

   Dim WithEvents MyAgent as Agent
   Dim Genie as IAgentCtlCharacterEx
   
   Sub Form_Load

   ' Create an instance of the control using New
   Set MyAgent = New Agent

   ' Open a connection to the server
   MyAgent.Connected = True

   ' Load the character into the Characters collection
   MyAgent.Characters.Load "Genie", " Genie.acs"

   ' Create a reference to the character
   Set Genie = MyAgent.Characters("Genie")

   End Sub

   Sub CloseConnection

   ' Unload the character
   MyAgent.Characters.Unload "Genie"

   ' Release the reference to the character object
   Set Genie = Nothing

   ' Release the reference to the Agent control
   Set MyAgent = Nothing
   End Sub

手記

コンポーネントが追加された参照を解放して、サーバーへの接続を閉じることはできません。 たとえば、<OBJECT> タグを使用してコントロールを宣言する Web ページや、フォーム上のコントロールを削除する Visual Basic アプリケーションでは、サーバーへの接続を閉じることはできません。 すべてのエージェント参照を解放するとエージェントのワーキング セットが減少しますが、接続は次のページに移動するか、アプリケーションを終了するまで保持されます。