如何使用指定的编辑器编辑文件?

时间:2016-09-07 13:12:31

标签: delphi

目前,我正在使用以下函数来使用默认编辑器打开文件,并确保我的应用程序等待用户关闭编辑器窗口。

function EditAndWait(const AFileName : string) : boolean;
var
  Info: TShellExecuteInfo;
begin
  FillChar(Info, SizeOf(Info), 0);
  Info.cbSize := SizeOf(Info);
  Info.lpVerb := 'edit';
  Info.lpFile := PAnsiChar(AFileName);
  Info.nShow := SW_SHOW;
  Info.fMask := SEE_MASK_NOCLOSEPROCESS;
  Result := ShellExecuteEx(@Info);
  if(Result) and (Info.hProcess <> 0) then 
  begin
    WaitForSingleObject(Info.hProcess, Infinite);
    CloseHandle(Info.hProcess);
  end;
end;

我想编写一个类似的函数,允许指定用于编辑的编辑器可执行文件。

function EditAndWait(const AFileName : string; const AEditor : string) : boolean;
begin
  //...
end;

1 个答案:

答案 0 :(得分:1)

正如David所说,可以通过运行编辑器程序并将文件作为参数传递来完成。

有几种方法可以做到这一点。这与当前函数最相似:

function EditAndWait(const AFileName : string; const AEditor : string) : boolean;
var
  Info: TShellExecuteInfo;
begin
  FillChar(Info, SizeOf(Info), 0);
  Info.cbSize := SizeOf(Info);
  Info.lpVerb := 'open';
  Info.lpFile := PChar(AEditor);
  Info.nShow := SW_SHOW;
  Info.fMask := SEE_MASK_NOCLOSEPROCESS;
  Info.lpParameters := PChar(AFileName);
  Result := ShellExecuteEx(@Info);
  if(Result) and (Info.hProcess <> 0) then 
  begin
    CloseHandle(Info.hProcess);
    WaitForSingleObject(Info.hProcess, Infinite);
  end;
end;