Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi MainForm nicht in der Taskleiste anzeigen! (https://www.delphipraxis.net/6869-mainform-nicht-der-taskleiste-anzeigen.html)

brainmue 25. Jul 2003 13:07


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:
ShowWindow(GetWindow(Handle,GW_OWNER),SW_HIDE);
aber dann ist die Form kurz in der Taskleiste zu sehen, da man diesen Aufruf nur unter FormShow verwenden kann.
Auch habe ich schon das ausprobiert

Code:
Application.ShowMainForm := False;
Aber so wird meine Gesamtes Programm ausgeblendet.

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!

Chewie 25. Jul 2003 13:16

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.

brainmue 25. Jul 2003 13:33

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???

Chewie 25. Jul 2003 13:36

Re: MainForm nicht in der Taskleiste anzeigen!
 
Hm, dann fällt mir auf die Schnelle auch keine einfache Lösung ein.

brainmue 25. Jul 2003 13:48

Re: MainForm nicht in der Taskleiste anzeigen!
 
Dank Dir aufjeden Fall!
Vielleicht hast ja nochmal eine Idee, wie das gehen könnte???

Alexander 25. Jul 2003 14:15

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...

Christian Seehase 25. Jul 2003 14:56

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.

brainmue 25. Jul 2003 15:19

Re: MainForm nicht in der Taskleiste anzeigen!
 
Zitat:

Zitat von Christian Seehase
pack das Application.ShowMainForm := false mal in die Projektdatei (Projekt/Quelltext anzeigen) direkt hinter Application.Initialize.

Vielen Dank!
Aber das hat leider auch nicht den gewünschten Effekt erbracht!
Jetzt erscheint wieder überhaupt keine Form mehr!

Motzi 25. Jul 2003 15:54

Re: MainForm nicht in der Taskleiste anzeigen!
 
Schreib gleich am Anfang hinter Application.Initialize:
Delphi-Quellcode:
ShowWindow(Application.Handle, SW_HIDE);

brainmue 25. Jul 2003 16:24

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!

Alexander 25. Jul 2003 19:15

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 ;-)

brainmue 25. Jul 2003 19:47

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.

Pseudemys Nelsoni 25. Jul 2003 20:00

Re: MainForm nicht in der Taskleiste anzeigen!
 
Delphi-Quellcode:
Application.MainForm.Hide;

Alexander 25. Jul 2003 20:01

Re: MainForm nicht in der Taskleiste anzeigen!
 
Zitat:

Vielleicht muß ich eine eigene Komponete dazu schreiben.
Ich glaube, dass wird dir auch nicht viel nützen, denn bevor eine Komponente createt wird, wird ja die Form erzeugt...

Alexander 25. Jul 2003 20:04

Re: MainForm nicht in der Taskleiste anzeigen!
 
Mir ist gerade noch was eingefallen:
Versuch mal das hier:
Delphi-Quellcode:
{in der Projektdatei}
  Application.Initialize;
  Application.CreateForm(TForm2, Form2);
  Application.CreateForm(TForm1, Form1);

  Application.ShowMainForm := falsE;
  Application.Run;
 Form2.Show
Und dann wieder Form1 freigeben...
Wenn das nciht klappt, dann weiß ich auch nciht weiter.

brainmue 25. Jul 2003 20:48

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:

Alexander 25. Jul 2003 20:50

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.

Pseudemys Nelsoni 25. Jul 2003 21:29

Re: MainForm nicht in der Taskleiste anzeigen!
 
Zitat:

Es muß aber doch eine Lösung geben........
ja blätter mal zurück, da stehen welche...

brainmue 25. Jul 2003 22:27

Re: MainForm nicht in der Taskleiste anzeigen!
 
Zitat:

Zitat von silent
Zitat:

Es muß aber doch eine Lösung geben........
ja blätter mal zurück, da stehen welche...

Sag mal silent liest Du eigentlich was da steht???
Nichts für ungut aber ich habe alles ausprobiert und unter Last des Rechners geht es eben nicht!

Code:
Application.MainForm.Hide;
Der obere Code geht übrigens überhaupt nicht. Denn ich will ja nicht das ganze Fenster verschinden haben sondern eben nur den Taskbar Eintrag!

Chewie 26. Jul 2003 10:03

Re: MainForm nicht in der Taskleiste anzeigen!
 
Zitat:

Zitat von brainmue
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!

Doch, das wolltest du. Nicht deine Form ist für Windows das Hauptfenster, sondern ein unsichtbares Fenster - TApplication. Die Form ist nur das Child der Application - deswegen ist GetWindow(Form1.Handle, GW_OWNER) gleich Application.Handle.

ShowWindow(Form1.Handle, SW_HIDE) wäre das gleiche wie Form1.Hide.

brainmue 26. Jul 2003 12:15

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!

Alexander 31. Jul 2003 07:54

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:
 SetWindowLong( Application.Handle, GWL_EXSTYLE,
                 GetWindowLong(Application.Handle, GWL_EXSTYLE) or
                 WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW);
bzw.
Delphi-Quellcode:
 SetWindowLong( Form1.Handle, GWL_EXSTYLE,
                 GetWindowLong(Application.Handle, GWL_EXSTYLE) or
                 WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW);
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.
Kannst du dann glaube ich so machen:
Delphi-Quellcode:
 SetWindowLong(Handle, GWL_ExStyle, WS_Ex_AppWindow);
Ich hoffe das hilft dir jetzt ;-) In meinem Programm lasse ich es auf jedenfall so :mrgreen:


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