Was ist die Funktion, um Datum und Uhrzeit zu erhalten, zu der eine Anwendung ausgeführt wurde? Ich benutze Delphi.Wann wurde meine Anwendung gestartet?
Antwort
Sie können den Windows-API-Aufruf GetProcessTimes (in Windows.pas deklariert), um Details für jeden Prozess zu erhalten.
Wenn es Ihre Anwendung, würde ich wahrscheinlich die Startzeit selbst bekommen und es irgendwo einzuloggen eine Geschichte zu halten.
Ich bin mir nicht sicher, ob es dafür eine Funktion oder einen API-Aufruf gibt. Aber Sie können es ziemlich leicht vortäuschen. Erstellen Sie eine Einheit, die wie folgt aussieht:
unit AppStartTime;
interface
function GetAppStartTime: TDateTime;
implementation
uses
SysUtils;
var
fStartTime: TDateTime;
function GetAppStartTime: TDateTime;
begin
result := fStartTime;
end;
initialization
fStartTime := Now;
end.
Fügen Sie es zu Ihrem DPR verwendet Liste, an der Spitze, entweder zuerst oder unmittelbar nach etwas, dass „auf der Liste zuerst sein muss“, wie ein benutzerdefinierten Speicher Manager.
Wenn Sie wirklich genau sein wollen, und Ihre Anwendung hat einen langen Start, dann stellen Sie dieses Gerät als erste in Ihrer uses-Klausel. –
Wenn Sie * wirklich * genau sein wollen, müssen Sie 'GetProcessTimes()' verwenden, da selbst der Code in der Initialisierung der allerersten Einheit erst ausgeführt wird, nachdem alle Module geladen und alle Moduleintrittspunkte aufgelöst wurden , die mit geringer E/A-Bandbreite und ohne vorgeladene oder zwischengespeicherte Daten viel Zeit in Anspruch nehmen kann. – mghie
Sie können Ihre App einloggen die Startzeit in eine Textdatei oder Datenbank entweder in der DPR-Datei oder in Ihrem Hauptformular OnCreate() Veranstaltung. Sie können Delphis Now() - Funktion verwenden, um das aktuelle Datum und die aktuelle Uhrzeit abzurufen, und sie mit FormatDateTime() oder DateTimeToStr() als Zeichenfolge zu formatieren, je nachdem, was genau Sie tun möchten.
Der folgende Code speichert das Startdatum und die Zeit während der Konstruktor der Hauptform in eine Textdatei im selben Ordner wie die Anwendung selbst StartDateTime.txt genannt:
procedure TForm1.FormCreate(Sender: TObject);
var
SL: TStringList;
begin
SL := TStringList.Create;
try
SL.Add(FormatDateTime('mm/dd/yyyy hh:nn:ss', Now());
SL.SaveToFile(ExtractFilePath(ParamStr(0)) + 'StartDateTime.txt');
finally
SL.Free;
end;
end;
Widerspricht Ihre Antwort Bruces? –
Peter. Nein. Seine Antwort ist nahe am zweiten Teil meiner Antwort, außer dass Ken seinen ersten und mitgelieferten Quellcode veröffentlicht hat. Wenn Sie sich dafür entscheiden, sollten Sie Kens Antwort als die richtige auswählen. –
Ich würde immer noch lieber den ersten Satz der Antwort entfernt werden - es ist eindeutig falsch. – mghie
Verwenden NtQuerySystemInformation mit dem SystemProcessInformation informationclass, gibt diese eine Reihe von SYSTEM_PROCESSES Strukturen (Records), von denen die Create die genaue Uhrzeit enthält, wenn die Anwendungen gestartet wurde:
_SYSTEM_PROCESSES = record // Information Class 5
NextEntryDelta: ULONG;
ThreadCount: ULONG;
Reserved1: array[0..5] of ULONG;
CreateTime: LARGE_INTEGER;
UserTime: LARGE_INTEGER;
KernelTime: LARGE_INTEGER;
ProcessName: UNICODE_STRING;
BasePriority: KPRIORITY;
ProcessId: ULONG;
InheritedFromProcessId: ULONG;
HandleCount: ULONG;
// next two were Reserved2: array [0..1] of ULONG; thanks to Nico Bendlin
SessionId: ULONG;
Reserved2: ULONG;
VmCounters: VM_COUNTERS;
PrivatePageCount: ULONG;
IoCounters: IO_COUNTERSEX; // Windows 2000 only
Threads: array[0..0] of SYSTEM_THREADS;
end;
SYSTEM_PROCESSES = _SYSTEM_PROCESSES;
PSYSTEM_PROCESSES = ^SYSTEM_PROCESSES;
TSystemProcesses = SYSTEM_PROCESSES;
PSystemProcesses = PSYSTEM_PROCESSES;
Wir haben bereits all dies übersetzt in die Jedi Apilib (JwaNative)
Das ist nicht die Struktur, die auf MSDN dokumentiert ist, also würde ich zögern, seiner Genauigkeit zu vertrauen. –
Nun, Microsoft hat diese Funktion nicht dokumentiert und jetzt sind sie teilweise dokumentiert. Die Struktur wurde vor sehr langer Zeit umgekehrt, daher denke ich, dass es sehr sicher zu benutzen ist. – Remko
Vielen Dank Remko dafür, können Sie uns bitte mehr darüber erzählen, wie man von 'CreateTime' in Systemzeit umwandelt, ist das die Mikrosekunden seit der Epoche? PS - Die genaue Struktur ist hier - http://processhacker.sourceforge.net/doc/struct___s_y_s_t_e_m___p_r_o_c_e_s_s___i_n_f_o_r_m_a_t_i_o_n.html – Noitidart
- 1. Wurde meine Bewerbung von Hand gestartet?
- 2. Überprüfen, wann die R-Sitzung gestartet wurde?
- 3. C# Windows 10 herausfinden, wann das System gestartet wurde
- 4. Wie finde ich heraus, wann Apache zuletzt neu gestartet wurde?
- 5. Wie kann ich wissen, wann eine Anfrage gestartet wurde?
- 6. Sitzung wurde bereits gestartet
- 7. Eine mit Fenstern gepackte Anwendung, die von einer Java-Anwendung gestartet wurde, ausblenden?
- 8. X11-Fenstertitel ändern, nachdem Emacs gestartet wurde
- 9. Wie kann man wissen, ob ein MapReduce-Job neu gestartet wurde oder neu gestartet wurde?
- 10. Herausfinden, wann ein MotionEvent beendet wurde
- 11. Wann VB6-Anwendung endet?
- 12. Code ausführen, nachdem die Flaschenanwendung gestartet wurde
- 13. Nunit nicht meine Anwendung
- 14. Gibt es eine Möglichkeit festzustellen, wann ein Java-Thread gestartet wurde?
- 15. Wann wurde der Zuweisungsoperator aufgerufen?
- 16. Wann wurde benötigt ("was") geboren?
- 17. Wann wurde Minor GC ausgelöst?
- 18. Ermitteln, wann eine Windows 8-App von Notification gestartet wird
- 19. Möglichkeit zu überprüfen Backbone.history wurde bereits gestartet?
- 20. Testen, ob die Sitzung gestartet wurde
- 21. Ermitteln, ob der Prozess neu gestartet wurde
- 22. Dienst neu gestartet auf Anwendung Schließen - START_STICKY
- 23. Android: Wie wird die Anwendung automatisch neu gestartet, nachdem sie "zwangsweise geschlossen" wurde?
- 24. Anwendung konnte in Zeit nicht gestartet werden
- 25. Wann wurde System.Windows.Threading.Dispatcher.Invoke (System.Delegate, System.Object []) hinzugefügt?
- 26. Kann ich die Ausführung einer Anwendung anhalten, die von einem VBscript gestartet wurde?
- 27. Zugriff verweigert, wenn WPF-Anwendung gestartet wird
- 28. leider Anwendung wurde gestoppt
- 29. Anwendung auf Tomcat5 kann nicht gestartet werden
- 30. Lösung "Anwendung wurde gestoppt" Absturzfehler
Was "Startzeit"? Kannst du genauer sein? Suchen Sie, wie lange Ihre Bewerbung dauert? Oder zu welcher Tageszeit? –
ja, die Tageszeit, zu der es angefangen wurde. –
Peter, Ihre Frage ist nicht wirklich spezifisch für Delphi und auch nicht die Antworten. Daher habe ich die Frage so geändert, dass es für Nicht-Delphi-Programmierer weniger wahrscheinlich ist, sie als irrelevant abzutun, wenn sie eine ähnliche Frage haben. –