2026/02/01(日) [n年前の日記]
#1 [lazarus] Lazarusで外部プログラムを実行したい
Lazarus 4.4 を勉強中。環境は Windows11 x64 25H2。
Lazarus から外部プログラムを実行をしたい。実行したら自身は終了する。
TProcess とやらを使うのが一般的らしい。uses に process を追加すれば使えるようになる。コンソールアプリとして書いて動かしてみた。 *1
_LauncherTest1.lpr
notepad.exe (メモ帳)を起動して、自身はそのまま終了する。
以下、参考ページ。
_Executing External Programs - Free Pascal wiki
_Executing External Programs/ja - Free Pascal wiki
_Lazarusで別のプロセスを呼び出す - 高見知英の技術ログ
_外部プログラムの呼び出し(Executing External Programs): 天晴の小部屋
ちなみに、先日 Delphi で同じことをした時は ShellExecute() を使った。Lazarus でも同じ方法が使えるらしいけど、TProcess を使えばクロスプラットフォーム対応になるらしい。
Lazarus から外部プログラムを実行をしたい。実行したら自身は終了する。
TProcess とやらを使うのが一般的らしい。uses に process を追加すれば使えるようになる。コンソールアプリとして書いて動かしてみた。 *1
_LauncherTest1.lpr
program LauncherTest1;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}
cthreads,
{$ENDIF}
Classes,
SysUtils,
process;
var
ExternalApp: string;
Params: TStringList;
AProcess: TProcess;
begin
ExternalApp := 'notepad';
AProcess := TProcess.Create(nil);
Params := TStringList.Create;
try
Params.Add('LauncherTest1.lpr');
AProcess.Executable := ExternalApp;
AProcess.Parameters.AddStrings(Params);
AProcess.Options := [poNoConsole];
try
WriteLn('Starting: ', ExternalApp);
AProcess.Execute;
WriteLn('Success. Closing launcher...');
except
on E: Exception do
begin
WriteLn('Error: ', E.Message);
end;
end;
finally
Params.Free;
AProcess.Free;
end;
Sleep(1000);
end.
notepad.exe (メモ帳)を起動して、自身はそのまま終了する。
以下、参考ページ。
_Executing External Programs - Free Pascal wiki
_Executing External Programs/ja - Free Pascal wiki
_Lazarusで別のプロセスを呼び出す - 高見知英の技術ログ
_外部プログラムの呼び出し(Executing External Programs): 天晴の小部屋
ちなみに、先日 Delphi で同じことをした時は ShellExecute() を使った。Lazarus でも同じ方法が使えるらしいけど、TProcess を使えばクロスプラットフォーム対応になるらしい。
*1: Lazarus で新規プロジェクトを選ぶ際に「プログラム」を選ぶ。「コンソールアプリケーション」を選んでしまうとちょっと記述が増えてしまう。
[ ツッコむ ]
以上です。