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;また、メインフォーム(Form1)、サブフォーム(Form2)どちらを表示してもタスクバーに表示しないには
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;関連投稿
コメント