mieki256's diary



2026/02/01() [n年前の日記]

#1 [lazarus] Lazarusで外部プログラムを実行したい

Lazarus 4.4 を勉強中。環境は Windows11 x64 25H2。

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 で新規プロジェクトを選ぶ際に「プログラム」を選ぶ。「コンソールアプリケーション」を選んでしまうとちょっと記述が増えてしまう。

以上です。

過去ログ表示

Prev - 2026/02 -
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project