奇怪的 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
进程并使用您创建的匿名管道作为其标准输出。然后你就可以避免写任何文件了。
尝试从 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
进程并使用您创建的匿名管道作为其标准输出。然后你就可以避免写任何文件了。