Anwendung nicht in Taskleiste anzeigen (Laufender Betrieb)



  • 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
    akari

    wie 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:

    http://www.c-plusplus.net/forum/viewtopic-var-t-is-39250-and-start-is-0-and-postdays-is-0-and-postorder-is-asc-and-highlight-is-.html

    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.


Anmelden zum Antworten