AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Icon nicht in TaskBar anzeigen
Thema durchsuchen
Ansicht
Themen-Optionen

Icon nicht in TaskBar anzeigen

Ein Thema von EWeiss · begonnen am 21. Jul 2017 · letzter Beitrag vom 22. Jul 2017
Antwort Antwort
EWeiss
(Gast)

n/a Beiträge
 
#1

Icon nicht in TaskBar anzeigen

  Alt 21. Jul 2017, 22:12
Hab da ein Problem das ich mir nicht erklären kann.
Ich erstelle eine Form

Delphi-Quellcode:
  FParentHandle := WinHandle;

  LoadFromIniFile(AIniFile);
  Application.CreateForm(TForm, FPreview);

  FPreview.BorderStyle := bsNone;
  FPreview.SetBounds(Left, Top, Width, Height);
  FPreview.Color := clBlack;

  FPreview.AlphaBlend := True;
  FPreview.AlphaBlendValue := 255;
  FPreviewHandle := SetParent(WinHandle, FPreview.Handle);
  
  MoveWindow(WinHandle, 0, 0, Width, Height, False);
  SkinEngine.ShowMainWindow(WinHandle, 5);

  FPreview.Show;
Wenn ich diese nun mit
FPreview.Free freigebe dann wird das Icon kurz in der TaskBar angezeigt.
Das nervt extrem.. zudem verursacht das ein neu zeichnen der Anwendung.

Habe da schon alle mir bekannten Möglichkeiten versucht.

Application.MainFormOnTaskBar := False;

und diverse andere API Funktionen inklusive das verändern der Style.

Also was gibt es da noch um das zu verhindern?
Das Fenster wird in einer DLL erstellt.

Delphi-Quellcode:
  ShowWindow(FPreview.Handle, SW_HIDE);
  SetWindowLong(FPreview.Handle, GWL_EXSTYLE,
    GetWindowLong(FPreview.Handle, GWL_EXSTYLE) or WS_EX_TOOLWINDOW);
Hat keinen Effekt..
Verstehe nicht warum beim beenden der Form das Icon kurz aufblitzt.

gruss

Geändert von EWeiss (21. Jul 2017 um 22:44 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.346 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Icon nicht in TaskBar anzeigen

  Alt 22. Jul 2017, 06:39
Habe da schon alle mir bekannten Möglichkeiten versucht.

Application.MainFormOnTaskBar := False;
Ich hoffe du weißt auch was das macht. Das bewirkt, dass nicht das Formular selbst in der Taskleiste angezeigt wird, sondern das versteckte Anwendungsfenster von Delphi. Das wiederum bewirkt, dass Delphi das Icon in der Taskleiste automatisch ein- und ausblendet, wenn Formulare angezeigt werden oder versteckt werden.

Das sollte aber in der Anwendung reichen. In der DLL sollte das nicht nötig sein. In der DLL kannst du das Fenster auch denke ich ganz normal erstellen ohne Application.

Ich denke, dass es reicht, wenn du das Formular selbst auf der Taskleiste anzeigen lässt und in den überschriebenen CreateParams WS_EX_APPWINDOW heraus nimmst.

Mehr zu dem Thema findest du unter:
https://blogs.msdn.microsoft.com/old...9-00/?p=41283/
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!

Geändert von jaenicke (22. Jul 2017 um 07:00 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: Icon nicht in TaskBar anzeigen

  Alt 22. Jul 2017, 08:03
Zitat:
Ich denke, dass es reicht, wenn du das Formular selbst auf der Taskleiste anzeigen lässt und in den überschriebenen CreateParams WS_EX_APPWINDOW heraus nimmst.
Ich möchte keine 2 Icons in der TaskBar haben 1x von der Form und 1x vom der Non-Vcl Anwendung von der das Fenster Animiert wird.

Eigentlich müsste es ausreichen den ExStyle " WS_EX_TOOLWINDOW " zu setzen tut es aber nicht.
auch das hat keine Auswirkung " or WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW "

ok.. werde die Form rauswerfen und mit Win32Api Mitteln weitermachen.
Subclassing und bla, bla, bla

Danke

gruss
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.346 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Icon nicht in TaskBar anzeigen

  Alt 22. Jul 2017, 17:11
Im Anhang findest du eine DLL und eine Hostanwendung, die nur einen Button zur Anzeige eines DLL-Formulars enthält. (Ja, das wird nicht von mir wieder freigegeben, ist ja nur ein Beispiel.)

Beide Formulare enthalten ein überschriebenes CreateParams wie ich es ja erwähnt hatte. Aktuell wird gar nichts in der Taskleiste angezeigt. Wenn du die beiden Zeilen nach inherited auskommentierst, wird das entsprechende Formular wieder angezeigt, sowohl in DLL als auch im Host.

Deinen Fall bekommst du also indem du in Unit14 das CreateParams auskommentierst:
Die Hostanwendung zeigt den Taskleisteneintrag an, das Fenster der DLL nicht.
Angehängte Dateien
Dateityp: 7z DLL Taskbar.7z (5,5 KB, 10x aufgerufen)
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

AW: Icon nicht in TaskBar anzeigen

  Alt 22. Jul 2017, 17:41
Im Anhang findest du eine DLL und eine Hostanwendung, die nur einen Button zur Anzeige eines DLL-Formulars enthält. (Ja, das wird nicht von mir wieder freigegeben, ist ja nur ein Beispiel.)

Beide Formulare enthalten ein überschriebenes CreateParams wie ich es ja erwähnt hatte. Aktuell wird gar nichts in der Taskleiste angezeigt. Wenn du die beiden Zeilen nach inherited auskommentierst, wird das entsprechende Formular wieder angezeigt, sowohl in DLL als auch im Host.

Deinen Fall bekommst du also indem du in Unit14 das CreateParams auskommentierst:
Die Hostanwendung zeigt den Taskleisteneintrag an, das Fenster der DLL nicht.
Danke für deine Mühe und dem Beispiel.
Ich muss aber sagen das sich dieses Thema erledigt hat da ich keine VCL-Form mehr verwende somit gibt es kein SetParent und auch kein Icon mehr das ich sehen könnte.

Aber werde mir dein Beispiel trotzdem einmal anschauen.

gruss
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:28 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz