在windows中直接双击执行或者通过cmd控制台执行均没有问题,但是从另外一个进程用ShellExec或者WinExec执行就会出一个断言错误??那个老大给分析下咋回事

解决方案 »

  1.   

    估计是程序的运行的工作目录不一样,可能你的程序里有使用相对路径来获取配置信息的代码。
    双击时,工作路径为EXE文件的路径;
    用ShellExec或者WinExec执行时,工作路径为执行ShellExec的进程的工作路径;
    建议在你的程序里把当前的工作路径设为EXE所在的路径;
      SetCurrentDirectory("EXE所在目录的路径");
      

  2.   

    最好把断言上提示的内容贴出来,估计和这有关,你用一个程序起另一个程序的时候你另外那个程序和直接起其实是不一样的,它会知道是基于某一个进程而起的,如A启动B,那A是还牵连着B的一些信息的,可能B种要用到的某个信息因为这样得到的不是B自己的,而是A的,这样B中就会发现不对了,就如DLL GetInstance似的,你认为它得到的是应用的还是自己DLL的呢?
      

  3.   

    应该如crearo(铜板) 所说的那样,因为被执行程序不方便修改,干脆把执行程序的编译输出转到被执行程序的目录下了