Here’s a version of the Delphi application that checks for command-line parameters before the form is created. If the parameter /scan is passed, the form will not be created, and the program will terminate. If no parameters are passed, or the parameter is something other than /scan, the form will be created and displayed. Full Delphi Code:

Main Program Block (Project1.dpr):
program Project1;

uses
  Forms, Dialogs, SysUtils, Unit1 in 'Unit1.pas';

{$R *.RES}

begin
  Application.Initialize;

  // Check for command-line parameters
  if ParamCount > 0 then
  begin
    if SameText(ParamStr(1), '/scan') then
    begin
      // If the parameter is "/scan", do not create the form and exit the program
      MessageBox(0, 'Scan mode executed. No form will be created.', 'Info', MB_ICONINFORMATION or MB_OK);
      Halt; // Terminate the program
    end;
  end;

  // If no parameters or parameter is not "/scan", create and display the form
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.
Unit1 (Unit1.pas):
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

type
  TForm1 = class(TForm)
  private
    { Private declarations }
  public
    constructor Create(AOwner: TComponent); override;
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

{ TForm1 }

constructor TForm1.Create(AOwner: TComponent);
begin
  inherited Create(AOwner); // Call the inherited constructor

  // Additional initialization code (if needed)
  ShowMessage('Form created successfully!');
end;

end.

How It Works:

Example Scenarios: - Running Project1.exe will create and display the form. - Running Project1.exe /scan will not create the form. Instead, it will display an informational message and exit the program.

Additional option is what if no form will be created and just display a message in console, just add the $APPTYPE like this:

{$APPTYPE CONSOLE}
program NetworkDownAlarm;

uses
  Forms,
  mainnetdownalarm in 'mainnetdownalarm.pas' {formmain_networkdown};

{$R *.res}

begin
  Application.Initialize;

  if ParamCount > 0 then begin
    if ParamStr(1)='/scan' then
    begin
      // If the parameter is "/scan", do not create the form and exit the program
      writeln('Scan mode executed. No form will be created.');
      Halt; // Terminate the program
    end;
  end;

  Application.CreateForm(Tformmain_networkdown, formmain_networkdown);
  Application.Run;
end.

Another is to create different form base on the parameter:

program Project1;

uses
  Forms, Dialogs, SysUtils, Unit1 in 'Unit1.pas', Unit2 in 'Unit2.pas';

{$R *.RES}

const
  ProgramVersion = '1.0.0'; // Define the program version

begin
  Application.Initialize;

  // Check for command-line parameters
  if ParamCount > 0 then
  begin
    if SameText(ParamStr(1), '/scan') then
    begin
      // If the parameter is "/scan", create and display TScanForm (Unit2)
      Application.CreateForm(TScanForm, ScanForm);
      Application.Run;
      Exit;
    end
    else if SameText(ParamStr(1), '/help') then
    begin
      // If the parameter is "/help", show help text and exit
      MessageBox(0, PChar('Program Version: ' + ProgramVersion + sLineBreak +
                          'Usage:' + sLineBreak +
                          '/scan - Run scan mode (no default form).' + sLineBreak +
                          '/help - Display this help message.'), 
                          'Help', MB_ICONINFORMATION or MB_OK);
      Halt; // Terminate the program
    end;
  end;

  // If no parameters or unrecognized parameter, create and display TForm1
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.

NOTE: just make sure each of the form will have:

public
    { Public declarations }
    constructor Create(AOwner: TComponent); override;
    
constructor Tformmain.Create(AOwner: TComponent);
begin
   inherited Create(AOwner); // Call the inherited constructor
end;