ATL调用Word打开文本文件为何失败????

hezytop 2012-06-16 02:56:53
文本文件是UTF8格式的,open函数传入测参数如下:


CComVariant vFilename = L"c:\\test.txt";
CComVariant vTrue((short)TRUE), vFalse((short)FALSE), vNoDialog((short)TRUE);
CComVariant vOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
CComVariant vFormat((long)0x00000005);
CComVariant vEncode((long)0x0000FDE9);

hRet = pDocs->Open(
&vFilename,
&vFalse,
&vFalse,
&vFalse,
&vOptional,
&vOptional,
&vOptional,
&vOptional,
&vOptional,
&vFormat, /// 指定为Unicode文本格式, 不指定这两个参数时可以打开Word文档
&vEncode, /// 指定编码为UTF8
&vTrue,
&vOptional,
&vOptional,
&vOptional,
&vOptional,
&pDoc);


请教一下上面的这样写为何不能打开文本文件 ?
...全文
107 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
fishion 2012-06-19
  • 打赏
  • 举报
回复
至少我用word 2003的时候就可以
fishion 2012-06-19
  • 打赏
  • 举报
回复
只要你是用word来打开txt的,不用你自己来指定编码类型,word会自己解析的
。关于你所提到的返回值,我就不清楚了,这个错误没看到过
hezytop 2012-06-17
  • 打赏
  • 举报
回复
To fishion:

我按照你的方式传入参数在我的程序里返回还是失败,返回值是 0x800a1551

另外我想实现的是打开UTF8\UNICODE\ANSI 这几种编码的文件,所以参数中还是需要指定编码的参数。

还请指教。
fishion 2012-06-16
  • 打赏
  • 举报
回复
试了一下
#include"stdafx.h"
#include<afxdisp.h>
#include<windows.h>
#include <iostream>
#include<stdio.h>
using namespace std;

#import "C:\\Program Files\\Common Files\\Microsoft Shared\\OFFICE11\\mso.dll"rename_namespace("Office") named_guids,exclude("Pages")
using namespace Office;

#import "C:\\Program Files\\Common Files\\Microsoft Shared\\VBA\\VBA6\\VBE6EXT.olb" rename_namespace("VBE6")
using namespace VBE6;

#import "C:\\Program Files\\Microsoft Office\\OFFICE11\\MSWORD.OLB" rename("ExitWindows","ExitWindowsEx")

#import "C:\\Program Files\\Microsoft Office\\OFFICE11\\MSWORD.OLB"rename_namespace("Word"), raw_interfaces_only, named_guids ,exclude("Pages")
using namespace Word;

