![]() |
Tasks im Systray
ich möchte die Tasks im Systray ermitteln (Symbole neben der Uhr). Ich hatte mir gedacht, das ich vielleicht abfragen könnte welche Anwendung zum Symbol verkleiner ist. Aber wie?
Gibts ne Funktion um den Status eines Fensters (also Minimiert, Maximiert oder Symbol) abzufragen? |
Re: Tasks im Systray
Machi oder wie der heißt, hat da eine Unit. Wurde auch schon im Forum erwähnt, wie man die Icons neben der Uhr ermitteln kann.
|
Re: Tasks im Systray
Ich habe
![]() |
Re: Tasks im Systray
Danke für den Tipp, allerdings kann ich diesen Code nicht verwenden, da dieser nur funzt wenn der Explorer läuft. Ich brauche was das ohne laufende Windows - default - Shell lauffähig ist.
Mfg Matthias |
Re: Tasks im Systray
Warum denn das? Was hast du denn vor?
|
Re: Tasks im Systray
ich habe vor eine kleine Shell für Windows2000 zu programmieren. Da ich eine eigenständige Shell proggen will, soll auch kein Explorer im Hintergrund laufen. Es gibt zwar schon ne Menge davon, ich denke nur an Litestep oder Blackbox, aber die sind etwas anders als ich es haben will.
|
Re: Tasks im Systray
Wenn der Explorer nicht laeuft dann auch TrayNotifyWnd nicht.
|
Re: Tasks im Systray
Zitat:
Ergo, selber rausfinden wer alles
Delphi-Quellcode:
aufruft.
Shell_NotifyIcon(NIM_ADD, @IconData);
Viel Spass, da wirst du wohl noch einiges an Arbeit reinstecken müssen. |
Re: Tasks im Systray
Hmmm, ok, ich werde sehen wie ich das dann anstellen kann, aber gibts da nicht wie beim Ausfiltern der Tasks in der Taskbar auch irgendwas z.B. process = sw_hide oder so?
|
Re: Tasks im Systray
Ich will ehrlich sein. So unbeholfen, wie du dich ausdrückst, erweckst du in mir den Eindruck, als wenn dir noch die nötigsten Grundlagen und Systemeinblicke bezüglich Windows Interna fehlen, um dein Projekt zu realisieren.
|
Re: Tasks im Systray
vielleicht habe ich mich etwas unglücklich ausgedrückt. Aber für jeden laufenden Task lassen sich ja "Eigenschaften" festlegen z.B. minimiert, maximiert, Symbol, Visible/Hide. Jetzt kann ich ja die Tasks nach diesen Eigenschaften filtern. Ich hatte gehofft das das auf die gleiche weiße mit den Tasks im Tray geht.
|
Re: Tasks im Systray
Fangen wir mal von vorne an:
Ein Prozess ist nur ein Container, der den Adressraum bereitstellt und organisiert. Ein Prozess führt keinen Code aus. Code ausführen tuen Threads. Threads sind Objekte innerhalb eines Prozesses und nutzen den vom ihm bereitgestellen Adressraum. Eine Windows GUI Anwendung hat immer mindestens einen Thread, den Hauptthreade, der direkt vom Prozess erzeugt wird. Dieser Hauptthread erzeugt das Fenster und kann, so es der Programmierer denn will, weitere Threads abspalten. Wird das zum Haupttheread gehörige Fenster geschlossen, wird auch der Hauptthread beendet. Ist es der einzige Thread im Prozess, wird selbiger vom System beendet, aus dem System entfernt, alle Ressourcen (geöffnete Dateien usw.) dieses Prozesse werden wieder freigegeben und der Adressraum wieder freigegeben; da ein Prozess ohne Thread und somit ohne auszuführenden Code, logischerweise seine Daseinsberechtigung verliert. Zur TNA. Die TNA, der Bereich neben der Uhr, in der sich die Icons der Anwendungen befinden, ist eigentlich nichts anderes als eine Toolbar und die Icons sind nur Schaltflächen auf dieser Toolbar. Äußert nun eine Anwendung den Wunsch, dort ein Icon ablegen zu dürfen, erzeugt der Explorer eine neu Schaltfläche und ordnet sie der Anwendung zu. Wird jetzt auf das Symbol geklickt, wird die dazugehörige Anwendung benachrichtigt und diese kann dann darauf mit einer Aktion reagieren. "Minimiert" sich nun eine anwendung in die TNA, wird entweder nur das Fenster versteckt oder zerstört und eben bei Bedarf wieder erzeugt oder angezeit, je nach Lust und Laune des Programierers. So, was willlst du nun wie Filtern? |
Re: Tasks im Systray
ich sehe schon mit meinem Filtern komme ich nicht weiter. Tja kurz gesagt: ohne laufenden Explorer siehts da wohl schlecht :cry: aus. Da müsste ich dann wohl eine Application haben die als erstes gestartet wird und loggt wer ein
Delphi-Quellcode:
aufruft und das Handle des Prozesses dann abspeichern.
Shell_NotifyIcon(NIM_ADD, @IconData);
|
Re: Tasks im Systray
Ich habe mir nochmal die unit von toms angeschaut: da wird eine Funktion "GetIcon" aus der DLL "InterprocessImageList.DLL" verwendet um das Icon anhand der Bitmap ID zu ermitteln. Kann mir jemand sagen welche funktion in der DLL dahinter steckt um an das Icon zu gelangen?
|
Re: Tasks im Systray
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Die Sourcen findest du im Anhang. Vielleicht hat ja jemand Lust, die Sourcen nach Delphi zu übersetzen :?: :roll: :?: |
Re: Tasks im Systray
Danke für die Info's. Werds mir mal anschauen. Aber mit dem Umsetzen nach Delphi, mal sehen.
Mfg Matthias |
Re: Tasks im Systray
Aber es ist doch gar nicht notwendig, wenn die dll in C++ geschrieben ist...
Kommt doch auf das gleiche heraus (hat vielleicht sogar einen Vorteil: die C++ Dll ist evtl. kleiner) |
Re: Tasks im Systray
:wink: :zwinker:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:58 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 by Thomas Breitkreuz