AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi TaskIcon wird unter Vista nicht gelöscht.
Thema durchsuchen
Ansicht
Themen-Optionen

TaskIcon wird unter Vista nicht gelöscht.

Ein Thema von RaSoWa1 · begonnen am 25. Mai 2009 · letzter Beitrag vom 25. Mai 2009
Antwort Antwort
RaSoWa1

Registriert seit: 1. Jun 2006
Ort: Halle/Saale
140 Beiträge
 
Delphi 2010 Professional
 
#1

TaskIcon wird unter Vista nicht gelöscht.

  Alt 25. Mai 2009, 11:29
Hallo,

mit folgendem Code generiere und entferne ich in der Taskbar ein Icon:
Delphi-Quellcode:
procedure TaskBarAddIcon(Hnd: HWnd; CallbackMsg: UINT; Icon: TIcon; Cap: string);
var NIData: TNotifyIconData;
begin
  Fillchar(NIData,Sizeof(NIData),0);
  NIData.cbSize := Sizeof(NIData);
  NIData.Wnd := Hnd;
  NIData.uID := 1;
  NIData.uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP;
  NIData.uCallbackMessage := CallbackMsg;
  NIData.hIcon := Icon.Handle;
  strcopy(NIData.szTip, PChar(Cap));
  Shell_NotifyIcon(NIM_ADD, @NIData);
end;

procedure TaskBarFreeIcon(Hnd: HWnd);
var NIData: TNotifyIconData;
begin
  FillChar(NIData,Sizeof(NIData),0);
  NIData.cbSize := Sizeof(NotifyIconData);
  NIData.Wnd := Hnd;
  NIData.uID := 1;
  Shell_NotifyIcon(NIM_DELETE, @NIData);
end;
Problem:
Nach der Freigabe wird das Icon in der Taskbar nicht gelöscht. Es verschwindet erst wenn ich mit der Maus darüber fahre. Unter XP kannte ich dieses Verhalten nicht.
Liegt es am Vista?
Wie kann ich Vista dazu bringen die Icon zu aktualisieren?

Gruß Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: TaskIcon wird unter Vista nicht gelöscht.

  Alt 25. Mai 2009, 11:31
Stimmt das Handle? Was sagt GetLastError?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Tyrael Y.

Registriert seit: 28. Jul 2003
Ort: Stuttgart
1.093 Beiträge
 
Delphi 2007 Professional
 
#3

Re: TaskIcon wird unter Vista nicht gelöscht.

  Alt 25. Mai 2009, 11:54
Das ist kein Fehler im eigentlichen Sinn.
Dieses Verhalten kenne ich seit Windows98 auf allen Win-Systemen.

Der Bereich wurde nur noch nicht neu gezeichnet mehr nicht.
Levent Yildirim
Erzeugung von Icons aus Bildern:IconLev
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: TaskIcon wird unter Vista nicht gelöscht.

  Alt 25. Mai 2009, 11:58
Also ich kenne das Verhalten nur, wenn man einen Prozess mit einem Icon in der TNA abschiesst und er so keine Möglichkeit mehr hat das Icon zu entfernen. Ansonsten löschen alle meine Programme ihr Icon sauber aus der TNA, wenn ich sie beende, ohne irgendwelche Klimmzüge mit Neuzeichnen usw.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
RaSoWa1

Registriert seit: 1. Jun 2006
Ort: Halle/Saale
140 Beiträge
 
Delphi 2010 Professional
 
#5

Re: TaskIcon wird unter Vista nicht gelöscht.

  Alt 25. Mai 2009, 12:07
Die Anwendung läuft im Hintergrund und wird aus einer Prozedur mit "PostMessage(Application.Handle, WM_CLOSE, 0, 0)" beendet.

Handle ist immer "Application.Handle"

GetLastError (habe ich gerade geprüft) liefert unmmittelbar nach TaskBarFreeIcon im OnClose: 1447 "Das Fenster hat keine Bildlaufleiste".
Eigenartig!

Gruß Klaus
Klaus
  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 14:18 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