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 TrayIcon wird nicht zerstört (https://www.delphipraxis.net/136576-trayicon-wird-nicht-zerstoert.html)

Hybrid666 3. Jul 2009 07:28


TrayIcon wird nicht zerstört
 
hi,

ich benutze in meinen Programmen ungern externe Komponenten, außer es gibt einen guten Grund dafür. nun, ein tray icon ist kein grund für mich eine externe komponente zu nutzen. Also hab ich mir mit hilfe des freundes google und der MSDN das hier zusammengefrickelt:#
Delphi-Quellcode:
  TTrayIcon = class (TObject)
  public
    class procedure OnMessage (var Msg: TMessage);
  end;
Delphi-Quellcode:
  Fillchar(NotifyIconData,Sizeof(NotifyIconData),0);
  NotifyIconData.cbSize := Sizeof(NotifyIconData);
  NotifyIconData.Wnd := AllocatehWnd(TTrayIcon.OnMessage);
  NotifyIconData.uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP;
  NotifyIconData.uCallbackMessage := WM_TASKABAREVENT;
  NotifyIconData.hIcon := Application.Icon.Handle;
  StrPLCopy(NotifyIconData.szTip, PChar ('FLAP ' + Version), SizeOf(NotifyIconData.szTip) - 1);
  Shell_NotifyIcon(NIM_ADD, @NotifyIconData);
  Application.OnMinimize := Form1.OnMinimize;
Funktioniert wunderbar und so wie es soll.

Im OnClose event habe ich das hier noch drin:
Delphi-Quellcode:
TrayIcon.Free;
Nur wird das TrayIcon weiterhin auch nach schließen weiterhin angezeigt. Was hab ich da übersehen? THX

MfG

mkinzler 3. Jul 2009 07:31

Re: TrayIcon wird nicht zerstört
 
Fahr mal mit der Maus darüber.

Hybrid666 3. Jul 2009 07:32

Re: TrayIcon wird nicht zerstört
 
Ja, dann gehts weg ;) das hab ich auch schon bemerkt. Aber ich hätte doch gerne das es von selbst verschwindet. Muss ja schließlich zu machen sein :P

mkinzler 3. Jul 2009 07:33

Re: TrayIcon wird nicht zerstört
 
Liegt nicht am Programm, sondern am Tray ( Explorer.exe)

Hybrid666 3. Jul 2009 07:34

Re: TrayIcon wird nicht zerstört
 
wie das liegt an der Explorer.exe? bei anderen programmen (wo man das trayicon aus und einschalten kann) funktioniert es doch auch o_O. Und es ist auf XP, Vista und 7 der fall, also denk ich nicht das das ein fehler von MS ist sondern eher einer von mir.

DeddyH 3. Jul 2009 08:12

Re: TrayIcon wird nicht zerstört
 
Ich vermisse den Aufruf von
Delphi-Quellcode:
Shell_NotifyIcon(NIM_DELETE, @NotifyIconData);
beim Freigeben.

Hybrid666 3. Jul 2009 08:18

Re: TrayIcon wird nicht zerstört
 
Perfekt! DANKE!


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:45 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