Mah*_*00d 3 delphi shellexecute delphi-2010
我使用ShellExecute命令运行exe文件,该文件获取输入文本文件并返回输出文本文件.我写得像这样:
ShellExecute(mainFormHandle, 'open', 'Test.exe',
'input.txt output.txt', nil, sw_shownormal);
//Read the output file...
S_List.LoadFromFile('output.txt');
Writeln(S_List[0])
Run Code Online (Sandbox Code Playgroud)
我在运行此命令之前提供了input.txt文件.在我的程序的每次运行中,输入文件都会更改,输出文件也会更改.
问题是这样的:我看不到输出文件中的变化!在控制台中写入的行来自上一个文件,而不是新更改的文件.我的意思是,浏览器中的文件已更改,但我读取的文件仍然是旧文件.
这看起来有点奇怪,但我想知道有没有办法在读取之前刷新输出文件?或者我在这里遗失了什么?
提前致谢.
小智 11
ShellExecute不等你的程序完成工作.这是发生的事情:
尝试这样的事情:
var
StartUpInfo : TStartUpInfo;
ProcessInfo : TProcessInformation;
CreationFlags : Cardinal;
begin
FillChar(StartUpInfo, SizeOf(TStartupInfo),0);
StartupInfo.cb := SizeOf(TStartupInfo);
CreationFlags := Normal_Priority_Class;
if CreateProcess(nil, 'test.exe input.txt output.txt',
nil, nil, False, CreationFlags,
nil, 0, StartupInfo, ProcessInfo) then
begin
WaitforSingleObject(ProcessInfo.HProcess, INFINITE);
CloseHandle(ProcessInfo.HProcess);
//Read the output file...
S_List.LoadFromFile('output.txt');
end;
Run Code Online (Sandbox Code Playgroud)
有了WaitForSingleObject你能等到一个过程完成的工作.
| 归档时间: |
|
| 查看次数: |
4472 次 |
| 最近记录: |