Hallo,
ich habe ein Programm, das sich beim Minimieren in den Tray legt und dabei natürlich vollkommen korrekt seinen Taskleisten-Button verliert. Nun habe ich für dieses Programm ein zusätzliches Formular erstellt, eine Art Info-Fenster das über der Taskleiste hochgefahren kommt. Mit diesem hat mein Programm nun auf einmal auch wenn es in der
TNA liegt einen Taskleisten-Button. Das möchte ich nicht!
Bevor mir jetzt jemand sagt "benutz die Suche": Hab ich, danke. Ich hab es immerhin soweit hinbekommen jetzt, dass er mir den dämlichen Button nicht mehr ständig vorhält, sondern nur wenn das Infofenster tatsächlich gerade angezeigt wird. Hier einige relevante Codeauszüge:
Im Hauptprogamm:
Delphi-Quellcode:
Application.CreateForm(TfrmInfo, frmInfo);
frmInfo.Hide; // <-- Damit wird der Button zumindest am Anfang mal nicht dargestellt (außer das Hauptfenster ist aktiv).
Für das Hauptfenster, um den Button wieder in die Taskbar einzutragen:
Delphi-Quellcode:
procedure TfrmMain.FormShow(Sender: TObject);
begin
// frmInfo may have hidden the taskbar button while the form was minimized. Re-enter:
ShowWindow(Application.Handle, SW_HIDE);
SetWindowLong(Application.Handle, GWL_EXSTYLE, GetWindowLong(Application.Handle, GWL_EXSTYLE) or WS_EX_APPWINDOW and not WS_EX_TOOLWINDOW);
ShowWindow(Application.Handle, SW_SHOW);
end;
Und zuguterletzt:
Delphi-Quellcode:
procedure TfrmInfo.FormShow(Sender: TObject);
begin
if not Application.MainForm.Visible
then begin
ShowWindow(Application.Handle, SW_HIDE);
SetWindowLong(
Handle, GWL_EXSTYLE, GetWindowLong(
Handle, GWL_EXSTYLE)
or WS_EX_TOOLWINDOW
and not WS_EX_APPWINDOW);
ShowWindow(Application.Handle, SW_SHOW);
ShowWindow(
Handle, SW_HIDE);
SetWindowLong(Application.Handle, GWL_EXSTYLE, GetWindowLong(Application.Handle, GWL_EXSTYLE)
or WS_EX_TOOLWINDOW
and not WS_EX_APPWINDOW);
ShowWindow(
Handle, SW_SHOW);
end;
end;
Und das interessiert ihn jetzt überhaupt nicht--sobald das Infofenster hochgefahren kommt, legt er mir den Taskbarbutton an.
Am liebsten wäre es mir ja, ich müsste diese ganzen Verrenkungen überhaupt nicht anstellen, und das Infofenster wird--zumindest was das Verhalten der Taskbar angeht--einfach ignoriert. Aber alle Versuche die ich bis jetzt dahingehend unternommen habe (insbesondere Style auf WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW) sind leider ins Leere gelaufen.
Jemand ne Idee?
Gruß
Christian