当前位置: 代码迷 >> VBA >> 跪求,如果小弟我双击一个已经生成的Word文件,小弟我如何来在小弟我的程序里面到到它的_Application进而对它进行各种操作
  详细解决方案

跪求,如果小弟我双击一个已经生成的Word文件,小弟我如何来在小弟我的程序里面到到它的_Application进而对它进行各种操作

热度:8789   发布时间:2013-02-26 00:00:00.0
跪求,如果我双击一个已经生成的Word文件,我怎么来在我的程序里面到到它的_Application进而对它进行各种操作

(---VC来实现---)

\查了很多资料,现在有两种说法.希望有更好的实现方法.

1.   创建文件关联,让双击word图标后,关联到我的程序中来打开这个word文件.可惜我太知道怎么修改注册表
2.   是不是可以用连接点来实现...不过不太理解.

恳请各位大哥能否协助一下......!!!!!!!!!!!!!!!!!

------解决方案--------------------------------------------------------
Office Addin可以做到,google一下IDTExtensibility2这个单键字
------解决方案--------------------------------------------------------
用vs建立一个共享的外接程序,然后在提示中选择word。
建立的这个工程可以满足楼主的要求,不过过程比较复杂,楼主可以去MSDN上搜嗽相关的资料!
------解决方案--------------------------------------------------------
在你的程序里开启一个线程,不停查看系统是否运行word

CLSID clsid;
HRESULT hr;
hr=::CLSIDFromProgID(L"Word.Application",&clsid);
IUnknown *pUnknown=NULL;
IDispatch *pDispatch=NULL;
_Application app=NULL;
Selection sel=NULL;

//查找是否有WORD程序在运行

hr=::GetActiveObject(clsid,NULL,&pUnknown); if(FAILED(hr))
{
AfxMessageBox(_T("没有正在运行中的WORD应用程序"));
return;
}

try
{
hr=pUnknown->QueryInterface(IID_IDispatch,(LPVOID *)&app);
if(FAILED(hr)) throw(_T("没有取得IDispatchPtr"));

//这个app送给你了

}
catch(LPCTSTR lpErr)
{
AfxMessageBox(lpErr);
}
  相关解决方案