比如进程A里启动进程B,要求B的主窗口不显示
但如果A对B发送消息,B收到响应消息会弹出相应的窗口主要是因为以前B的代码是用python写的,其中用的数据结构和C++不一样,比如列表。如果将B的部分功能剥离出来作为dll,那工作量还蛮大的所以问下能不能这么做
提供个dll,当载入该dll的时候,启动B程序在后台运行
dll提供功能接口,实际上就是发送给B的窗口消息。比如在B中如果点击某按钮弹出对话框,dll也会发送给B消息让其弹出对话框,但B的主窗口依然不显示。其实就是用户自己做他自己的界面,我们给他dll,提供接口
实际所有操作还是在我们自己的程序中完成不晓得我说清楚了没

解决方案 »

  1.   

    清楚了。很明显用socket的C/S模式很适合啊。dll是C,B进程为A,结构转换自己定义通信协议就好了。
      

  2.   

    老大,你也在C++社区混这么久了socket操作的代码总会写吧?python建立socket服务的代码也会弄吧?这还需要什么教程。Google几篇文章,赶鸭子上架都不会有太大的问题吧???
      

  3.   

    窗口放在DLL里面比较麻烦,需要转换state.............加上AFX_MANAGE_STATE(AfxGetStaticModuleState())
      

  4.   

    这个感觉好多办法都可以吧
    socket
    发送WM_COPYDATA
    都可以吧
      

  5.   

    我一开始想的是先用FindWindow获得窗口句柄
    然后就PostMessage发送消息,消息反正都知道
    socket我就是大学里学过,现在都没用过(我很菜 - -|||)
      

  6.   

    其实方法很多,发送WM_COPYDATA,邮槽,管道,共享内存,socket。。
      

  7.   

    你不是说有什么数据结构吗?
    postmessage不能发送大的数据结构啊 
      

  8.   

    PostMessage只能传简单的消息,结构大小超过2个DWORD的就很难传。socket有好处就是可以接受多个client,很容易扩展成分布式服务,或者一个Server为多个不同机器的client提供服务。当然你也可以限定只有本地client才被接受。跨平台移植也很方便。至于像WM_COPYDATA、内存映射之类的依赖于Windows平台,如果不考虑跨平台的话,也是可以的。
      

  9.   

    我先按自己想的试一下没有什么数据要传,就是个普通的消息几乎所有的数据设置等都是自己程序中的顶多一两个int型,实在不行就再用一般进程间通讯的方法,只是这样我也得在自己的程序中添加接受代码
      

  10.   

    子窗口只要是popupwindow的就可以啊。
      

  11.   

    饿,问两个问题好么?
    1.我在另一个程序B中createprogress启动我自己程序A
    为何在B的app initinstance中createprogress不行,这样的话等把程序B关了我自己的A才能起来
    但在initdialog里createprogress却可以
    2.我在自己的程序里判断,如果命令行参数个数为1,则正常启动,否则主窗口不显示
    问题是,即便我写了代码不显示,他也会一开始显示然后很快隐藏
      

  12.   

    《MultiThreading Application in Win32》第13章,
    好好瞧瞧~