Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
[Microsoft Agent, Windows 7 itibariyle kullanım dışıdır ve sonraki Windows sürümlerinde kullanılamayabilir.]
Microsoft Agent hizmetlerine bir Java uygulamasından da erişebilirsiniz. Microsoft Agent arabirimleri aracılığıyla erişilebilen işlevlerin çoğu, referansla geçirilen parametreler aracılığıyla değerleri döndürür. Bu parametreleri Java'dan geçirmek için kodunuzda tek öğeli diziler oluşturmanız ve bunları uygun işleve parametre olarak geçirmeniz gerekir. Microsoft Visual J++ kullanıyorsanız ve Microsoft Agent sunucusunda Java Tür Kitaplığı Sihirbazı'nı çalıştırdıysanız, dizi bağımsız değişkenlerini gerektiren işlevleri gözden geçirmek için summary.txt dosyasına bakın. Yordam C'dekine benzer; IAgentEx arabirimini kullanarak sunucunun bir örneğini oluşturur ve ardından karakteri yüklersiniz:
private IAgentEx m_AgentEx = null;
private IAgentCharacterEx m_Merlin[] = {null};
private int m_MerlinID[] = {-1};
private int m_RequestID[] = {0};
private final String m_CharacterPath = "merlin.acs";
public void start()
{
// Start the Microsoft Agent Server
m_AgentEx = (IAgentEx) new AgentServer();
try
{
Variant characterPath = new Variant();
characterPath.putString(m_CharacterPath);
// Load the character
m_AgentEx.Load(characterPath,
m_MerlinID,
m_RequestID);
}
HTTP üzerinden erişilen uzak bir konumdan, örneğin bir web sitesinden, karakterler yüklenirken prosedür biraz farklıdır. Bu durumda Load yöntemi zaman uyumsuzdur ve E_PENDING (0x8000000a) için COM özel durumu oluşturur. Bu özel durumu yakalamanız ve aşağıdaki işlevlerde olduğu gibi doğru şekilde işlemeniz gerekir:
// Constants used in asynchronous character loads
private final int E_PENDING = 0x8000000a;
private final int NOERROR = 0;
// This function loads a character from the specified path.
// It correctly handles the loading of characters from
// remote sites.
// This sample doesn't care about the request id returned
// from the Load call. Real production code might use the
// request id and the RequestComplete callback to check for
// a successful character load before proceeding.
public int LoadCharacter(Variant path, int[] id)
{
int requestid[] = {-1};
int hRes = 0;
try
{
// Load the character
m_AgentEx.Load(path, id, requestid);
}
catch(com.ms.com.ComException e)
{
// Get the HRESULT
hRes = e.getHResult();
// If the error code is E_PENDING, we return NOERROR
if (hRes == E_PENDING)
hRes = NOERROR;
}
return hRes;
}
public void start()
{
if (LoadCharacter(characterPath, m_MerlinID) != NOERROR)
{
stop();
return;
}
// Other initialization code here
.
.
.
}
Ardından yöntemlerine erişmenizi sağlayan IAgentCharacterEx arabirimini edinin:
// Get the IAgentCharacterEx interface for the loaded
// character by passing its ID to the Agent server.
m_AgentEx.GetCharacterEx(m_MerlinID[0], m_Merlin);
// Show the character
m_Merlin[0].Show(FALSE, m_RequestID);
// And speak hello
m_Merlin[0].Speak("Hello World!", "", m_RequestID);
Benzer şekilde, olayların bildirilmesi için IAgentNotifySink veya IAgentNotifySinkEx arabirimini uygulamanız ve bu tür bir nesne oluşturmanız ve kaydetmeniz gerekir:
...
// Declare an Agent Notify Sink so that we can get
// notification callbacks from the Agent server.
private AgentNotifySinkEx m_SinkEx = null;
private int m_SinkID[] = {-1};
public void start()
{
...
// Create and register a notify sink
m_SinkEx = new AgentNotifySinkEx();
m_AgentEx.Register(m_SinkEx, m_SinkID);
…
// Give our notify sink access to the character
m_SinkEx.SetCharacter(m_Merlin[0]);
...
}
Bir Java uygulamasından Microsoft Agent'a erişmek için, uygulamayla yüklediğiniz Java sınıfları oluşturmanız gerekir. Örneğin, bu dosyaları oluşturmak için Visual J++ Java Tür Kitaplığı Sihirbazı'nı kullanabilirsiniz. Uygulamayı bir web sayfasında barındırmayı planlıyorsanız, sayfayla birlikte indirilen oluşturulan sınıf dosyaları dahil olmak üzere imzalı bir Java CAB oluşturmanız gerekir. Sınıf dosyaları, Java korumalı alanının dışında yürütülen bir COM nesnesi olduğundan Microsoft Agent Server'a erişmek için gereklidir.