![]() |
MainForm nicht in der Taskleiste anzeigen!
Hallo zusammen!
Ich habe ein Problem und auch schon einige Lösungen dafür im Forum gefunden aber leider funktioniert keine so, wie ich es brauche. Ich möchte gerne meine MainForm nicht in der Taskleiste auftauchen sehen. Was ich schon ausprobiert habe ist:
Code:
aber dann ist die Form kurz in der Taskleiste zu sehen, da man diesen Aufruf nur unter FormShow verwenden kann.
ShowWindow(GetWindow(Handle,GW_OWNER),SW_HIDE);
Auch habe ich schon das ausprobiert
Code:
Aber so wird meine Gesamtes Programm ausgeblendet.
Application.ShowMainForm := False;
Ich will nur meine Form öffnen ohne das diese in der Taskbar erscheint! Vielleicht hat ja einer von Euch eine Idee! Vielen Dank schonmal! Gruß Michael! |
Re: MainForm nicht in der Taskleiste anzeigen!
Also wenn ich ShowWindow mit SW_HIDE im FormShow-Event reinsetze, dann taucht kein Eintrag in der Taskbar auf, auch nicht für kurze Zeit.
|
Re: MainForm nicht in der Taskleiste anzeigen!
Dann hast Du einen guten und schnellen Rechner!
Aber es ist einfach so, das der Rechner einige macht zwischen Application.Run und FormShow der MainForm und in dieser Zeit ist die der Eintrag sichtbar! Mann kann es auch anders herraus finden. Du machst Deine Leiste einfach relativ voll mit Applikationen und dann startest Du Dein Programm! Jetzt werden wie Programme in der Leiste kurz gestaucht und bleiben so! Jetzt hast Du gesehen, das es doch kurz da war! Bei langsameren Rechnern, sieht man das wirklich gut! Leider! Aber es muß doch noch eine Andere Möglichkeit geben??? |
Re: MainForm nicht in der Taskleiste anzeigen!
Hm, dann fällt mir auf die Schnelle auch keine einfache Lösung ein.
|
Re: MainForm nicht in der Taskleiste anzeigen!
Dank Dir aufjeden Fall!
Vielleicht hast ja nochmal eine Idee, wie das gehen könnte??? |
Re: MainForm nicht in der Taskleiste anzeigen!
Andere frage: Ist das denn so schlimm, wenn das ne Sekunde angezeigt wird?
sonst würde mir nur noch einfallen auf die VCL zu verzichten oder am Anfang keine Form zu createn und das selber machen, vielleicht kann man das dann eher beeinflussen... |
Re: MainForm nicht in der Taskleiste anzeigen!
Moin Brainmue,
pack das Application.ShowMainForm := false mal in die Projektdatei (Projekt/Quelltext anzeigen) direkt hinter Application.Initialize. |
Re: MainForm nicht in der Taskleiste anzeigen!
Zitat:
Aber das hat leider auch nicht den gewünschten Effekt erbracht! Jetzt erscheint wieder überhaupt keine Form mehr! |
Re: MainForm nicht in der Taskleiste anzeigen!
Schreib gleich am Anfang hinter Application.Initialize:
Delphi-Quellcode:
ShowWindow(Application.Handle, SW_HIDE);
|
Re: MainForm nicht in der Taskleiste anzeigen!
Vielen Dank!
Aber das geht auch nicht! Es ist aber eigentlich klar, wenn man darüber nachdenkt. Der Handle den wir da ermitteln ist ja der, der Applikation und nicht der, der Form! Das bedeutet ja, das wir versuchen die Applikation zu verstecken! :) Das will ich ja eigentlich überhaupt nicht. Wäre aber ein schönes Abfallprodukt! |
Re: MainForm nicht in der Taskleiste anzeigen!
Ist denn das wirklich so schlimm, dass man eine sekunde den Button in der Taskleiste sieht?
Denn irgendwie ist entspricht der Aufwand nicht dem Nutzen ;-) |
Re: MainForm nicht in der Taskleiste anzeigen!
Im Prinzip würde ich das auch so sehen!
Aber wie es halt so ist, da kommt einer und sagt es muß so sein! Und dann mußst Du es Programmieren. Da kann man nicht viel machen! Außerdem ist es ein einfaches Problem mit scheinbar großem Ausmaß... Jetzt hat es mich irgentwie bei der Ehre gepackt und ich will es lösen! Vielleicht muß ich eine eigene Komponete dazu schreiben. Mal schaun. |
Re: MainForm nicht in der Taskleiste anzeigen!
Delphi-Quellcode:
Application.MainForm.Hide;
|
Re: MainForm nicht in der Taskleiste anzeigen!
Zitat:
|
Re: MainForm nicht in der Taskleiste anzeigen!
Mir ist gerade noch was eingefallen:
Versuch mal das hier:
Delphi-Quellcode:
Und dann wieder Form1 freigeben...
{in der Projektdatei}
Application.Initialize; Application.CreateForm(TForm2, Form2); Application.CreateForm(TForm1, Form1); Application.ShowMainForm := falsE; Application.Run; Form2.Show Wenn das nciht klappt, dann weiß ich auch nciht weiter. |
Re: MainForm nicht in der Taskleiste anzeigen!
Danke das geht aber leider auch nicht so!
Ich bin gerade auf der MSDN Seite und schau mal ob die da nicht doch was wissen! Es ist wirklich nett, das Du Dir soviele Gedanken machst! Danke! Es muß aber doch eine Lösung geben........ :wall: |
Re: MainForm nicht in der Taskleiste anzeigen!
Habe es gerade noch mal ausprobiert, bei mir funktioniert es sehr gut.
Es wird eigentlich nichts in die Taskbar eingeblendet. |
Re: MainForm nicht in der Taskleiste anzeigen!
Zitat:
|
Re: MainForm nicht in der Taskleiste anzeigen!
Zitat:
Nichts für ungut aber ich habe alles ausprobiert und unter Last des Rechners geht es eben nicht!
Code:
Der obere Code geht übrigens überhaupt nicht. Denn ich will ja nicht das ganze Fenster verschinden haben sondern eben nur den Taskbar Eintrag!
Application.MainForm.Hide;
|
Re: MainForm nicht in der Taskleiste anzeigen!
Zitat:
ShowWindow(Form1.Handle, SW_HIDE) wäre das gleiche wie Form1.Hide. |
Re: MainForm nicht in der Taskleiste anzeigen!
Danke für die Nachhilfe!
So habe ich das noch nie gesehen! Aber jetzt hat es "KLICK" gemacht... :idea: Aber mein Problem ist damit auch nicht gelöst! Das ist schade... Dank Dir nochmals... Gruß Michael! |
Re: MainForm nicht in der Taskleiste anzeigen!
Ich habe evtl noch eine Idee ;-) (aber nur wenn ich die Fragestellung noch richtig im Kopf habe ;))
OK versuch es mal so:
Delphi-Quellcode:
bzw.
SetWindowLong( Application.Handle, GWL_EXSTYLE,
GetWindowLong(Application.Handle, GWL_EXSTYLE) or WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW);
Delphi-Quellcode:
Mit dem ersten wird die gesamte Anwendung aus der Taskbar herausgenommen. Evtl musst du, wenn es das 2. nicht funktioniert, den ersten Code nehmen und dann jedes Form wieder in die Taskbar einfügen.
SetWindowLong( Form1.Handle, GWL_EXSTYLE,
GetWindowLong(Application.Handle, GWL_EXSTYLE) or WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW); Kannst du dann glaube ich so machen:
Delphi-Quellcode:
Ich hoffe das hilft dir jetzt ;-) In meinem Programm lasse ich es auf jedenfall so :mrgreen:
SetWindowLong(Handle, GWL_ExStyle, WS_Ex_AppWindow);
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:38 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz