Anwendung nicht in Taskleiste anzeigen (Laufender Betrieb)
-
Hallo Zusammen.
PS:-----Suchfunktion benutzt, Link in FAQ = Tod, Korrektur eines anderen Forumeintrags = Tod.------
Meine Frage ist es, ob es möglich ist. Ein Programm während man damit arbeitet auf der Taskleiste nicht anzeigen zu lassen.
Wie z.B. eine MessageBox.Diese ist ja auch aktiv und wird in der Taskleiste nicht angezeigt.
Höchstwahrscheinlich greift er quasi auf den Taskeintrag des Hauptprogrammes zu.Wielleicht ist es ja auch möglich, das Symbol von der Taskbar neben die Uhr zu versetzen.
Ist dies alles nur möglich, wenn das Formular selbst auch nicht sichtbar ist.
-
Hallo
Einen Alternativ-Thread find ich auf die Schnelle auch nicht.
Wielleicht ist es ja auch möglich, das Symbol von der Taskbar neben die Uhr zu versetzen.
Das geht mit TTrayIcon
bis bald
akari
-
Meine (veraltete)Programmvorlage auf Arbeit verwendet zwar VCL aber nutzt das WINAPI TrayIcon, wenn man daraf klickt werden messages an das Hauptprogramm gesendet aufgefangen und verarbeitet (sowas wie doppelklick zum öffnen oder einfachklick der dann ein popup-box an curosor pos öffnet)
das hauptformular selber wird glaube ich einfach auf hide gestellt, aber sicher bin ich mir da jetzt nicht und vor Do kann ich auch net nachsehen :p
-
Hallo
Du hättest auch die letzte Zeile des Codesnippets lesen sollen
Hinweis: seit der BCB Version 3.0 liefert Borland ebenfalls ein TrayIcon-Beispielprojekt mit. Es befindet sich im Verzeichnis $BCB\Examples\Apps\TrayIcon\.
Und natürlich arbeitet im Hintergrund immer die WinAPI. Was denn sonst?
bis bald
akari
-
Hallo Zusammen.
Danke für eure schnellen Antworten.
Das mit dem Trayicon habe ich auch schon gemacht, jedoch wird dährend der Laufzeit, (während dem Arbeiten mit dem Prog) der Taskleisteneintrag immernoch angezeigt. Das heiss ich habe dan ein Symbol neben der Uhr und eines in der taskleiste.
-
Vielleicht hilft dir
ShowWindow(Application->Handle, SW_HIDE);
-
akari schrieb:
Hallo
Du hättest auch die letzte Zeile des Codesnippets lesen sollen
Hinweis: seit der BCB Version 3.0 liefert Borland ebenfalls ein TrayIcon-Beispielprojekt mit. Es befindet sich im Verzeichnis $BCB\Examples\Apps\TrayIcon\.
Und natürlich arbeitet im Hintergrund immer die WinAPI. Was denn sonst?
bis bald
akariwie gesagt es ist die alte vorlage, damit hab ich herzlich wenig zu tun ... und mit meinem programm bin ich noch nciht ganz soweit das ichs schon in die traybar verstecken kann
EDIT: Sry für OT Spam weis nicht was mich geritten hat auf send zu drücken
-
DWORD dwExStyle=GetWindowLong(Application->Handle,GWL_EXSTYLE); dwExStyle |= WS_EX_TOOLWINDOW; SetWindowLong(Application->Handle,GWL_EXSTYLE,dwExStyle);
Das setzt du in deiner Project.cpp vor dem:
Application->Run();
Und schon siehst du das Programm nicht mehr in der Taskleiste.
-
@tipgeber
Ich habe es jetzt mal so hinkopiert, jedoch erscheint die Anwendung immernoch in der Taskleiste
Application->Initialize(); SetApplicationMainFormOnTaskBar(Application, true); Application->CreateForm(__classid(TForm1), &Form1); DWORD dwExStyle=GetWindowLong(Application->Handle,GWL_EXSTYLE); dwExStyle |= WS_EX_TOOLWINDOW; SetWindowLong(Application->Handle,GWL_EXSTYLE,dwExStyle); Application->Run();
-
Entschludigt, das internet hat gelaggt
-
Nimm das Handle von TForm1 !
-
Hallo und danke für eure Hilfen.
Ich habe es nun endlich mit folgendem Code hingekriegt.
SetApplicationMainFormOnTaskBar(Application, false); //<- Eintrag muss auf false sein ShowWindow(Application->Handle,SW_HIDE); //<-Diese Zeile hat gefehlt DWORD dwExStyle=GetWindowLong(Application->Handle,GWL_EXSTYLE); dwExStyle |= WS_EX_TOOLWINDOW; SetWindowLong(Application->Handle,GWL_EXSTYLE,dwExStyle); Application->Run();
Das Formular ist nun Sichtbar und der Taskleisteneintrag ist weg.
-
Hallo
Glückwünsch. Ich habe diesen Thread an den bestehenden FAQ-Eintrag gehängt.
bis bald
akari
-
Hallo, ich habe folgenden code
Application->Initialize(); SetApplicationMainFormOnTaskBar(Application, true); Application->Title = "SOB GmbH - Kontakt + Listen Verwaltung"; Application->CreateForm(__classid(TFM_DM_Main), &FM_DM_Main); Application->CreateForm(__classid(TFM_Appl_LogIn), &FM_Appl_LogIn); Application->CreateForm(__classid(TFM_Main), &FM_Main); Application->CreateForm(__classid(TFM_Users), &FM_Users); Application->CreateForm(__classid(TFM_Lst_Choose), &FM_Lst_Choose); Application->CreateForm(__classid(TFM_Lst_Verw), &FM_Lst_Verw); Application->CreateForm(__classid(TFM_List_Add), &FM_List_Add); Application->CreateForm(__classid(TFM_List_Del), &FM_List_Del); Application->CreateForm(__classid(TFM_DLG_YesNo), &FM_DLG_YesNo); Application->CreateForm(__classid(TFM_Customer_Add), &FM_Customer_Add); Application->CreateForm(__classid(TFM_Customer_Edit), &FM_Customer_Edit); Application->CreateForm(__classid(TFM_DLG_Customer_Lists), &FM_DLG_Customer_Lists); Application->Run();
Es wird das LogIn Fenster geöffnet und nach erfolgreichem LogIn geschlossen und das Main-Formular angezeigt. Nun wird die Anwendung in der Taskleiste während das LogIn Formular angezeigt wird auch angezeigt. Nachdem Das LogIn Fenster jeoch geschlossen ist, ist auch die Anwendung von der Taskleiste verschwunden. Ich hätte diese aber auch gerne angezeigt, wenn das Main Fensteraktiv ist.
-
Hallo Zusammen
@christian_gnoth
Eine Kurze Frage?Wie wechselt du zwischen den Fenstern, oder wie blendest du das Loginfenster auf?
Ich denke, das könnte noch hilfreich sein
-
Die Fenster werden in der oben angegebenen Reihenolge erstellt und dann das erste Fenster angezeigt von der Anwendungssteuerung.
Ich habe alle Fenter-Formulare default mäßig VISIBLE=false eingestellt, sonst würden sie mir alle angezeigt.
So wird nur das erste Fenster als hauptformular angezeigt.
Der User bekommt dann also nur das Login Fenster angezeigt und muss sich einloggen. In Abhängigkeit ob der LogIn erfolgreich war, wird dann das nächste Fenster geöffnet, oder wenn nicht dann die Anwendung beendet.
Da die Anwendungssteuerung Application->Run() das anzeigen des ersten Fensters übernimmt, denke ich, das dieses erste Fenster als Hauptformular der Anwendung registirert wird. Wenn ich nach dem LogIn das Fenster wieder verstecke mit
VISIBLE=false und das nächste Fenster mit VISIBLE=true anzeige, verschwindet auch die Anwendung von der Task-Leiste.
-
ich hab die Lösung gefunden.
Steht in einem anderen Thread des Forums unter FAQ:
Ist quasi das gleiche Porblem. Mein LogIn Fenster ist das Hauptformular und das zweite Formular soll nun auch in der Task-Leiste erscheinen.
Funktioniert auch bestens.