用ShellExecute打开记事本后,怎么保存后再执行下一行DELPHI代码

用ShellExecute打开记事本后,如何保存后再执行下一行DELPHI代码
begin
  
  ShellExecute(Handle,'Open',PChar( 'notepad.exe'),PChar('c:\remark.txt'),nil,SW_SHOWNORMAL);
  end;

我的问题是第一行代码用ShellExecute打开记事本c:\remark.tet后,程序然后直接运行下一行代码.结果redtMemo中的内容还是原来c:\remark.txt中的内容
我的意思是修改并保存remark.txt后,程序在执行redtMemo.lines.LoadFromFile('c:\remark.txt');以获取修改后的内容.
希望各位朋友帮帮忙!小弟先谢谢了




------解决方案--------------------
ShellExecute是开启外部程序,其实你可以用CreatePress来打开记事本然后根据记事本所在进程句柄来判断记事本是否关闭,例如:
Delphi(Pascal) code

var
  si:TStartupInfo;
  pi:TProcessInformation;
  hwin:HWND;
begin
  FillChar(si, Sizeof(si), #0);//必须将si结构的成员初始化为0
  si.cb := Sizeof(si);
  si.dwFlags := STARTF_USESHOWWINDOW;
  si.wShowWindow := SW_hide;
  if CreateProcess(pchar('c:\windows\notepad.exe'),  nil, nil, nil, false, CREATE_NEW_CONSOLE, nil, nil, si, pi) then begin
  begin
     //当前进程会一直等到记事本进程结束,然后才往下执行
     WaitForSingleObject(pi.hProcess,INFINITE);
     //////
     //执行你其他的操作
     /////
  end;
end;

------解决方案--------------------
借6楼贴的 WaitForSingleObject

var
proc_info : TProcessInformation;
startinfo : TStartupInfo;
Success : Boolean;
szExeName, szFileName : String;
begin
szExeName := 'c:\windows\notepad.exe';
szFileName := '.\test.txt';
FillChar(proc_info, sizeof(TProcessInformation), 0);
FillChar(startinfo, sizeof(TStartupInfo), 0);
startinfo.cb := sizeof(TStartupInfo);
Success := CreateProcess(nil,
pchar(szExeName + ' ' + szFileName),
nil,
nil,
false,
CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS,
nil,
nil,
startinfo,
proc_info);
if Success then begin
WaitForSingleObject(proc_info.hProcess,INFINITE);
Memo1.Lines.LoadFromFile(szFileName);
end;
end;