AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte MyTaskManager v0.3.2.1

MyTaskManager v0.3.2.1

Ein Thema von Darkmorph · begonnen am 26. Jan 2007 · letzter Beitrag vom 11. Mai 2007
Antwort Antwort
Seite 2 von 2     12
Darkmorph
Registriert seit: 24. Mär 2003
Hi,
hier mein erstes Programm, dass ich veröffentliche. Es ist ein Ersatz für die Prozesssparte vom Task-manager. Es zeigt standardmäßig alle Prozesse an, die arbeiten, also CPUTime nutzen. Man kann über eine Checkbox jedoch alle Prozesse anzeigen lassen. Man kann auch einen Prozess markieren und diesen durch Klick auf den Kill-Button killen. Die Refreshrate läßt sich über eine Trackbar einstellen, von 250ms-1500ms. Das Programm wird nur in der TaskBar-Notification-Area angezeigt, ein rechts oder linksklick auf dem Symbol bewirkt, das es angezeigt oder versteckt wird. Dieses Programm schreibt nichts in die Registry und hinterläßt auch keine Dateien auf dem PC.

Ich freue mich auf konstruktive Kritik und Verbesserungsvorschläge!

TODO:
aus einem mir noch! unbekannten Grund wird bei einigen Systemprozessen der Memory-Usage nicht richtig angezeigt, bin aber an der Beseitigung des Fehlers.

Müßte unter allen Windows-Versionen lauffähig sein, getestet habe ich es aber nur unter Windows XP (Professional).


MfG
Benjamin
Angehängte Dateien
Dateityp: rar mytaskmanager_v0.3.4_124.rar (224,5 KB, 251x aufgerufen)
 
Benutzerbild von Luckie
Luckie

 
Delphi 2006 Professional
 
#11
  Alt 30. Jan 2007, 14:37
Ich bin doch nicht über dich hergezogen. Nur hat mich deine Bemerkung mit den vielen Anpassungen dazu verleitet zu denken, dass du eben nicht Daten und Oberfläche getrennt hast, denn warum müsstest du sonst so viele Anpassungen machen?
Michael
  Mit Zitat antworten Zitat
Darkmorph

 
Delphi 6 Professional
 
#12
  Alt 30. Jan 2007, 14:41
@luckie
ok... sorry, war wohl bissel in meinem Stolz getroffen *g*
Gibt bestimmt auch einiges was man besser machen kann.
ab Version 0.4 werd ich die TListview einführen, versprochen =)
bis dahin bitte bugs und ähnliches melden, wenn möglich

mfg Benjamin
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

 
Delphi 12 Athens
 
#13
  Alt 30. Jan 2007, 18:53
Zitat:
Müßte unter allen Windows-Versionen lauffähig sein
dazu kann ich nur mals auf's MSDN/PSDK verweisen ... hier mal ein Auszuzug aus dem Vista-PSDK

Zitat:
GetProcessMemoryInfo

Requirements:
Client: Requires Windows Vista, Windows XP, Windows 2000 Professional, or Windows NT Workstation 4.0.
Server: Requires Windows Server "Longhorn", Windows Server 2003, Windows 2000 Server, or Windows NT Server 4.0.
Kurzgesagt nur WinNT+ (kein WinME und Win9x)


Das mit CreateToolhelp32Snapshot erstellte Handle wird nicht wieder freigegeben!


Delphi-Quellcode:
//wenn erster Durchlauf erfolgreich, dann...
if Process32First(hSnap, pe32) = TRUE then begin
  //solange ein Prozess gefunden wird
  while Process32Next(hSnap, pe32) = TRUE do begin
Der erste Prozess wird nicht ausgewertet.


@Luckie: weniger Prozesse laufen lassen?
Na ja, er leert bei jedem Refresh die ListBox und füllt sie neu, wobei natürlich der der Cursor nach oben gesetzt wird.





