奇怪的 ShellExecute 结果

Strange ShellExecute results

尝试从 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;

我不明白哪里错了...

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

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