В настоящее время я использую следующую функцию, чтобы открыть файл, используя редактор по умолчанию, и убедитесь, что мое приложение ждет, пока пользователь не закроет окно редактора.Как отредактировать файл с помощью указанного редактора?
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;
Создать процесс с помощью этого редактора, передающего файл в качестве аргумента. Подождите, пока он закроется. В обеих частях есть много примеров, которые можно найти путем поиска. –
Посмотрите на функцию [CreateProcess] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms682425 (v = vs.85) .aspx). – Sam
Ваш код имеет утечку ресурса. Не забудьте закрыть дескриптор процесса. –