2010-07-31 161 views
4

如何从我的Delphi应用程序运行此命令?如何从Delphi运行命令行?

C:\ myapppath \ appfolder> appname.exe/STEXT save.txt的

我尝试下面的代码:

ShellExecute(0, nil, 'cmd.exe', 'cd C:\myapppath\appfolder', nil, SW_Hide); 
ShellExecute(0, nil, 'cmd.exe', 'appname.exe /stext save.txt', nil, SW_Hide); 

但没有奏效。谁能提供解决方案?

回答

7

要运行CMD命令,你需要使用的cmd.exe/C标志:

ShellExecute(0, nil, 'cmd.exe', '/C cd C:\myapppath\appfolder', nil, SW_HIDE); 
ShellExecute(0, nil, 'cmd.exe', '/C appname.exe /stext save.txt', nil, SW_HIDE); 

然而,这将创建两个不同的会话,因此它不会工作。但是你可以使用的ShellExecute来直接运行appname.exe,就像这样:

ShellExecute(0, nil, 'appname.exe', '/stext save.txt', nil, SW_HIDE); 

但是,你需要正确指定文件名。

我会做

var 
    path: string; 

begin 
    path := ExtractFilePath(Application.ExeName); 
    ShellExecute(0, nil, PChar(Application.ExeName), PChar('/stext "' + path + 'save.txt"'), nil, SW_HIDE); 
end; 

的情况下appname.exe是当前应用程序。否则,请将Application.ExeName替换为appname.exe的完整路径。

+0

WS_HIDE应该是SW_HIDE。我试图编辑它,但收到消息:编辑必须至少有6个字符... – Zalumon 2013-06-24 09:40:05