我用ATL写了一个控件,主要在word中使用,在打开WORD以后,插入此控件,
我怎样在控件中获得当前WORD所打开的文件的名称和路径,以及其他的一些操作
比如获得文档的正文。
我已经写了一个WORD插件,也是用ATL写的,通过它可以在WORD中插入上面的控件。怎样使控件和客户端发生连接呢,也就是我需要用控件操纵当前的WORD文档,
现在最好是控件和WORD插件可以信息通讯最好,我不知道怎么实现了,请指点。我的难点是,客户端的实例已经完成,我才插入的控件,并且客户端可能对应多个控件。
不知道我说的清楚没有,呵呵!

解决方案 »

  1.   

    用IMoniker::BindToObject()得到当前的word实例,然后得到当前document接口即可
      

  2.   

    to weirdy
    我这个方面比较弱,能不能具体说明一下,或者给个简单的例子,不胜感激!,先谢过了
      

  3.   

    方法有很多,可以使用下面这段代码,不过建议你不要将这段代码加在ATL控件代码中,而是再开发一个服务器程序,通过发送消息的方式激活这个服务器,通过这个服务器程序来控制Word!struct StartUpCom {
        StartUpCom() { OleInitialize(NULL);}
        ~StartUpCom() { CoUninitialize(); }
    } _global_com_inst;
    IJpmanSvrPtr svr; HRESULT hr;
    CLSID clsid;

    hr = svr.GetActiveObject(OLESTR("JpmanSvr.Document"));
    if(FAILED(hr))
    hr = svr.CreateInstance(OLESTR("JpmanSvr.Document"), 
    NULL, CLSCTX_LOCAL_SERVER);
    }
      

  4.   

    JpManSvr是一个自动化服务器程序,Word的自动化服务器程序是“Word.Application”
      

  5.   

    to cenjj4002
    我现在想在控件上获得当前活动的客户,需要在控件服务上进行,应该怎样做,能不能给个具体的例子。
      

  6.   

    请到MSDN 2003(宇宙版) 上关于Office控制开发部分获得信息!很全面细致!
    :)
      

  7.   

    安装Office的帮助,VBA参考中就比较全了