奇怪的ShellExecute结果

时间:2018-02-25 10:42:06

标签: windows delphi delphi-10.2-tokyo

尝试从mame64.exe获取结果,如-listfull或-createconfig,但在第一个ShellExecute命令中,我得到的结果是第二个我什么都没得到

我使用此代码

begin
  vDir:= 'C:\Emu\Mame\Mame64.exe';
  vDir2:= 'C:\Emu\Mame\gamelist.txt'; 
  ShellExecute(0, nil, 'cmd.exe',PChar('/C '+ vDir +' -listfull > '+ vDir2),nil, SW_HIDE);
  sleep(1000);
  ShellExecute(0, nil, 'cmd.exe',PChar('/C '+ vDir +' -createconfig'),nil, SW_HIDE);
  sleep(1000);
 end;

我无法理解我的错误......

1 个答案:

答案 0 :(得分:3)

将在工作目录中创建mame.ini文件。您没有指定,因此它是从调用进程继承的。在调用进程的工作目录中查找它,可能是Delphi可执行文件所在的目录。

使用Sleep并不是一个好主意。请勿使用ShellExecute创建cmd.exe进程。使用CreateProcess。然后等待返回的进程句柄,如果需要同步则发出信号。如果您想要更高级,则可以直接创建mame64进程并使用您创建的匿名管道作为其标准输出。然后你可以避免写任何文件。