我发现QQ游戏里每个游戏都是一个EXE文件 单独也可以执行(但什么也做不了 只是能打开游戏界面) 这个是怎么做的啊比如说大厅和军旗都是EXE文件 大厅可能就是调用了军旗的EXE文件  但是在军旗游戏界面的一些数据信息是怎么传送过去的呀

解决方案 »

  1.   

    其实是一样的,当年我们做这个的时候,每个游戏的客户端做成一个DLL(和exe一样),里面包含了自己的界面,游戏规则(也就是算法)以及一些对外标准接口,然后由另一个exe(是客户端主程序,也就是大厅程序)来加载我们这个DLL,通过公开的接口完成数据的收发。
      

  2.   

    用IPC共享内存方式比较通用。
    http://www.codeproject.com/threads/SharedMemory_IPC_Threads.asp
      

  3.   

    或者
    http://www.codeproject.com/threads/memmapipc1.asp
      

  4.   

    同一台机器可以使用消息,共享内存
    不同机器可以使用DCOM,或者SOCKET
      

  5.   

    4种方法:1. OLE
    2. DDE (Dynamic Disk Exchange) - Memory Mapping File
    3. 剪贴板
    4. Pipe
      

  6.   

    进程间比较少的通信一般采用这些通信技术,但对比较复杂的通信还得通过第三方媒介来实现:比如游戏大厅与单个游戏间应该会有个agen(代理程序)来通讯。
      

  7.   

    因为通过COM(组件对象模型)做的!!!COM组件分进程内组件(DLL) 和进程外组件(EXE)进程内组件不多说了,学过VC的人都知道!
    进程外组件当然也就是把多个执行文件组合起来使用了,
    《Windows核心编程》将这种多进程协同工作的方法叫做《作业》使用进程内组件,优点是:DLL与执行程序在同一进程,执行速度快。
    使用进程外组件,优点是:出错率小,当一个进程出现问题,并不影响其它进程的工作。
      

  8.   

    当然是可以的,只要知道了进程的句柄就可以给他发消息。
    比如:PostMessage(进程的句柄, WM_CLOSE, 0, 0)
    我现在做的升级程序就是通过发送消息来让主程序关闭的。以前是升级程序下载了新的更新包后,就在进程列表中查找,如果有说明主程序在运行,就调用TerminateProcess把主程序干掉,后来发现用这种方法把主程序干掉后在托盘区会有一个主程序的图标存在,当然鼠标移上去后就没有了,但是觉得不是很好,后来就是通过向主程序发WM_CLOSE消息,这样就解决了这个问题。QQ的游戏用的应该是插件
      

  9.   

    VC++中进程间相互通信的十一种方法 :
    http://blog.csdn.net/seu07201213/archive/2006/07/19/941324.aspx
      

  10.   

    八种经典方法:
    1) Distributed COM
    2) Windows Sockets
    3) File Mapping
    4) Shared Memory
    5) Anonymous Pipes
    6) Named Pipes
    7) Dynamic-Link Libraries
    8) Remote Procedure Call
      

  11.   

    再补4种方法:
    9) Using DDE for IPC
    10)Using the Clipboard for IPC
    11)Using a Mailslot for IPC
    12)Using WM_COPYDATA for IPC
    IPC是Interprocess Communications的简称。
    LZ可以参考MSDN,这12种在MSDN里面均有详细介绍