Autor Beitrag
Regan
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2157
Erhaltene Danke: 72


Java (Eclipse), Python (Sublimetext 3)
BeitragVerfasst: Sa 02.06.07 13:59 
ETS - Der ExeTimeSaver


ETS ist ein Programm, mit dem man die Laufzeit von vorher eingestellten Programmen dokumentieren kann. Das kann zum Beispiel bei Spielen interessant sein. Auch wird bei 98% aller Programmen der Speicherbedarf angegeben. Das Programm dokumentiert des Weiteren seine eigene Laufzeit und man kann den vorhandenen und freien RAM einsehen. Daneben wird der maximale und aktuelle Speicherverbrauch einer Anwendung angegeben. Dieser wird protokolliert und kann auf Wunsch für die letzten 12 Stunden Laufzeit eingesehen werden.

Das Programm wird ohne Installer geliefert. Es werden im Anwendungsdatenordner Daten abgelegt. Es wird nur eine Datei mitgeliefert. Diese befindet sich direkt in dem Archiv (also ohne Unterordner).

Changelog powered by DevProject Manager:

Version #30:
[+] Laufende Programme können hinzugefügt werden
[+] Maximale Auslastung
[+] Speicherauslastung der letzten 24 h wird für jedes Programm minutengenau aufgezeichnet
[*] Performance deutlich verbessert
[*] RAM-Anzeige modifiziert
[*] Statistik modifiziert
[*] Symbolik konsistenter gemacht.

Version #29:
[*] "Inaktiv" wird bei nicht laufenden Programmen angezeigt
[*] Nicht existierende Programme werden nicht entfernt.
[*] RAM- Auslastung korrigiert (2 GB Grenze geknackt)
[-] Division durch Null Error

Version #28:
[*] Buttons werden deaktiviert, falls nicht auswählbar
[*] Fehler in der Darstellung der Statistik behoben
[*] Statistikhinweise überarbeitet

Version #27:
[i] Erste Version


Wünsche/Anregungen/Kritik erwünscht.

MfG
Regan


Zuletzt bearbeitet von Regan am Do 13.01.11 15:07, insgesamt 13-mal bearbeitet
Chryzler
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1097
Erhaltene Danke: 2



BeitragVerfasst: Sa 02.06.07 14:10 
Und für was braucht man das? Ich meine, ich kann jetzt nicht wirklich einen Sinn erkennen. :nixweiss:
Regan Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2157
Erhaltene Danke: 72


Java (Eclipse), Python (Sublimetext 3)
BeitragVerfasst: Sa 02.06.07 18:19 
Das braucht man dafür, wenn man wissen will, wie lange man eine Anwendung oder Windows laufen hat.
Regan Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2157
Erhaltene Danke: 72


Java (Eclipse), Python (Sublimetext 3)
BeitragVerfasst: So 11.05.08 13:42 
Hy,

ich habe gerade eine neue Version hochgeladen. Diese unterstützt endlos viele Anwendungen, die überwacht werden. Die Überwachnung wurde in Threads ausgelagert und beinhaltet auf Wunsch auch eine Statistikfunktion.
Download wie immer im ersten Post.
Hiermit möchte ich auch nochmals Silas für seine Unit FastIniFiles danken.
Wie immer freue ich mich über Wünsche, Anregungen und Kritik.

MfG
Regan
huuuuuh
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 665
Erhaltene Danke: 19

win xp, (win vista), win 7
VS 2008 Express Edition, VS 2010 Express Edition, VS 2010 Professionell
BeitragVerfasst: So 11.05.08 14:04 
wozu brauch ich wissen wie lange ich ein programm ausgeführt hab?
BigBrother is watching you :shock:
Jakob_Ullmann
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1747
Erhaltene Danke: 15

Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
BeitragVerfasst: So 11.05.08 14:10 
Könntest du vielleicht einen Screenshot anhängen? Muss ich deinem Programm erst mitteilen, dass ich eine Anwendung starte/schließe (also praktisch ein einfacher Counter) oder bemerkt das dein Programm automatisch (nur so wäre es IMHO überhaupt ein wenig sinnvoll)?
Silas
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 478

Windows XP Home
Delphi 2005, RAD Studio 2007, MASM32, FASM, SharpDevelop 3.0
BeitragVerfasst: So 11.05.08 15:06 
Die Idee an sich ist schonmal recht gut. :zustimm:

