Delphi メインフォーム非表示のアプリで、サブフォームを表示させると、タスクバーに表示されてしまう
Delphi でメインフォーム非表示のアプリで、別のフォームを表示させると、タスクバーに表示されてしまう
プロジェクト側をこんな感じにして起動すると、メインフォーム(Form1)は非表示で、タスクバーにも表示されない
- Application.MainFormOnTaskbar := False;
- Application.ShowMainForm := False;
- Application.CreateForm(TForm1, Form1);
- Application.CreateForm(TForm2, Form2);
ところが、Form2 を表示させた途端、タスクバーに表示された上、タスクバー上で右クリック「ウィンドウを閉じる」でアプリケーションが終了されてしまう
そのため Form2 を表示しても、タスクバーに表示させたくない
Form2 の Createイベントに、下記(SetWindowLong...)を加える
- procedure TForm2.FormCreate(Sender: TObject);
- begin
- SetWindowLong(Application.Handle, GWL_EXSTYLE, WS_EX_TOOLWINDOW);
- end;
- Application.MainFormOnTaskbar := True;
- Application.ShowMainForm := True;
- Application.CreateForm(TForm1, Form1);
- Application.CreateForm(TForm2, Form2);
- procedure TForm1.FormCreate(Sender: TObject);
- begin
- ShowWindow(Handle, SW_HIDE);
- SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) and not WS_EX_APPWINDOW or WS_EX_TOOLWINDOW);
- ShowWindow(Handle, SW_SHOW);
- end;
コメント