Im Anhang ma was kurzes von mir, verwendet wurde nur CreateToolHelp32SnapShot, GetProcessTimes und GetProcessMemoryInfo.
Und nich dat sich wer wundert ... funktionieren tut nur die CheckBox und teilweise die TreeView ... sonsts nüschts
och ja, die 4 Zahlen bei den Modulen stimmen och nich mit der Spaltenüberschrift überein...
3:GlobalUsageCount 4:ModuleUsageCount 5:ModuleBaseAddress 6:ModuleBaseSize



[add]
so, die (neuen) Beiträge #5-#12, sowie die neue Version werd' ich mir dann in Ruhe daheim durchsehn ._.

(lag leider die letzten Tage etwas flach ... da wurde es halt nichts mit Abschicken)
Angehängte Dateien
Dateityp: exe taskmanager_133.exe (739,0 KB, 52x aufgerufen)
  Mit Zitat antworten Zitat
Darkmorph

 
Delphi 6 Professional
 
#14
  Alt 31. Jan 2007, 09:37
@himitsu

ich bin ausser mit der einfachen Listbox nicht wirklich sehr gut vertraut mit den anderen Anzeige-Komponenten. Wie
erstellt man mehrere Spalten bei Treeviews? (vielleicht Treeview mit listbox kombiniert?)

Danke für den Hinweis mit den CreateSnapshot-Handle, hab ich mittlerweile gefixed.
Kannste deine Sourcen bitte auch zur Verfügung stellen, damit ich mir mal anschauen kann, wie du das gelöst hast?


MfG Benjamin
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

 
Delphi 12 Athens
 
#15
  Alt 31. Jan 2007, 13:45
Also, deine neue Version hab ich mir noch nicht angesehn und hier (unter Win9x und Linux) läuft es ja nicht.


Gern doch, mußte aber erst noch etwas aufräumen. Mir ging es ja nicht so gut und dementsprechend sah der Code leider auch aus.

Das Wichtigste findest du in der Timer-Prozedur.





Aber nicht zuviel erwarten, erstens gibt's keine Kommentare und dann ist im Gegensatz zu deinem Programm und auch nochmal Luckies "Vorschlag" Daten und Oberfläche zu trennen, beider verbunden ... also die VirtualTreeView verwaltet auch gleich die Daten mit. So erstpare ich mir dieses und auch gleich noch das zusätzliche übergeben an die TreeView (für die Anzeige) ... halt keine mehrfachen Daten und schnellere Verarbeitung ... aber laß dich davon nicht beeinflussen ^^


PS: also ich versuche ja auch kaum Fremdkomponenten zu verwenden (du glaubs karnicht wie weit ich schon einige von Delphis Komponenten vergewaltigt hab und was die eigentlich leisten können, wenn man es aus denen nur rauskizelt),
aber es ist schon einfacher, wenn man fertige Komponenten nimmt, welche schon das "alles" können.

Ich denk mal die JEDIs und VirtualTreeView sind schon eine echt gute und vorallem kostenlose Ergänzung für Delphi

