Office 97/2000 的「大眼俠」辦公助手讓許多開發者印象深刻。微軟將此技術封裝為 Microsoft Agent (ActiveX),支援中文、語音輸出、豐富動畫與互動。本文示範在 VC++ 6.0 對話框專案中整合 Agent,載入角色「James」,實現歡迎、思考、讀寫等動作觸發,附完整原始碼。
msagent.exe (微軟官網)。James.acs (msagentring.org) 安裝至 C:\WINDOWS\msagent\chars\。MyAgent資源視圖 → 對話框右鍵 →「插入 ActiveX 控件」→ 選擇 Microsoft Agent Control 2.0。

// 對話框頭文件
#include "agentctlcharacters.h"
#include "agentctlcharacterex.h"
#include "agentctlrequest.h"
CAgentCtlEx m_sysAgent; // 主控件
CAgentCtlCharacters m_Characters; // 角色集合
CAgentCtlCharacterEx m_Ex; // 單一角色
CAgentCtlRequest m_Request; // 非同步請求
BOOL CMyAgentDlg::OnInitDialog() {
CDialog::OnInitDialog();
COleVariant vZero("0");
m_Characters = m_sysAgent.GetCharacters();
// 載入 James.acs
m_Request = m_Characters.Load("Jame", COleVariant("C:\\WINDOWS\\msagent\\chars\\James.acs"));
m_Ex = m_Characters.Character("Jame");
m_Ex.Show(vZero); // 顯示角色
return TRUE;
}
void CMyAgentDlg::OnDestroy() {
m_Characters.Unload("Jame");
CDialog::OnDestroy();
}
核心方法:
m_Ex.Show()/Hide() 顯示/隱藏m_Ex.Speak(L"歡迎使用本系統!") 語音輸出(支援 TTS)m_Ex.Play(L"Greet") 播放預定義動畫James 角色支援動作(部分):
| 動作名稱 | 含義 |
|---|---|
| Greet | 問候 |
| Acknowledge | 確認/點頭 |
| Alert | 警告 |
| Announce | 宣佈 |
| Blink | 眨眼 |
| Confused | 困惑 |
| Congratulate | 祝賀 |
| Decline | 拒絕 |
| Explain | 解釋 |
| LookDown/LookUp | 向下/向上看 |
| MoveLeft/MoveRight/MoveDown | 移動 |
| Read/Write | 閱讀/書寫 |
| Search | 搜尋 |
| RestPose | 恢復待機姿態 |
| Think | 思考 |

IAgentSpeechRecognition)Alert、操作引導→Explain、長時間運算→Think.acf (多結構) 支援更豐富動畫環境:Windows XP + VC++ 6.0 編譯通過。完整原始碼附件下載。更多角色與文檔請訪問 MSDN Agent 專區。