現在、私はデフォルトのエディタを使ってファイルを開き、ユーザがエディタウィンドウを閉じるまで私のアプリケーションが待つように、次の関数を使用しています。指定したエディタを使ってファイルを編集するには?
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
コードにリソースリークがあります。後でプロセスハンドルを閉じることを忘れないでください。 –