Ein paar Vorschläge:
  • Einen wirklich praktischen Nutzen hätte dein Programm, wenn es die maximale / durchschnittliche CPU- / Speicherauslastung anzeigen würde. Dann könnte man sich schnell einen Überblick über die Ressourcenfresser verschaffen.
  • Man sollte beim erstellen eines Eintrags die Werte direkt bearbeiten können und als Default-Anzeigename sollte der Dateiname der EXE ohne '.exe' verwendet werden.
  • Es sollte mit poScreenCenter gestartet werden ;)
  • Man sollte die Fenstergröße ändern können
  • Nimm für die Modalfenster bsDialog, sonst sieht's so gedätscht aus. ;)
  • Beim einem "Doppelstartversuch" sollte statt der Meldung das Programmfenster wieder angezeigt werden.
  • Ein Button zum Hinzufügen aller momentan laufenden Prozesse sowie die Option, alle jemals laufenden Prozesse zu überwachen, wäre gut (evtl. mit Filter/Blacklist).
  • Ein Bug: Während ein zu messendes Programm läuft, bekommt man beim Versuch, das Statistikfenster zu schließen, eine "ungültige Zeigeroperation" geworfen.


Edit:
user profile iconRegan hat folgendes geschrieben:
Hiermit möchte ich auch nochmals Silas für seine Unit FastIniFiles danken.
:flehan:

_________________
Religionskriege sind nur Streitigkeiten darüber, wer den cooleren imaginären Freund hat ;-)
Regan Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2157
Erhaltene Danke: 72


Java (Eclipse), Python (Sublimetext 3)
BeitragVerfasst: So 11.05.08 17:03 
user profile iconhuuuuuh hat folgendes geschrieben:
wozu brauch ich wissen wie lange ich ein programm ausgeführt hab?

Um zum Beispiel festzustellen, wie lange du Windows laufen hast oder wie lange du Spiele spielst.
user profile iconhuuuuuh hat folgendes geschrieben:
BigBrother is watching you :shock:

Du kannst es ja auch als Quickstarter nutzen.

user profile iconJakob_Ullmann hat folgendes geschrieben:
Könntest du vielleicht einen Screenshot anhängen?

Hab ich :wink: .
user profile iconJakob_Ullmann hat folgendes geschrieben:
Muss ich deinem Programm erst mitteilen, dass ich eine Anwendung starte/schließe (also praktisch ein einfacher Counter) oder bemerkt das dein Programm automatisch (nur so wäre es IMHO überhaupt ein wenig sinnvoll)?

Es bemerkt automatisch, wenn der Prozess läuft und startet die Aufzeichnung.

user profile iconSilas hat folgendes geschrieben:
Die Idee an sich ist schonmal recht gut. :zustimm:

Danke.
user profile iconSilas hat folgendes geschrieben:
Ein paar Vorschläge:
  • Einen wirklich praktischen Nutzen hätte dein Programm, wenn es die maximale / durchschnittliche CPU- / Speicherauslastung anzeigen würde. Dann könnte man sich schnell einen Überblick über die Ressourcenfresser verschaffen.

Muss ich mal schauen, ob ich das einbaue. Das Programm frisst schon so viel zu viel Speicher :wink: .
user profile iconSilas hat folgendes geschrieben:
  • Man sollte beim erstellen eines Eintrags die Werte direkt bearbeiten können und als Default-Anzeigename sollte der Dateiname der EXE ohne '.exe' verwendet werden.

Wird geändert.
user profile iconSilas hat folgendes geschrieben:
  • Es sollte mit poScreenCenter gestartet werden ;)

Geändert.
user profile iconSilas hat folgendes geschrieben:
  • Man sollte die Fenstergröße ändern können

Geändert.
user profile iconSilas hat folgendes geschrieben:
  • Nimm für die Modalfenster bsDialog, sonst sieht's so gedätscht aus. ;)

Geändert.
user profile iconSilas hat folgendes geschrieben:
  • Beim einem "Doppelstartversuch" sollte statt der Meldung das Programmfenster wieder angezeigt werden.

Muss ich mal schauen, wie ich das einbaue.
user profile iconSilas hat folgendes geschrieben:
  • Ein Button zum Hinzufügen aller momentan laufenden Prozesse sowie die Option, alle jemals laufenden Prozesse zu überwachen, wäre gut (evtl. mit Filter/Blacklist).

