Hallo,
ich hab mal ne Frage:
ich habe mir mal eine TrayIcon-Komponente geschrieben, in der zwei Proceduren sind:
Delphi-Quellcode:
procedure TTrayIcon.ShowMainForm;
begin
with Application
do
begin
//maximieren
Restore;
//WindowState überschreiben
If MainForm.WindowState = wsMinimized
then
MainForm.WindowState := wsNormal;
//Haupt-Form anzeigen
MainForm.Show;
//in den Vordergrund bringen
SetForegroundWindow(MainForm.Handle);
//Taskbar-Icon anzeigen
If not IsWindowVisible(
Handle)
then
ShowWindow(
Handle, SW_SHOW);
end;
end;
procedure TTrayIcon.HideMainForm;
begin
with Application
do
begin
//minimieren
Minimize;
//Haupt-Form verstecken
MainForm.Hide;
//Taskbar-Icon verstecken
If IsWindowVisible(
Handle)
then
ShowWindow(
Handle, SW_HIDE);
end;
end;
Mit "HideMainForm" kann man die MainForm verstecken und mit "ShowMainForm" die Form wieder anzeigen.
Wie man sieht, wird auch der TaskBar-Eintrag versteckt bzw. angezeigt.
Das funktioniert auch (eigentlich). Wenn das Programm aber eine längere Zeit nicht angezeigt wird (also nur das TrayIcon sichtbar ist), dann wird beim nächsten ShowMainForm nur die MainForm angezeigt, nicht der Taskbar-Eintrag.
Ich habe den Verdacht, dass es vielleicht was mit dem Bildschirmschoner oder ähnlichem zu tun hat.
Kann mir da jemand helfen?
Ach ja! Bitte keine Antworten wie: "Verwende doch einfach CoolTrayIcon oder die Indies oder so" - ich bleib bei meiner Compo