比如二个SDI应用程序,一个SDI应用程序包含一个列表,列出各种文件。另一个SDI应用程序包含编辑功能。想通过双击第一个应用程序中的列表,然后第二个应用程序打开相应的文件。应该如何实现?二个程序之间可以传递消息,参数之类的吗?

解决方案 »

  1.   

    得到两个SDI的窗口句柄,窗口之间是可以互发消息的。
      

  2.   

    WM_COPYDATA Message
    An application sends the WM_COPYDATA message to pass data to another application. 用这个消息可以传送指定字符串到别的程序中
      

  3.   

    二个程序之间可以传递消息吗
    -----------
    可以用管道 CreateNamedPipe("\\\\.\\Pipe\\MyPipe",...)  通过管道来进程间通信~
      

  4.   

    1,可以用WM_COPYDATA。这个方法的好处是在单实例、多实例的方式下都能正确工作。缺点是,你必须让两个程序,在启动后,相互知晓(至少一方知晓)主窗口的HWND。而查询主窗口句柄是一件比较麻烦的事情。可以查询MSDN里面与“WM_COPYDATA”、“CreateProcess”、“EnumWindow”相关的介绍。并提醒你,不要相信MSDN里说EnumWindow只枚举顶层窗口。2,可以用FileMapping或管道(正像surstar所说)。优点是两个程序完全不必知道任何关于对方的信息,甚至不用关心对方是否还活着。只要事先约定好FileMapping或管道的名称即可。缺点是,既然是约定了唯一一个通信媒介的名称,那么显然在只能为单实例工作。换句话说,至少发送一方的程序必须只能运行一份实例。如果有两个发送程序同时运行肯定肯定郁闷。而接收方的程序在必要是可以运行多个实例,此时就象广播一样。你可以查询MSDN里面与“FileMapping”或“Pipe”有关的内容。