Wie meinst du das mit "jemals laufende Prozesse"? Mein Programm weiß doch nicht, außer es speichert die Prozesse, was am Vortag lief :? .
user profile iconSilas hat folgendes geschrieben:
  • Ein Bug: Während ein zu messendes Programm läuft, bekommt man beim Versuch, das Statistikfenster zu schließen, eine "ungültige Zeigeroperation" geworfen.

Kann ich nicht reproduzieren. Könntest du mir vielleicht nochmal die Reihenfolge der Klicks sagen?
user profile iconSilas hat folgendes geschrieben:
Edit:
user profile iconRegan hat folgendes geschrieben:
Hiermit möchte ich auch nochmals Silas für seine Unit FastIniFiles danken.
:flehan:

:wink: .
Silas
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 478

Windows XP Home
Delphi 2005, RAD Studio 2007, MASM32, FASM, SharpDevelop 3.0
BeitragVerfasst: So 11.05.08 18:08 
user profile iconRegan hat folgendes geschrieben:
Die Überwachnung wurde in Threads ausgelagert.
user profile iconRegan hat folgendes geschrieben:
Muss ich mal schauen, ob ich das einbaue. Das Programm frisst schon so viel zu viel Speicher :wink: .
kA, wie du das implementiert hast, aber warum hast du das mit Threads gelöst? Ein Timer auf 2-3 Sekunden wäre resourcenschonend und auf 1-2 Sekunden Messfehler kommt es doch eh nicht an, oder?

user profile iconRegan hat folgendes geschrieben:
Wie meinst du das mit "jemals laufende Prozesse"? Mein Programm weiß doch nicht, außer es speichert die Prozesse, was am Vortag lief :? .
Da habe ich mich ein wenig ungünstig ausgedrückt, ich meinte damit, dass dein Programm beim überwachen der Prozessliste sich alle jemals gelaufenen merkt, um sie zählen zu können.

user profile iconRegan hat folgendes geschrieben:
user profile iconSilas hat folgendes geschrieben:
  • Ein Bug: Während ein zu messendes Programm läuft, bekommt man beim Versuch, das Statistikfenster zu schließen, eine "ungültige Zeigeroperation" geworfen.
Kann ich nicht reproduzieren. Könntest du mir vielleicht nochmal die Reihenfolge der Klicks sagen?
Oh, hab gerade gemerkt dass meine Beschreibung so nicht ganz stimmt: Der Bug tritt auf, während ein Programm läuft, das über dein Programm gestartet wurde (also über "Ausführen").

_________________
Religionskriege sind nur Streitigkeiten darüber, wer den cooleren imaginären Freund hat ;-)
Regan Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2157
Erhaltene Danke: 72


Java (Eclipse), Python (Sublimetext 3)
BeitragVerfasst: So 11.05.08 20:19 
user profile iconSilas hat folgendes geschrieben:
user profile iconRegan hat folgendes geschrieben:
Die Überwachnung wurde in Threads ausgelagert.
user profile iconRegan hat folgendes geschrieben:
Muss ich mal schauen, ob ich das einbaue. Das Programm frisst schon so viel zu viel Speicher :wink: .
kA, wie du das implementiert hast, aber warum hast du das mit Threads gelöst? Ein Timer auf 2-3 Sekunden wäre resourcenschonend und auf 1-2 Sekunden Messfehler kommt es doch eh nicht an, oder?

Naja. Messfehler sollten eigentlich nicht sein. Und die Threadvariante ist nach meinen Messungen wesentlich schneller und verbraucht weniger Prozesserleistung.
user profile iconSilas hat folgendes geschrieben:
user profile iconRegan hat folgendes geschrieben:
Wie meinst du das mit "jemals laufende Prozesse"? Mein Programm weiß doch nicht, außer es speichert die Prozesse, was am Vortag lief :? .
Da habe ich mich ein wenig ungünstig ausgedrückt, ich meinte damit, dass dein Programm beim überwachen der Prozessliste sich alle jemals gelaufenen merkt, um sie zählen zu können.

Aber du weißt schon, dass dadurch das Programm sehr langsam wird. Deshalb werde ich mir das nochmals gründlich überlegen müssen. Das Programm ist eigentlich nur dazu gedacht, dass man sieht, wie lange man Windows laufen hat und wie oft und lange man einige Applikationen nutzt.
user profile iconSilas hat folgendes geschrieben:
user profile iconRegan hat folgendes geschrieben:
user profile iconSilas hat folgendes geschrieben:
  • Ein Bug: Während ein zu messendes Programm läuft, bekommt man beim Versuch, das Statistikfenster zu schließen, eine "ungültige Zeigeroperation" geworfen.
