Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
[Der Microsoft-Agent ist ab Windows 7 veraltet und in nachfolgenden Versionen von Windows möglicherweise nicht verfügbar.]
Nachdem Sie über einen Zeiger auf die IAgentEx-Schnittstelle verfügen, können Sie die Load-Methode verwenden, um ein Zeichen zu laden und dessen IAgentCharacterEx-Schnittstelle abzurufen. Es gibt drei verschiedene Möglichkeiten für den Ladepfad eines Zeichens. Der erste ist mit Microsoft Agent 1.5 kompatibel, wobei der angegebene Pfad der vollständige Pfad und der Dateiname einer Zeichendatei ist. Die zweite Möglichkeit besteht darin, nur den Dateinamen anzugeben. In diesem Fall sucht der Agent in seinem Chars-Verzeichnis. Die letzte Möglichkeit besteht darin, einen leeren Variant-Parameter anzugeben, der dazu führt, dass das Standardzeichen geladen wird.
// Create a variant to store the filename of the character to load
const LPWSTR kpwszCharacter = L"merlin.acs";
VariantInit(&vPath);
vPath.vt = VT_BSTR;
vPath.bstrVal = SysAllocString(kpwszCharacter);
// Load the character
hRes = pAgentEx->Load(vPath, &lCharID, &lRequestID);
// Get its IAgentCharacterEx interface
hRes = pAgentEx->GetCharacterEx(lCharID, &pCharacterEx);
Sie können diese Schnittstelle verwenden, um auf die Methoden des Zeichens zuzugreifen:
// Show the character. The first parameter tells Microsoft
// Agent to show the character by playing an animation.
hRes = pCharacterEx->Show(FALSE, &lRequestID);
// Make the character speak
bszSpeak = SysAllocString(L"Hello World!");
hRes = pCharacterEx->Speak(bszSpeak, NULL, &lRequestID);
SysFreeString(bszSpeak);
Wenn Sie keine Microsoft-Agent-Dienste mehr benötigen, z. B. wenn Ihre Clientanwendung heruntergefahren wird, geben Sie die zugehörigen Schnittstellen frei. Beachten Sie, dass beim Freigeben der Zeichenschnittstelle das Zeichen nicht entladen wird. Rufen Sie die Unload-Methode auf, um dies zu tun, bevor Sie die IAgentEx-Schnittstelle freigeben:
// Clean up
if (pCharacterEx) {
// Release the character interface
pCharacterEx->Release();
// Unload the character. NOTE: releasing the character
// interface does NOT make the character go away. You must
// call Unload.
pAgentEx->Unload(lCharID);
}
// Release the Agent
pAgentEx->Release();
VariantClear(&vPath);