有个外部程序不能被调用的问题是:调用外部程序时本身的程序进程被结束,然后调用的外部程序进程也结束了。使用了winexec和shellexecute调用结果一样,以前没碰到过。请求帮助,是否在参数上需要调整?请附上源码,谢谢

解决方案 »

  1.   

    我相信被调用的程序一定不是你写的。
    我估计是这样的,那个被你调用的程序,由于加了一些代码来反调试,那个程序启动时如果发现它的父进程不是Explorer.exe(还有其他几个)之类的,就直接结束父进程,这样你用你的程序调用时,当然就被Over了。
    首先试试把你的程序改成Explorer.exe试试,如果还是不行,估计得把那个被调程序修改修改了。
      

  2.   

    kiboisme说得没错:)谢谢了,但是除了改名称外还有其他办法吗?先送一半分:)
      

  3.   

    除了改名称剩下的办法不多了,
    1:用OD,SoftICE调试那个程序,下断BP TerminateProcess,如果发现是结束不该结束的程序直接把Call TerminateProcess改成NOP
    2:HOOK那个程序的TerminateProcess,不让它结束你的程序(也有可能调用的SendMessage(WM_CLose)来结束你的程序,:(
    不过HOOK API不好弄,必须用调试方式打开那个程序才能在程序一开始运行时进行HOOK,否则就只能作全局HOOK了。个人推荐用第一个方法