int main()
{

CoInitialize(NULL);
Word::_ApplicationPtr app;
Word::DocumentsPtr docs;
COleVariant vFalse((short)FALSE), vOpt((long)DISP_E_PARAMNOTFOUND, VT_ERROR);

if (!app.CreateInstance(L"Word.Application"))
TRACE("\nCreate Dispatch failed!");

app->put_Visible(_variant_t(TRUE));

app->get_Documents(&docs);
CComVariant vFilename = L"c:\\test.txt";
CComVariant vTrue((short)TRUE), vNoDialog((short)TRUE);
CComVariant vOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
CComVariant vFormat((long)0x00000005);
CComVariant vEncode((long)0x0000FDE9);

HRESULT hRet = docs->Open(
&vFilename,
&vFalse,
&vFalse,
&vFalse,
&vOptional,
&vOptional,
&vOptional,
&vOptional,
&vOptional,
&vOptional, /// 指定为Unicode文本格式, 不指定这两个参数时可以打开Word文档
&vOptional, /// 指定编码为UTF8
&vTrue,
&vOptional,
&vOptional,
&vOptional,
&vOptional);

while(1)
Sleep(1000);

docs->Close();
docs.Release();
app->Quit(vFalse, vOpt, vOpt);
app.Release();
CoUninitialize();
return 0;

}
请下载作者此软件的免费版本,见资源上面几行 ============================================== 睿智文本语音朗读组件包是一款TTS工具软件,它集成了对各种文本进行语音朗读的功能。但它不是一种传统意义上的TTS工具,它本身没有采用Microsoft Speech SDK技术,也没有采用Microsoft Simplified Chinese或Microsoft Sam等专业语音库。它从语音库的格式、文本识别、语音播放等全部采用专有内核开发,具有完全独立的知识产权。 1.采用DirectX技术录制、朗读和播放语音,可以在播放过程中随时更改朗读播放的速度、语调、音量等。支持在朗读播放语音的同时播放背景音乐或插播各种格式的音乐。支持计算机所支持的各种音频格式来创建生成语音库。 2.采用多线程技术。在文本的智能识别和语音的朗读均采用了多线程技术,因此不会存在卡带等现象,即使同时在播放多种(个)语音或音乐时也可以流畅自如。系统占用资源并不太大,不会影响用户要进行的其它操作。 3.使用ATL COM组件技术,将对文本的朗读和播放集成到了Internet Explorer浏览器和Microsoft Word中,可以随时自由的朗读当前网页或WORD文档。 4.自定义了一套朗读控制关键字,可以通过在文本中插入这此关键字实时控制朗读和播放形式。 5.语音库从录音到制作加工到测试完全对用户开放,系统在对文本进行朗读播放时可通过使用控制关键字实现多个语音库混合播放的功能,它支持同时混合朗读播放的语音库数量达到100个。 6.提供了多种朗读播放文本的方式,除可以直接在Internet Explorer浏览器和Microsoft Word中播放外,还可以在控制台使用命令行模式来朗读和播放,支持对文本文件的朗读播放,也支持对系统粘贴板中的内容进行播放。 7.支持程序员进行二次编程开发,可以通过编程,在你的程序中直接调用组件中提供的Win32 API函数来实现功能更满足要求的专业软件。组件系统提供了VC、VC.NET、VB、VB.NET、C#等各种开发工具调用组件API函数的例程,你只需要几行代码应可以生成功能强大的TTS软件。 8.语音智能识别C++源码完全对用户开放,源码可以根据用户预生成的语音库形式自动创建生成。用户可以自由的对源码进行修改和编绎,通过增加或修改一些代码,使其智能识别的能力进一步提高,或使其更加满足专业需求。代码被编绎后,以后朗读文本时,就会以你在代码中的要求进行朗读和播放了。
这是免费版本,没有功能限制 全套VC++源码已经开源:详http://mr_luowei2009.download.csdn.net/ 下载时,请在CSDN首页“创新无极限活动”为我投票。 睿智文本语音朗读组件包是一款TTS工具软件,它集成了对各种文本进行语音朗读的功能。但它不是一种传统意义上的TTS工具,它本身没有采用Microsoft Speech SDK技术,也没有采用Microsoft Simplified Chinese或Microsoft Sam等专业语音库。它从语音库的格式、文本识别、语音播放等全部采用专有内核开发,具有完全独立的知识产权。 1.采用DirectX技术录制、朗读和播放语音,可以在播放过程中随时更改朗读播放的速度、语调、音量等。支持在朗读播放语音的同时播放背景音乐或插播各种格式的音乐。支持计算机所支持的各种音频格式来创建生成语音库。 2.采用多线程技术。在文本的智能识别和语音的朗读均采用了多线程技术,因此不会存在卡带等现象,即使同时在播放多种(个)语音或音乐时也可以流畅自如。系统占用资源并不太大,不会影响用户要进行的其它操作。 3.使用ATL COM组件技术,将对文本的朗读和播放集成到了Internet Explorer浏览器和Microsoft Word中,可以随时自由的朗读当前网页或WORD文档。 4.自定义了一套朗读控制关键字,可以通过在文本中插入这此关键字实时控制朗读和播放形式。 5.语音库从录音到制作加工到测试完全对用户开放,系统在对文本进行朗读播放时可通过使用控制关键字实现多个语音库混合播放的功能,它支持同时混合朗读播放的语音库数量达到100个。 6.提供了多种朗读播放文本的方式,除可以直接在Internet Explorer浏览器和Microsoft Word中播放外,还可以在控制台使用命令行模式来朗读和播放,支持对文本文件的朗读播放,也支持对系统粘贴板中的内容进行播放。 7.支持程序员进行二次编程开发,可以通过编程,在你的程序中直接调用组件中提供的Win32 API函数来实现功能更满足要求的专业软件。组件系统提供了VC、VC.NET、VB、VB.NET、C#等各种开发工具调用组件API函数的例程,你只需要几行代码应可以生成功能强大的TTS软件。 8.语音智能识别C++源码完全对用户开放,源码可以根据用户预生成的语音库形式自动创建生成。用户可以自由的对源码进行修改和编绎,通过增加或修改一些代码,使其智能识别的能力进一步提高,或使其更加满足专业需求。代码被编绎后,以后朗读文本时,就会以你在代码中的要求进行朗读和播放了。

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