目前,我正在使用以下函数来使用默认编辑器打开文件,并确保我的应用程序等待用户关闭编辑器窗口。
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;
答案 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;