システムメニューを変更する

システムメニューに項目を追加したり、削除したりする処理は以下の通り。

  1. GetSystemMenuAPI でシステムメニューのハンドルを取得。
  2. メニューを追加するには、InsertMenuAPI、削除するには DeleteMenuAPIを使う。
  3. WM_SYSCOMMANDに応答するメッセージハンドラを定義して、メニューをクリックしたときの処理を書く。

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
    procedure WMSysCommand(var Msg: TWMSysCommand);
      message WM_SYSCOMMAND;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
  hMenu: THandle;
begin
  //システムメニューのハンドルを取得
  hMenu := GetSystemMenu(Handle, False);
  // セパレータを追加
  InsertMenu(hMenu, $FFFFFFFF, MF_BYPOSITION, 0, nil);
  //バージョン情報をメニューに追加
  InsertMenu(hMenu, $FFFFFFFF, MF_BYPOSITION, 100, 'バージョン情報(&A)...');
end;

procedure TForm1.WMSysCommand(var Msg: TWMSysCommand);
begin
  case Msg.CmdType of
    100:
      ShowMessage('バージョン情報');
    else
      inherited;
  end;
end;

end.

Tips

ブログ

リンク