PSS: wenn ich jetzt noch rausgefunden hätte, warum die Unicodeversionen (z.B. Process32FirstW) nicht funktionieren, dann hätte ich die auch eingebaut gelassen ... da ich aber keine "Lust" hatte jetzt noch den ganzen Code zu ändern, wundere dich also nicht warum da die Strings etwas hinundherkonvertiert werden
Angehängte Dateien
Dateityp: zip taskmanager_106.zip (7,6 KB, 63x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

 
Delphi 2006 Professional
 
#16
  Alt 31. Jan 2007, 13:52
Ich glaube, jetzt geht es etwas durcheinander. Würdest du bitte dein Programm in einem separaten Thread vorstellen? Danke.
Michael
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

 
Delphi 12 Athens
 
#17
  Alt 31. Jan 2007, 14:08
keine Sorge, ich werd' es eh nicht weiterentwickeln (gibt ja genug davon) ... wenn ich heute/morgen abend noch Zeit finde, dann kommen noch ein paar Kommentare/Leerzeilen rein und das war es auch schon.
(ich bin aber schon froh, daß der Code jetzt erstmal lesbar ist)

notfalls können wir es auch löschen und ich schick es ihm einfach per PN.
(aber ich denk' andere können ruhig och ma reingucken)



ich hatte einfach lange Weile (im Bett) und leider nich die Nerven und Ruhe für was "anspruchsvolleres" ... da hab ich einfach mal geguckt was man wit den schon in Darkmorphs Programm vorhandenen Funktionen noch alles machen kann.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

 
Delphi 12 Athens
 
#18
  Alt 3. Feb 2007, 14:24
So, Unicode geht nun doch, jetzt gibt es zumindestens beim Auslesen (in Timer1Timer) keinem Unterschied zwischen Ansi und Wide
(Unicode und dwSize für Ansi passen halt nicht zusammen )

Bei TH32CS_SNAPMODULE/Module32First hatte ich übersehn, daß es die ModuleID nicht mehr gibt und da sie überall immer nur 1 ist, wurden beim Auslesen alle Module übereinandergeschrieben (da halt gleiche IDs).

Ansonsten hab ich nun auch ein paar Kommentare mit eingebaut




Dann hätte ich noch was nützliches Vorzuschlagen, welches vorallem Programmierer gut benötigen könnten:
  • Prozesse/Thread anhalten/fortsetzen
  • voller Prozesspfad
    also das auch Verzeichnis anzeigen, wo sich die EXE versteckt
    (diese und andere Infos würden sich z.B. in einem Hint, oder zusätzlischem Fenster praktisch unterbringen lassen)
  • Startparameter mit anzeigen
    (ich weiß jetzt zwar nicht wie, da GetCommandLine nur im aktuellen Prozess arbeitet, aber irgendwie muß es ja gehn)
  • DumpFiles erstellen (Speicherabbilder und sowas)
    dafür würde sich MSDN-Library durchsuchenMiniDumpWriteDump gut eignen
  • die Prioritäg der Prozesse und Threads zeigen/ändern (MSDN-Library durchsuchenGetPriorityClass/MSDN-Library durchsuchenGetThreadPriority)
  • für MultiProzessorSystem wäre es wohl nett, wenn angezeigt würde auf welchem Prozessor die Threads laufen und natürlich sollte man dieses auch ändern können
  • wenn man DefaultWerte für Programme festlegen könnte, wäre es super.
    möglichst auch mit Platzhalter, so daß auch gleich ganze Verzeichnisse behandelt werden können.

    festzulegen würde ich z.B. gern:
    • den Prozessor (also wo das Programm läuft)
    • Startpriorität (sobald das Programm gestartet wird, soll diese zugewiesen werden)
    • maximale CPU-Belastung (bei Überschreitung wird die Priorität runtergeschraubt)
    • ob das programm überhaupt laufen darf (wenn nicht dann beenden)
    • und welche programme immer laufen müssen (halt andersrum, also wenn's nicht läuft dann starten)
    • AlwaysOnTop beim Programmfenster festlegen (bei vielen Programmen läßt sich sowas leider nicht ändern)
  • wie Luckie schon sagte: ein/zwei TrayIcons für CPU/RAM/Pagefile-Auslastung wären nett
  • ...
Zu vielen Dingen gibt's in der DP schon einige Threads, dort kannst du dir ruhig die nötigen Infos holen und notfalls nochmal fragen.

Die Startparameter und DumpFiles sind inzwischen zwar im Vista-Taskmanager enthalten, aber wer nutzt schon Vista.
(die Beta läuft ja noch bis Juli und mal sehn ob sich Vista dann langsam mal lohnt)


PS: es wäre wirklich schöner, wenn die "überflüssigen" Dateien nicht im Archiv mit ausgeliefert würden.
Es gibt zwar einige Programme zum löschen dieser Dateien,
aber soeine Winzige BatchDatei reicht auch schon aus (kannt ja mal in einigen der Projekte hier in der DP nachsehen ... viele haben solch kleine .BAT-, oder .CMD-Dateien dafür mit drin)
Angehängte Dateien
Dateityp: zip taskmanager_295.zip (278,0 KB, 126x aufgerufen)
  Mit Zitat antworten Zitat
andresilvaus
 
#19
  Alt 11. Mai 2007, 15:40
hi,
can i translate this into portuguese?
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 16:29 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