获取运行中的Word对象

程序需要获取鼠标下已打开Word的内容,只要获取_Application的接口就可以了。搞了半天,终于知道使用AccessibleObjectFromWindow函数可以实现。MSDN上讲的不清楚,还是在google上找到了答案。AccessibleObjectFromWindow可以获取好多其他类型的UI对象,特别是对于COM类型,又有特殊UI的情况,很合适,比如微软的DirectUI,但是没测试啊,只是猜测。把这段代码贴一下,以后搜索起来也方便。
 const int OBJID_NATIVEOM = 0xFFFFFFF0;//该值可以在头文件里找到
 CComPtr<IDispatch> spDisp;//获取Word的Window对象的智能指针
 Windows m_Win;//定义Word的Windows对象
  if (S_OK == AccessibleObjectFromWindow( hwnd, OBJID_NATIVEOM, IID_IDispatch, (void**) &spDisp)){//hwnd就是需要获取的窗口句柄
  m_Win.AttachDispatch(spDisp);//成功了
  m_App.AttachDispatch(m_Win.GetApplication());//m_App是Word的应用程序对象
  ………………
 
 有两个函数我搞混了,纪录一下,一个是IIDFromString,获取IID用的,开始我想获取Word的应用程序的GUID,使用了这个,但是应该用这个函数CLSIDFromProgID。
比如:
 CLSID clsid;
 HRESULT hr;
 hr=::CLSIDFromProgID(L"Word.Application",&clsid); //通过ProgID取得CLSID
以后不要搞混了。
 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值