![]() |
Programm nur als Tray sichtbar
TNA_FragenCount++;
Mal zur Abwechslung eine Tray Frage. Ich will das mein Programm nur als TrayIcon sichtbar ist, und nicht auch noch in der Taskbar. Hab vorhin ca 30min hier im Forum gesucht aber nur eine Antwort gefunden die bei mir nicht zu funktionieren scheint (Delphi3):
Delphi-Quellcode:
Hat bei mir irgendwie keine Wirkung, obwohl irgendwo geschrieben wurde dass es so funktionieren sollte. Hat jemand eine Idee?
ShowWindow(self.Handle, SW_HIDE);
P.S.: Ich habs ohne Komponente gemacht und will auch wegen allgemeiner Resourcen Einsparung keine verwenden :) |
Re: Programm nur als Tray sichtbar
Moin!
Bevor ich mich auf die Suche begebe was bei dir Self ist, folgender Vorschlag: ![]() MfG Muetze1 |
Re: Programm nur als Tray sichtbar
achso ja, self ist bei mir ein formular, ich verwende also das formular handle.
dein beispiel programm scheint auch leider kein delphi3 projekt zu sein, kommt ein stream fehler beim öffnen. source kann ich aber anschaun und wenn ich das richtig sehe wird da ja nur das hinzufügen und entfernen des TNA Icons selber behandelt. mir gings ja aber um das unsichtbarmachen des "normalen" balkens, also der balken der links _neben den tray icons ist. halt der programm balken der bei ganz normalen programmen in der taskbar erscheint. den will ich verstecken das nur noch das trayicon, sprich tna sprich das kleine ding bei der uhr zu sehen ist :) trotzdem danke schonmal |
Re: Programm nur als Tray sichtbar
![]()
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ShellAPI, Menus; type TForm1 = class(TForm) PopupMenu1: TPopupMenu; Item11: TMenuItem; Item21: TMenuItem; Item31: TMenuItem; procedure FormDestroy(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private-Deklarationen } IconData: TNotifyIconData; public { Public-Deklarationen } procedure WndProc(var Msg: TMessage); override; procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND; end; var Form1: TForm1; implementation {$R *.dfm} //////////////////////////////////////////////////////////////////////////////// // auf Mausklicks reagieren, Fensterprozedur erweitern procedure TForm1.WndProc(var Msg: TMessage); var Point: TPoint; begin if Msg.Msg = WM_USER + 20 then begin case Msg.lParam of WM_RBUTTONDOWN: begin SetForegroundWindow(Handle); GetCursorPos(Point); PopUpMenu1.PopUp(Point.X, Point.Y); end; WM_LBUTTONDOWN: begin //ShowMessage('links runter'); end; WM_LBUTTONDBLCLK: begin Form1.Show; // Icon nur anzeigen wenn Fenster minimiert Shell_NotifyIcon(NIM_DELETE, @IconData); end; end; end; inherited; end; //////////////////////////////////////////////////////////////////////////////// // beim Minimieren Fomr verstecken und Icon in die TNA procedure TForm1.WMSysCommand(var Message: TWMSysCommand); begin if Message.CmdType and $FFF0 = SC_MINIMIZE then begin Hide; // <-- Versteckt das Fenster und läßt es aus der Taskbar verschwinden // Icon nur anzeigen wenn Fenster minimiert Shell_NotifyIcon(NIM_ADD, @IconData); end else inherited; end; //////////////////////////////////////////////////////////////////////////////// // Beim beenden Icon entfernen procedure TForm1.FormDestroy(Sender: TObject); begin Shell_NotifyIcon(NIM_DELETE, @IconData); end; //////////////////////////////////////////////////////////////////////////////// // Beim Erstellen des Formulares TNotifyIconData-Struktur initialisieren procedure TForm1.FormCreate(Sender: TObject); begin //Application.ShowMainForm := False; //Programm gar nicht erst anzeigen IconData.cbSize := SizeOf(IconData); IconData.Wnd := Handle; IconData.uID := 100; IconData.uFlags := NIF_MESSAGE + NIF_ICON + NIF_TIP; IconData.uCallBackMessage := WM_USER + 20; IconData.hIcon := Application.Icon.Handle; IconData.szTip := 'Dies ist ein TNA-Icon'; //Shell_NotifyIcon(NIM_ADD, @IconData); // fügt das Icon ein end; end; end. |
Re: Programm nur als Tray sichtbar
nein hide kenn ich, das schaltet tform.visible auf false und versteckt somit auch das formular. hm sorry hatte mich unklar ausgedrückt: alles was ich verstecken will ist der balken in der taskleiste nicht aber die anwendung. ich will sozusagen anstatt dem balken ein trayicon. das trayicon soll immer zu sehen sein (aber damit hab ich ja auch keine probleme) und der taskbar programm balken nie.
franz alexanders tbm programm ist zb dazu in der lage, dazu gibs aber leider keine sourcen |
Re: Programm nur als Tray sichtbar
benutz doch einfach CoolTrayIcon
funzt super! zum download zb auf ![]() ![]() ![]() und vielen, vielen anderen sites |
Re: Programm nur als Tray sichtbar
nein danke wie schon gesagt möchte ich keine fremd komponente benutzen, cooltray icon bläht die anwendung von 200 auf >400k auf. auf dem zielsystem ist resourcensparen angesagt und angebracht und außerdem bin ich neugierig :coder2:
|
Re: Programm nur als Tray sichtbar
Wenn ich dich richtig verstanden habe dürfte dir das helfen
![]() |
Re: Programm nur als Tray sichtbar
Zitat:
wunderbar. bei den anderen beispielen wurde bei ShowWindow immer das Handle vom Formular verwendet was nicht funktioniert. Mit dem handle das GetWindow(Handle, GW_OWNER) zurückliefert funktioniert es aber einwandfrei :cheers: noch ein kleines manko: windows reserviert anfangs trotzdem platz in der taskleiste für das programm. wenn man ein programm startet schieben sich die anderen ja etwas zusammen, vorrausgesetzt es sind genug. er erzeugt mir also beim start eine lücke. erst wenn ich was neues starte oder ein vorhandenes schließe zeichnet er die leiste neu und entfernt die lücke wieder. aber halb so wild. aber hat jemand ne ahnung wieso mein tna icon verschwindet (beim drüberfahren, neuzeichnen) wenn ich davor während der laufzeit von formstyle = fsStayOnTop nach formstyle = fsNormal geschaltet habe? andersrum funktionierts :gruebel: |
Re: Programm nur als Tray sichtbar
Zitat:
Application.minimize, Form.Hide, etc. führen nicht dazu, dass mein Programm dann im Tray angezeigt wird. Im Fenstermenü über "Minimieren" geht es. Gruß Igotcha |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:20 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