AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Das Problem mit dem vergessenem TrayIcon

Ein Thema von Popov · begonnen am 2. Mär 2012 · letzter Beitrag vom 3. Mär 2012
Antwort Antwort
EWeiss
(Gast)

n/a Beiträge
 
#1

AW: Das Problem mit dem vergessenem TrayIcon

  Alt 2. Mär 2012, 15:22
Zitat:
direkter Aufruf von Windows API-Funktionen
Da ich lieber direkt mit der API arbeite anstatt wie bei b.) über umwegen mit der API
bin ich doch lieber ein Cowboy-Programmierer

Anstatt wie du "Ein professioneller Programmierer"
Der alles in doppelter ausführung abgelegt haben muss letztendlich ruft auch deine Klasse die selbe API auf
halt nur über Umwege und das soll professional sein?

Zum Thema da gab es immer schon diverse probleme mit den Tray Icons das diese nicht oder schlecht aktualisiert wurden.
Gab irgendwo mal einen Patch vom MS dafür .. hab ihn aber vergessen.

gruss
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

AW: Das Problem mit dem vergessenem TrayIcon

  Alt 2. Mär 2012, 16:14
Da ich lieber direkt mit der API arbeite anstatt wie bei b.) über umwegen mit der API
bin ich doch lieber ein Cowboy-Programmierer
Ich weiss! So sieht dein Sourcecode dann halt auch aus.
Hauptsache es funktioniert irgendwie, ist wohl deine Einstellung.
Als "Profi" kann ich mir so etwas nicht leisten.
Jede Unsauberkeit rächt sich später irgendwann (zumindest dann wenn man eine Software über mehr als 10 Jahre erweitern, verbessern und warten muss).
Ich hab' hier mehrere Projekte mit zusammen 1,4 Mio Zeilen.
Um dies zu bewältigen, muss man einfach jeden Zugriff auf die Windows API der etwas komplizierter ist auf irgendeine Art und Weise kapseln.
Wenn Windows ein Handle zurückliefert mit dem weitere API-Funktionen aufgerufen werden, ist das ein ganz klares Zeichen, dass man das Handle mit einer Klasse kapseln muss.

Auch Programmierer die nur so zum Spaß programmieren können noch was dazulernen indem sie ihre "Hauptsache es funktioniert" Einstellung ablegen.
Andreas
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#3

AW: Das Problem mit dem vergessenem TrayIcon

  Alt 2. Mär 2012, 16:33
Auch Programmierer die nur so zum Spaß programmieren können noch was dazulernen indem sie ihre "Hauptsache es funktioniert" Einstellung ablegen.
Also den Punkt müssen wir dann doch ausdiskutieren. "Hauptsache es funktioniert" habe ich noch nie programmiert. Und so wie ich dich verstanden habe geht es hier nur das Problem auszulagern in dem man alles dazukauft was es zu kaufen gibt. Auf dem Programm lagern dann 50 Komponenten die alles für mich erledigen und ich hab einen pflegeleichten 10 Zeilen langen Code.

Natürlich kann ich alles kapseln und ob du es glabst oder nicht, das mache ich auch, aber nicht immer. Warum soll ich die Funktion zum einlesen alle Daten eines Ordners auslagern, wenn das Programm selbst nie mehr als 30 Zeilen haben wird.

Es gibt immer einen Unterschied ob man ein professionelles Programm schreibt oder schnell ein Problemlöser.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.372 Beiträge
 
Delphi 12 Athens
 
#4

AW: Das Problem mit dem vergessenem TrayIcon

  Alt 2. Mär 2012, 17:49
Zitat:
schnell ein Problemlöser
Wenn du schon passende fertige Codes/Komponenten ausgelagert hast und du mal wieder schnell ein Programm schreiben willst, dann könnte es eventuell vorteile geben, wenn du schon auf eine kleine "Bibliothek" privater oder eventueller fremder kostenpflichtiger oder Gratistools zugreifen kannst, also alles nochmal neu zu machen.

Zitat:
CleanTray
Es könnte wohl auch ausreichen, wenn man der Taskleiste, bzw. der Tray-Area, sagt sie solle sich mal refreshen.
Ich glaub für die Taskleiste hatte ich in der DP mal einen Code gesehn.



So, ich hab eventuell nicht alles mitbekommen.
Wann bleiben denn nun Icons zurück?
Nue wenn das Programm abstürtzt oder über den Debugger hart beendet wird,
oder auch beim normalen Beenden?

Bei Letzerem wäre es gut, wenn jemand seinen Code eventuell mal zeigen würde.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#5

