我想做个程序自己先运行,然后再运行另外一个在资源里的EXE,但是要在第一个进程内运行第二个进程,该如何做?现有一个可执行程序 A.EXE,我做了个程序叫 B.EXE,我把 A.EXE 作为资源放入 B.EXE 里面。
现在运行 B.EXE,产生 B 的一个进程,B 运行完自己的代码后,接着把 A.EXE 提取出来,继续在 B 进程空间内运行。请问这个效果是否容易实现,谢谢!

解决方案 »

  1.   

    http://blog.csdn.net/zzz3265/archive/2007/10/14/1824662.aspx
      

  2.   

    楼上给的地址:http://blog.csdn.net/zzz3265/archive/2007/10/14/1824662.aspx 这个文章很不错,但是执行后的效果是新创建了一个进程。而不是在原有进程内运行。
      

  3.   

    如果A.exe是是由自己编译的, 那么本人blog
    <<Pe研究之:从内存中加载Pe文件(代码重定位,进程隐藏,代码注入)>>
    http://blog.csdn.net/lisunlin0/archive/2007/08/17/1748173.aspx
    上面有一个稳定易行的方法实现你的要求,具体使用请看源代码和示例代码.
      

  4.   

    A.exe是你做的么?
    是的话给A.exe导出一条函数,
    然后把main的代码写到这条函数里;运行时提取完A后LoadLibrary,
    然后GetProcAddress获得一个指针
    调用导出的函数就可以了.说白了就是把A.exe当dll用:)
      

  5.   

    每个exe都要创建一个进程,无论你怎么做都不可能只又进程b.exe,除非你把a.exe做成一个dll
      

  6.   

    EXE也可以运行在另一个进程空间里,只不过涉及到比较深的知识,你可能需要了解PE的结构。最重要的是,如果你想将EXE当作DLL来使用,必须运行时解决代码重定位,不能简单地调用导出函数,因为EXE里面的函数位置是确定的,但是DLL的函数不确定,在载入后才进行定位。
      

  7.   


    如果 B 是个 DLL 叫做 B.DLL
    A.EXE 不是我写的,
    我如何让 A.EXE 运行的时候将 B.DLL 装载并调用我在 B.DLL 里面的导出函数呢?谢谢各位!
      

  8.   

    jameshooo说的好,exe和dll都是pe格式,所以exe完全可以当作dll来使用的
      

  9.   

    所有的exe加壳工具生成的外壳程序都是这么做的