我有一个Test.bat,在命令行下可以顺利执行,但是在程序中使用ShellExecute函数执行时,只是有一个DOS窗口闪了一下就没有了,不知道是什么原因,代码如下:
ShellExecute(Self.handle,'c:\test.bat',nil,nil,SW_SHOWNORMAL)
函数返回值是42。
test.bat如下:
@echo off
cls
rem call the preprocessor program
call v_pre16 /u:DFLT /cdrom /run:9510AV11
rem if any problems abort else run view
if errorlevel 1 goto end
call v_view16.exe /u:DFLT /cdrom /run:9510AV11
:end
echo.
echo.
ShellExecute(Self.handle,'c:\test.bat',nil,nil,SW_SHOWNORMAL)
函数返回值是42。
test.bat如下:
@echo off
cls
rem call the preprocessor program
call v_pre16 /u:DFLT /cdrom /run:9510AV11
rem if any problems abort else run view
if errorlevel 1 goto end
call v_view16.exe /u:DFLT /cdrom /run:9510AV11
:end
echo.
echo.
但是载文解决这个问题呢?
在调用ShellExecute函数之前,是否能够设置一下执行目录呢?
procedure TForm1.Button1Click(Sender: TObject);
var
OldPath: PChar;
NewPath: String;
begin
NewPath := 'c:\';
SetCurrentDirectory( PChar(NewPath) );
end;procedure TForm1.Button2Click(Sender: TObject);
begin
ShellExecute(0,nil,PChar('test.exe'),nil,nil,SW_SHOWNORMAL);
end;2,直接在倒数第二个参数设置路径
ShellExecute(0,nil,PChar('test.exe'),nil,'c:\',SW_SHOWNORMAL);