问题简述如下:我在程序中用ShellExecute执行一个bat文件,比如路径是.\aaa\aaa.bat,程序如下:ShellExecute(Handle, 'open','aaa\aaa.bat', nil, nil, SW_SHOWNORMAL);路径肯定没有问题,奇怪的是这样执行的话弹出的窗口一闪而过,应该弹出的窗口没有弹出;但是如果将程序考到aaa目录下,ShellExecute(Handle, 'open','aaa.bat', nil, nil, SW_SHOWNORMAL);则一切正常。由于客观原因,程序只能放在aaa.bat的上层目录。谁能帮我解决这个问题?马上给分

解决方案 »

  1.   

    獲得自身EXE路徑後,把BAT的絕對路徑賦予給ShellExecute試一試。
      

  2.   

    ShellExecute(0, nil,Pchar(filenamedoc), nil, nil, SW_NORMAL);这样就没问题了。
      

  3.   

    aaa.bat是一个启动java程序的文件,我另外试了一下,自己写个bat,放在不同目录下delphi也可以调用,但是这个怎么不行呢。
      

  4.   

    sixgj(轰炸机) :我马上试一下
      

  5.   

    sixgj(轰炸机) :还是不行,一闪而过,没有弹出窗口
      

  6.   

    WinExec('aaa\aaa.bat',WS_ACTIVECAPTION);
    这样写试一下.
      

  7.   

    BAT文件内容如下:
    @echo off
    if "%1" == "" goto checkNCExtDir
    set NC_EXT_DIR=%1
    echo Now set NC_EXT_DIR to point to :%NC_EXT_DIR%.
    goto gotNCExtDir:checkNCExtDir
    if not "%NC_EXT_DIR%" == "" goto gotNCExtDir
    set NC_EXT_DIR=c:\temp\nc
    echo Now set NC_EXT_DIR to point to :%NC_EXT_DIR%.:gotNCExtDir
    if exist ..\ufjdk\jdk_win\bin\java.exe goto ufjdk
    java -classpath .;.\setup.jar -Dnc.install.home.path=%NC_EXT_DIR% nc.install.Install
    goto end
    :ufjdk
    ..\ufjdk\jdk_win\bin\java -classpath .;.\setup.jar -Dnc.install.home.path=%NC_EXT_DIR% nc.install.Install:end
      

  8.   

    唉,sailxia(小帆) 说的也不行,我想个个办法,自己生成一个临时的BAT,
              cd aaa
              aaa.bat      再自己调用这样可能就可以了,可是我要调用很多个这样的文件(30多),还有其他判断,重复劳动太多了。