Kann ich nicht reproduzieren. Könntest du mir vielleicht nochmal die Reihenfolge der Klicks sagen?
Oh, hab gerade gemerkt dass meine Beschreibung so nicht ganz stimmt: Der Bug tritt auf, während ein Programm läuft, das über dein Programm gestartet wurde (also über "Ausführen").

Kann ich reproduzieren und sollte gefixt sein.

Update: 3.1: Fehlerbehebung und Designzeugs.
Silas
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 478

Windows XP Home
Delphi 2005, RAD Studio 2007, MASM32, FASM, SharpDevelop 3.0
BeitragVerfasst: So 11.05.08 20:31 
user profile iconRegan hat folgendes geschrieben:
Aber du weißt schon, dass dadurch das Programm sehr langsam wird.
Timer verbrauchen (zumindest in allen meinen bisherigen Programmen) auch bei theoretischen 1 ms Intervall sowieso so gut wie keine Prozessorzeit, und ich denke 1 Sekunde Messgenauigkeit langen voll und ganz. Du liest die Prozessliste für die Überprüfung doch sowieso, oder? Und das Aktualisieren der Prozessorzeit/auslastung darf ruhig niedriger getaktet sein.

user profile iconRegan hat folgendes geschrieben:
Das Programm ist eigentlich nur dazu gedacht, dass man sieht, wie lange man Windows laufen hat und wie oft und lange man einige Applikationen nutzt.
Ja, aber diese Features würden das Tool wesentlich interessanter machen, sieh dir doch mal das restliche Feedback an ;)

_________________
Religionskriege sind nur Streitigkeiten darüber, wer den cooleren imaginären Freund hat ;-)
huuuuuh
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 665
Erhaltene Danke: 19

win xp, (win vista), win 7
VS 2008 Express Edition, VS 2010 Express Edition, VS 2010 Professionell
BeitragVerfasst: So 11.05.08 21:27 
der timer geht bei werten <50ms automatisch auf 50ms
ein intervall kleiner als 50ms geht also nich
Silas
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 478

Windows XP Home
Delphi 2005, RAD Studio 2007, MASM32, FASM, SharpDevelop 3.0
BeitragVerfasst: Mo 12.05.08 06:33 
user profile iconSilas hat folgendes geschrieben:
Timer verbrauchen auch bei theoretischen 1 ms Intervall sowieso so gut wie keine Prozessorzeit.

user profile iconhuuuuuh hat folgendes geschrieben:
der timer geht bei werten <50ms automatisch auf 50ms

Stimmt zum Teil. Bei Werten < 25 ms wird der Windows-Timer unzuverlässig, theoretisch gibt es aber keine Untergrenze.

_________________
Religionskriege sind nur Streitigkeiten darüber, wer den cooleren imaginären Freund hat ;-)
Regan Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2157
Erhaltene Danke: 72


Java (Eclipse), Python (Sublimetext 3)
BeitragVerfasst: Mo 12.05.08 15:38 
user profile iconSilas hat folgendes geschrieben:
Du liest die Prozessliste für die Überprüfung doch sowieso, oder?

Nein :wink: .
user profile iconSilas hat folgendes geschrieben:
Und das Aktualisieren der Prozessorzeit/auslastung darf ruhig niedriger getaktet sein.

OK. Du hast mich überzeugt. Aber wie komme ich von meiner Exedatei an die Speicherauslastung? Hast du da vielleicht einen Link?
Jakob_Ullmann
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1747
Erhaltene Danke: 15

Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
BeitragVerfasst: Mo 12.05.08 15:45 
Such mal im Forum. Ich hab auch mal danach gesucht und was gefunden. :roll: Allerdings habe ich es nicht verwendet, weil es viel zu kompliziert war. Und Code, den ich nicht verstehe, baue ich nur ungern irgendwie ein (außer vielleicht SynEdit oder sowas), und erst recht nicht, wenn das ganze Programm daraus besteht. :wink:
Silas
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 478

Windows XP Home
Delphi 2005, RAD Studio 2007, MASM32, FASM, SharpDevelop 3.0
BeitragVerfasst: Mo 12.05.08 20:52 
user profile iconRegan hat folgendes geschrieben:
Aber wie komme ich von meiner Exedatei an die Speicherauslastung? Hast du da vielleicht einen Link?

