Microsoft Agent技术应用(3) agentStop(); agentShow(); agentPlay(L"Wave"); GetLocalTime(&time); // 根据时间不同提示不同信息 if( g_nMainLang == LANG_ENGLISH) { // 提示英文信息 if( time.wHour < 19) agentSpeak(MES_GOODBYE); else agentSpeak(MES_GOODNIGHT); } else { // 提示中文信息 if( time.wHour < 19) agentSpeak(MES_GOODBYE_CH); else agentSpeak(MES_GOODNIGHT_CH); } agentHide(); // 等待若干时间 Sleep(MAX_QUIT_TIME); } } 当然以上介绍的只是一种较为简单的方法,仅在于描述这种原理。 (三) 实现自动朗读英文 实现自动朗读实际上是响应剪贴板消息的过程,当复制选种的文本信息时,系统自动发送WM_DRAWCLIPBOARD消息给所有剪贴板监视队列中的窗口,相应的窗口只要读取当前剪贴板内的信息进行朗读即可,具体实现如下: 安装剪贴板监视: void InstallClipSpy() { g_hNextWnd = SetClipboardViewer(g_hMainWnd); } 主窗口的回调函数中相应剪贴板消息: LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)