AW: Das Problem mit dem vergessenem TrayIcon

  Alt 2. Mär 2012, 18:16
Wenn du schon passende fertige Codes/Komponenten ausgelagert hast und du mal wieder schnell ein Programm schreiben willst, dann könnte es eventuell vorteile geben, wenn du schon auf eine kleine "Bibliothek" privater oder eventueller fremder kostenpflichtiger oder Gratistools zugreifen kannst, also alles nochmal neu zu machen.
Ach, ich habe doch eine "Bibliothek" und einen gut sortierten Beispiele Ordner, plus Übungsordner, plus Test Ordner, plus Code-Cookies Ordner, plus gute aber aussortierte da zu schade zum wegwerfen Funktionen Ordner, usw. Aber die Suche dauert oft länger als es schnell neu schreiben. Und was Units und Klassen angeht - tatsächlich habe ich eine handvoll davon die ich auch nutze.

Aber das war ja nicht das Thema, da kamen wir nur so drauf.

Zitat:
Es könnte wohl auch ausreichen, wenn man der Taskleiste, bzw. der Tray-Area, sagt sie solle sich mal refreshen.
Ich hab schon vieles getestet. Ich denke refreshen hätte ich schon gemacht. Aber ich behalte es im Hinterkopf. Ich hab wie gesagt vieles getestet, aber ich will nicht drauf schwören, dass es das war.

Zitat:
So, ich hab eventuell nicht alles mitbekommen.
Wann bleiben denn nun Icons zurück?
Nue wenn das Programm abstürtzt oder über den Debugger hart beendet wird,
Wenn das so wäre, wir würden nicht hier sitzen und uns über das Thema unterhalten.

Zitat:
oder auch beim normalen Beenden?
Nicht oder auch, sondern normalem Beenden.

Zitat:
Bei Letzerem wäre es gut, wenn jemand seinen Code eventuell mal zeigen würde.
Nimm einen beliebigen Beispiel-Code aus dem Internet zum TrayIcon. Wahrscheinlich habe ich den auch getestet.

Wie gesagt: früher oder später kommt es bei jedem vor, bei einem früher, bei einem später.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

AW: Das Problem mit dem vergessenem TrayIcon

  Alt 2. Mär 2012, 18:35
Warum wird das Icon nicht entfernt? Wenn du die WinAPI direkt bemühst, dann musst du es auch entfernen beim Beenden deines Programms:
Shell_NotifyIcon(NIM_DELETE, @nid);
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#7

AW: Das Problem mit dem vergessenem TrayIcon

  Alt 2. Mär 2012, 18:45
Wie gesagt, das ist nicht das Problem, das ist klar.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.372 Beiträge
 
Delphi 12 Athens
 
#8

AW: Das Problem mit dem vergessenem TrayIcon

  Alt 2. Mär 2012, 16:31
und das soll professional sein?
Wenn sich an der API mal was ändert, oder neue Features hinzukommen, oder man von Windows auf Mac wechselt,
dann muß man nur an einer Stelle, in dieser Klasse, etwas ändern.

Außerdem hat man den Code so an einer Stelle vereint, anstatt die verschiedenen Aufrufe/Funktionen eventuell noch sonstwo verteilt zu haben. (leichter zu finden)
Und wenn diese Klasse dann auch noch mindestens in 2 Programmen verwendet wird, dann hast du gleich alle Programme automatisch angepaßt.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#9

AW: Das Problem mit dem vergessenem TrayIcon

  Alt 2. Mär 2012, 16:33
und das soll professional sein?
Wenn sich an der API mal was ändert, oder neue Features hinzukommen, oder man von Windows auf Mac wechselt,
dann muß man nur an einer Stelle, in dieser Klasse, etwas ändern.

Außerdem hat man den Code so an einer Stelle vereint, anstatt die verschiedenen Aufrufe/Funktionen eventuell noch sonstwo verteilt zu haben. (leichter zu finden)
Und wenn diese Klasse dann auch noch mindestens in 2 Programmen verwendet wird, dann hast du gleich alle Programme automatisch angepaßt.
Ich meine professional im sinne von Doppelt Gemoppelt

Grundsätzlich hast du aber schon recht. (Was Delphi angeht)

PS:
NotifyIconData.uCallbackMessage := WM_TASKABAREVENT;
sollte
WM_MOUSEMOVE sein.
Deshalb meine Frage nach der CallbackMessage.

gruss

Geändert von EWeiss ( 2. Mär 2012 um 16:37 Uhr)
  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 18:45 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