|
Microsoft Agent技术应用(6) 传递消息必须获取AgentShell主窗口的句柄,实现如下: HWND GetAgentMainWnd() { return FindWindow(AGENT_CLASS_NAME, NULL); } 由于Agent采用了UNICODE, 必须将ANSI字符转化为UNICODE字符: BOOL SendMesToAgent(WORD nAction, DWORD nD1, DWORD nD2, LPCSTR sData) { UINT nSize; HWND hWnd = GetAgentMainWnd(); if( hWnd) { action.nAction = nAction; action.nD1 = (DWORD)nD1; action.nD2 = (DWORD)nD2; // 将ANSI符转换为UNICODE的字符 nSize = MultiByteToWideChar(CP_ACP, 0, sData, lstrlen(sData) + 1, action.sData, MAX_DATA_LEN); action.sData[nSize] = '\0'; // COPYDATASTRUCT cds; cds.dwData = (DWORD)0; cds.cbData = (DWORD)sizeof(action); cds.lpData = (VOID *)&action; // 通过WM_COPYDATA消息与AgentShell交换数据 SendMessage(hWnd, WM_COPYDATA, (WPARAM)NULL, (LPARAM)&cds); return TRUE; } return FALSE; } 目前AgentShell提供的函数主要有: // 启动角色外壳程序(AgentShell) bRun是否执行 BOOL agentAPIRun(BOOL bRun = TRUE); // 退出角色外壳程序(AgentShell) BOOL agentAPIExit(); // 创建一个新角色(sPath角色数据文件路径, nLang主语言, nSubLang子语言) BOOL agentAPICreate(LPCSTR sPath, UINT nLang, UINT nSubLang); // 设置角色名字(sName角色名字)
|