有一个现有的遗留程序,已经没有源代码了,新软件还需要它的部分功能,
重新开发太麻烦了,能不能在新软件里调用原软件的一些功能呢?
也就是把遗留软件运行起来,但不显示窗口,通过用新的界面与用户交互,
有可行性吗?难度有多大?

解决方案 »

  1.   

    我以前也作过类似的,将原来的改成dll方式吧,把需要的接口露出来。
      

  2.   

    呵,那乘早死心了吧,我还想把整个winxp的界面集成到我软件上来列。
      

  3.   

    这就是传统的软件复制的悲哀!
    所以现在流行组件技术,向Activex,COM,等,是2进制的标准,不需要源代码也可复用。
      

  4.   

    通过跨进程发送windows消息,跨进程子类化原程序窗口截获其消息,来对其进行包裹怎么样?
      

  5.   

    To cjg325(欲望天堂):
    高手,你怎么做的能说的具体些吗?
      

  6.   

    你可以把这个GUI程序,做为一个资源,放在你的工程里面,
    当你的程序执行行,将这个GUI释放出来,执行它,并设置属性为SW_HIDE, 然后,通过消息来操作这个GUI,并得到结果,并将结果显示在你的界面中。比如:
    ::SendMessage(GUI->m_hWnd, WM_CLOSE, NULL, NULL),数据的传递,可以采用中间文件的形式,即得到结果后,将其存入文件,然后,你的界面再去读这个文件,获得数据。......
      

  7.   

    To mfcdeclare(半斤八两):
    和我的想法高度一致,呵呵
    你这样做过吗?我只是这样想,没经验啊,估计难度不小吧,
    是不是要用逆向工程分析窗口的类别,子窗口的ID,已及程序处理了哪些消息这些细节啊?
      

  8.   

    原来得软件是否提供类对象?即OLE自动化支持?
    如果有得话,那就很简单了,你得到其一份类型库即可调用了
      

  9.   

    To loomman(一剑):
    晕死,如果是一个COM组件,还用这么费劲吗?
      

  10.   

    CreateProcess(...);
    FindWindow(...);
    ShowWindow(SW_HIDE);
    SendMessage(...);
      

  11.   

    同意楼上jingjing8178(晶晶)朋友的,得到输出用FindWindow、EnumChildWindow和SendMessage(WM_GetText,......)。没有什么新的创意,只是解释一下,楼主不要给我分了!呵呵,不想抢别人的分^_^
      

  12.   

    用spy++是可以分析出某子窗体的句柄的。