如何将office嵌入到自己的程序中

bsnry 2012-11-30 03:54:53
如何将office嵌入到自己的程序中

描述:所谓嵌入,好比,我的窗口的客户区域的一部分可以播放ppt, word .

初步解决方法:createprocesss, enumwindows, getwindowprocessthreadid, 获得被打开的程序的句柄,

然后movewindow, showwindow. 在createprocess的时候,对参数startupinfo进行sw_hide.


实现后, 可以讲office嵌入了。 才发现, 离需求相差甚远。

需求:自己的程序里可以打开office,不管你采用何种方式,反正可以打开自己上的任意office文件,

打开后,必须要搞到句柄,然后进行 movewindow, showwindow.

每次打开的文件是不一样的,所以采用 findwindow的法子,是不行的。 每个office的版本不一样。

同一个版本的窗口的类名 似乎不知道。


另外:
createprocess,无法打开任意一个office文件, 之所以使用createprocess的方式,是:其可以让 office sw_hide!

...全文
417 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
I_ask_who 2012-12-03
  • 打赏
  • 举报
回复
另外word类型库(.old)中并不是包含所有的word接口,有些接口旨在实现标准OLE功能(如文中提到的IOleLink),但是如果QI应该可以访问,普通调用则不一定用得到.
I_ask_who 2012-12-03
  • 打赏
  • 举报
回复
这个包装类应该和word无关,貌似MFC向导框架生成的.在http://support.microsoft.com/kb/184663中,是先生成包装类,再导入excel类型库. 该包装类可能与某个MFC框架有关,就像doc-view结构,可以绑定某个文件,估计内部某个引擎调动IMoniker之类的接口实例化该文件相关的控件,和CtrlItem绑定,然后系统调用GetIDispatch()... 本人对OLE高级功能也不熟悉...
bsnry 2012-12-03
  • 打赏
  • 举报
回复
引用 3 楼 mcmcmc 的回复:
http://support.microsoft.com/kb/316207 http://support.microsoft.com/kb/184663 http://support.microsoft.com/kb/316587/en-us
晕死了, 将 GetIDispatch 方法添加到 Cntritem.cpp 中,如下所示: /******************************************************************* * This method returns the IDispatch* for the application that is linked to * this container. ********************************************************************/ LPDISPATCH CEmbed_WordCntrItem::GetIDispatch() { //The this and m_lpObject pointers must be valid for this function //to work correctly. The m_lpObject is the IUnknown pointer to 这个类没有, 看代码应该是一个包装类的名字, 但是: 一般包装类和接口类名是响应的,从包装类多少可以猜测到接口的名字。 不过从word的接口中看,找不到接口的名字啊。 找不到接口名字,没法添加这个类啊
I_ask_who 2012-11-30
  • 打赏
  • 举报
回复
http://support.microsoft.com/kb/316207 http://support.microsoft.com/kb/184663 http://support.microsoft.com/kb/316587/en-us
MoreWindows 2012-11-30
  • 打赏
  • 举报
回复
有COM接口的吧,用findwindow来句柄的思路不可取。
playStudy 2012-11-30
  • 打赏
  • 举报
回复
有office浏览器吗

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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