In der psapi.dll gibt es eine Funktion namens GetProcessMemoryInfo. Die wirst du wahrscheinlich selber einbinden müssen, weil Delphi sie nicht in der Windows.pas hat. Google einfach mal danach. ;)

_________________
Religionskriege sind nur Streitigkeiten darüber, wer den cooleren imaginären Freund hat ;-)
Regan Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2157
Erhaltene Danke: 72


Java (Eclipse), Python (Sublimetext 3)
BeitragVerfasst: Mi 14.05.08 17:59 
user profile iconSilas hat folgendes geschrieben:
user profile iconRegan hat folgendes geschrieben:
Aber wie komme ich von meiner Exedatei an die Speicherauslastung? Hast du da vielleicht einen Link?

In der psapi.dll gibt es eine Funktion namens GetProcessMemoryInfo. Die wirst du wahrscheinlich selber einbinden müssen, weil Delphi sie nicht in der Windows.pas hat. Google einfach mal danach. ;)

OK. Ich habs jetzt eingebaut, allerdings noch keine neue Version hochegladen.
Bezüglich der statistischen Erfassung der Daten: Wie hast du dir das vorgestellt? Du hast ja etwas von maximalen und Durchschnitswert gesagt. Soll das ganze irgendwie gespeichert werden?
Jakob_Ullmann
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1747
Erhaltene Danke: 15

Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
BeitragVerfasst: Mi 14.05.08 18:44 
Nun um zu wissen, was das meist ausgeführte Programm ist, brauch ich ja nur mal ins Startmenü von WinXP gucken und ich stelle fest, dass es Firefox, Delphi 7, Delphi 5, Word, Photoshop und Excel sind. :wink: Ne, aber warum speicherst du die Daten nicht in einer Datenbank oder Textdatei und stellst das dann als Liniendiagramm dar? Sowas könntest du auch mit TChart realisieren, wenn du keine Lust hast, dich selbst um die Diagramme zu kümmern (wobei das ja nicht so schwer sein dürfte). :wink:
Regan Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2157
Erhaltene Danke: 72


Java (Eclipse), Python (Sublimetext 3)
BeitragVerfasst: Mi 14.05.08 18:47 
user profile iconJakob_Ullmann hat folgendes geschrieben:
Nun um zu wissen, was das meist ausgeführte Programm ist, brauch ich ja nur mal ins Startmenü von WinXP gucken und ich stelle fest, dass es Firefox, Delphi 7, Delphi 5, Word, Photoshop und Excel sind. :wink:

Ich will aber die Programme haben, die am längsten laufen :wink: .
user profile iconJakob_Ullmann hat folgendes geschrieben:
Ne, aber warum speicherst du die Daten nicht in einer Datenbank oder Textdatei und stellst das dann als Liniendiagramm dar? Sowas könntest du auch mit TChart realisieren, wenn du keine Lust hast, dich selbst um die Diagramme zu kümmern (wobei das ja nicht so schwer sein dürfte). :wink:

Hast du dir das Programm mal runtergeladen? Anscheinend nicht :( .
Silas
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 478

Windows XP Home
Delphi 2005, RAD Studio 2007, MASM32, FASM, SharpDevelop 3.0
BeitragVerfasst: Mi 14.05.08 18:50 
user profile iconRegan hat folgendes geschrieben:
Wie hast du dir das vorgestellt? Du hast ja etwas von maximalen und Durchschnitswert gesagt. Soll das ganze irgendwie gespeichert werden?

Ja, ich dachte, dass du es einfach so wie die Laufzeit des Programms mitspeicherst.

Der Maximalwert sollte ja klar sein, du überprüfst einfach, ob er größer als der letzte Maximalwert war, und speicherst immer den letzten.

Den Durchschnittswert berechnest du dann einfach mit
ausblenden Delphi-Quelltext
1:
DurchschnittNeu = ( DurchschnittAlt * AnzahlMessungenBisher + NeuerWert ) / AnzahlMessungenGesamt					
. Hier genügt es also auch, wenn du den letzten Durchschnittswert und die Anzahl Messungen speicherst.

Edit: Für den Durchschnitt würde ich dann natürlich ein Float nehmen ;)

_________________
Religionskriege sind nur Streitigkeiten darüber, wer den cooleren imaginären Freund hat ;-)