如何在Delphi 7中启动*.batch文件
当我运行如何在Delphi 7中启动*.batch文件,delphi,batch-file,delphi-7,Delphi,Batch File,Delphi 7,当我运行L.bat时,它会成功启动任何应用程序 L.batcode: @ECHO OFF start notepad.exe exit 当我使用在Delphi7中设计和编译的应用程序时,L.bat没有运行 我的应用程序中的代码: procedure TFMain.ImgBtn1Click( Sender: TObject ); begin Dir := GetCurrentDir ; RunApp( Dir + 'L.bat' ); FMain.Close; end; 您需要使用
L.bat
时,它会成功启动任何应用程序
L.bat
code:
@ECHO OFF
start notepad.exe
exit
当我使用在Delphi7中设计和编译的应用程序时,L.bat
没有运行
我的应用程序中的代码:
procedure TFMain.ImgBtn1Click( Sender: TObject );
begin
Dir := GetCurrentDir ;
RunApp( Dir + 'L.bat' );
FMain.Close;
end;
您需要使用
cmd.exe/c
运行批处理文件。所以RunApp('cmd.exe/c'+Dir+'\L.bat')代码>应该起作用。RunApp的功能是什么?它不是Delphi RTL函数。如果我们看不到它如何尝试启动批处理文件,则很难告诉您为什么它不工作。您的RunApp
函数不使用Windows Shell打开文件。但是你不应该麻烦处理批处理文件,直接从你的应用程序执行notepad.exe。你想使用GetCurrentDir吗?1.)是此位置的批处理文件2。您必须使用Dir:=IncludeTrailingBackSlash(GetCurrentDir);我找到了解决方案:我使用了:ShellExecute(TForm(Owner).Handle,nil,PChar('L.bat'),nil,nil,SW_SHOWNORMAL)如果执行批处理文件的唯一原因是希望运行带有参数的应用程序,那么您没有找到解决方案,而是找到了一种弱方法。甚至ShellExecute
都有一个用于指定执行参数的参数,例如,使用此ShellExecute(Handle,nil,'cabalmain.exe,'zds_30',nil,SW_SHOW)代码>您将摆脱该批处理文件。但也有其他方法可以使用参数执行应用程序