VC怎样调用其它应用程序
我很想让我编的程序,它能够让别的程序运行.并且,能够更好的控制它.比如说:运行word,让它画表格.等等大哥,能不能给我一个完整的程序.我愚昧,有的不知道是怎么会事.也许...
我很想让我编的程序,它能够让别的程序运行.
并且,能够更好的控制它.
比如说:
运行word,让它画表格.等等
大哥,能不能给我一个完整的程序.我愚昧,有的不知道是怎么会事.也许你说一个完整的,我想我能看懂.谢谢! 展开
并且,能够更好的控制它.
比如说:
运行word,让它画表格.等等
大哥,能不能给我一个完整的程序.我愚昧,有的不知道是怎么会事.也许你说一个完整的,我想我能看懂.谢谢! 展开
展开全部
COM编程.这个已经很完整了呀.
以vc6.0为例
新建MFC工程会吧.
先新建MFC工程(选对话框),双击确定(OK),然后把第四步的内容复制到函数里面.要是没有基础的话,还是先学基础吧,这种事急不来的.就是我给你写好了一个,你还是不知道怎么写别的.
1\在类向导中Add Class-->from a type library
在打开中选择word安装目录下面的msword.olb
点打开,在其中选择你要的类.比如:
WordApplication;(在对话框中可能是_Application在这里被的重命名了,下同!)
WordDocuments;
WordDocument;
WordTables;
WordTable;
WordCell;
WordRange;
WordColumns;
WordRows;
在头文件中输入MSWORD.h(默认)
2\在BOOL C***App::InitInstance()中加入如下代码
if (CoInitialize(NULL)!=0)
{
AfxMessageBox("初始化COM支持库失败,你将不能导出数据到Excel表!");
}
3\使用的时候包含如下文件
#include "msword.h"
#include "comdef.h"
4\实现代码
WordApplication app;
WordDocuments docs;
WordDocument doc;
WordTables WordTables;
WordTable WordTable;
WordCell WordCell;
WordRange WordRange;
WordColumns WordCols;
WordRows WordRows;
if(!app.CreateDispatch("Word.Application"))
{
MessageBox("创建Word服务失败!",_T("提示"),MB_ICONERROR);
return;
}
docs.AttachDispatch(app.GetDocuments());
app.SetVisible(true);
//打开文件
IDispatch *dispatch=docs.Open(&_variant_t(strFileName),&vtMissing,&vtMissing,&vtMissing,
&vtMissing,&vtMissing,&vtMissing,&vtMissing,&vtMissing,&vtMissing,&vtMissing,
&vtMissing,&vtMissing,&vtMissing,&vtMissing,&vtMissing);
if(dispatch)
{
doc.AttachDispatch(dispatch);
}
else
{//出错了
CString szErr="";
szErr.Format("打开文件出错,请查看文件是否存在!");
::AfxMessageBox(szErr);
//退出程序,释放对象
app.Quit(&vtMissing,&vtMissing,&vtMissing);
docs.ReleaseDispatch();
app.ReleaseDispatch();
return;
}
dispatch=doc.GetTables();
if(dispatch)
{
WordTables.AttachDispatch(dispatch);
}
else
{//出错了
CString szErr="";
szErr.Format("取得表格集合出错!");
::AfxMessageBox(szErr);
//退出程序,释放对象
app.Quit(&vtMissing,&vtMissing,&vtMissing);
docs.ReleaseDispatch();
app.ReleaseDispatch();
doc.ReleaseDispatch();
return;
}
WordTables.Add(....);
app.Quit(&vtMissing,&vtMissing,&vtMissing);
doc.ReleaseDispatch();
docs.ReleaseDispatch();
app.ReleaseDispatch();
以vc6.0为例
新建MFC工程会吧.
先新建MFC工程(选对话框),双击确定(OK),然后把第四步的内容复制到函数里面.要是没有基础的话,还是先学基础吧,这种事急不来的.就是我给你写好了一个,你还是不知道怎么写别的.
1\在类向导中Add Class-->from a type library
在打开中选择word安装目录下面的msword.olb
点打开,在其中选择你要的类.比如:
WordApplication;(在对话框中可能是_Application在这里被的重命名了,下同!)
WordDocuments;
WordDocument;
WordTables;
WordTable;
WordCell;
WordRange;
WordColumns;
WordRows;
在头文件中输入MSWORD.h(默认)
2\在BOOL C***App::InitInstance()中加入如下代码
if (CoInitialize(NULL)!=0)
{
AfxMessageBox("初始化COM支持库失败,你将不能导出数据到Excel表!");
}
3\使用的时候包含如下文件
#include "msword.h"
#include "comdef.h"
4\实现代码
WordApplication app;
WordDocuments docs;
WordDocument doc;
WordTables WordTables;
WordTable WordTable;
WordCell WordCell;
WordRange WordRange;
WordColumns WordCols;
WordRows WordRows;
if(!app.CreateDispatch("Word.Application"))
{
MessageBox("创建Word服务失败!",_T("提示"),MB_ICONERROR);
return;
}
docs.AttachDispatch(app.GetDocuments());
app.SetVisible(true);
//打开文件
IDispatch *dispatch=docs.Open(&_variant_t(strFileName),&vtMissing,&vtMissing,&vtMissing,
&vtMissing,&vtMissing,&vtMissing,&vtMissing,&vtMissing,&vtMissing,&vtMissing,
&vtMissing,&vtMissing,&vtMissing,&vtMissing,&vtMissing);
if(dispatch)
{
doc.AttachDispatch(dispatch);
}
else
{//出错了
CString szErr="";
szErr.Format("打开文件出错,请查看文件是否存在!");
::AfxMessageBox(szErr);
//退出程序,释放对象
app.Quit(&vtMissing,&vtMissing,&vtMissing);
docs.ReleaseDispatch();
app.ReleaseDispatch();
return;
}
dispatch=doc.GetTables();
if(dispatch)
{
WordTables.AttachDispatch(dispatch);
}
else
{//出错了
CString szErr="";
szErr.Format("取得表格集合出错!");
::AfxMessageBox(szErr);
//退出程序,释放对象
app.Quit(&vtMissing,&vtMissing,&vtMissing);
docs.ReleaseDispatch();
app.ReleaseDispatch();
doc.ReleaseDispatch();
return;
}
WordTables.Add(....);
app.Quit(&vtMissing,&vtMissing,&vtMissing);
doc.ReleaseDispatch();
docs.ReleaseDispatch();
app.ReleaseDispatch();
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询