¿Cuál es la función para obtener la fecha y la hora en que se ejecutó una aplicación? Estoy usando Delphi.¿Cuándo comenzó mi aplicación a ejecutarse?
Respuesta
Puede utilizar la llamada a la API de Windows para GetProcessTimes (declarado en Windows.pas) para obtener detalles de cualquier proceso.
Si es su aplicación, es probable que yo también tenga la hora de inicio y la registre en algún lugar para mantener un historial.
No estoy seguro de si hay una función o llamada de API para esto. Pero puedes fingir con bastante facilidad. Crear una unidad que tiene este aspecto:
unit AppStartTime;
interface
function GetAppStartTime: TDateTime;
implementation
uses
SysUtils;
var
fStartTime: TDateTime;
function GetAppStartTime: TDateTime;
begin
result := fStartTime;
end;
initialization
fStartTime := Now;
end.
añadirlo a la su DPR utiliza lista, en la parte superior, ya sea primera o inmediatamente después de todo lo que "debe ser el primero en la lista", tal como una memoria personalizada gerente.
Si quiere ser realmente preciso y su aplicación tiene un arranque prolongado, coloque esta unidad como la primera en su cláusula de uso. –
Si quiere ser * realmente * preciso, debe usar 'GetProcessTimes()', ya que incluso el código en la inicialización de la primera unidad se ejecutará solo después de que se hayan cargado todos los módulos y se hayan resuelto todos los puntos de entrada del módulo , lo que puede llevar bastante tiempo con un bajo ancho de banda de E/S y nada precargado o en caché. – mghie
Puede hacer que su aplicación registre el tiempo de inicio en un archivo de texto o base de datos, ya sea en el archivo DPR o en el evento OnCreate() de su formulario principal. Puede usar la función Now() de Delphi para obtener la fecha y hora actual, y formatearla como una cadena usando FormatDateTime() o DateTimeToStr(), dependiendo de lo que esté buscando hacer exactamente.
El siguiente código guarda la fecha de inicio y la hora durante el constructor de la forma principal a un archivo de texto en la misma carpeta que la propia aplicación llamada StartDateTime.txt:
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;
¿Su respuesta contradice a Bruces? –
Peter. No. Su respuesta está cerca de la segunda parte de mi respuesta, excepto que Ken publicó su primer código fuente incluido. Si esa es la forma en que elige ir, debe seleccionar la respuesta de Ken como la correcta. –
Aún prefiero que se elimine la primera oración de la respuesta; está claramente equivocado. – mghie
Uso NtQuerySystemInformation con el informationclass SystemProcessInformation, esto devuelve una matriz de estructuras SYSTEM_PROCESSES (registros) de los cuales el CreateTime contiene la hora exacta en que se inició la aplicación:
_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;
Ya hemos traducido todo esto en el Jedi Apilib (JwaNative)
Esa no es la estructura documentada en MSDN, por lo que dudaría en confiar en su precisión. –
Bueno, Microsoft ha mantenido esta función sin documentar y ahora está parcialmente documentada. La estructura se ha invertido hace mucho tiempo, así que creo que es muy seguro de usar. – Remko
Muchas gracias Remko por esto, ¿pueden decirnos más acerca de cómo convertir de 'CreateTime' a la hora del sistema, son los microsegundos desde la época? PS - La estructura exacta es aquí - 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. ¿Cuánto tarda mi aplicación Python en ejecutarse?
- 2. Haga algo cuando mi servicio WCF comenzó
- 3. ¿Cuándo se activa realmente PreApplicationStartMethod para ejecutarse?
- 4. ¿Cuánto tarda mi código en ejecutarse?
- 5. ¿Cuándo comenzó a funcionar el almacenamiento en caché en un UIWebView?
- 6. ¿Cuándo comenzó Oracle a apoyar "arriba": seleccionar arriba? p2_.PRODUCT_ID de PRODUCT?
- 7. Ecilpse Java Builder comenzó a fallar
- 8. ¿Cómo puedo determinar cuándo terminará mi aplicación en segundo plano?
- 9. ¿Mi aplicación ASP.NET deja de ejecutarse si sobrescribo los archivos DLL?
- 10. ¿Cuándo/cómo mi aplicación .NET utiliza su archivo App.Config?
- 11. ¿Puedo saber cuándo el usuario borra mi aplicación?
- 12. ¿Por qué mi instrucción "if" parece no ejecutarse?
- 13. interupting enlace a mi aplicación
- 14. ¿Cuándo actualizarás tu aplicación a Rails 3?
- 15. Cómo forzar a una aplicación WPF a ejecutarse en el modo Administrador
- 16. ¿Cuándo debería definir mi aplicación de Android como no movible a la tarjeta SD (installLocation = internalOnly)?
- 17. ¿Obliga a una aplicación a ejecutarse en una versión de tiempo de ejecución específica de .NET?
- 18. Para SQL, ¿cuándo comenzó a ser conveniente utilizar siempre las palabras "Inner Join" en lugar de impliedly joinly?
- 19. cuándo poner imágenes a la aplicación/conjuntos y cuándo a/público/imágenes en los carriles 3.1?
- 20. ¿cómo transfiero mi aplicación de iPhone a mi iPhone real?
- 21. ¿Cuándo llamo a mi controlador de clase, gerente o servicio?
- 22. Mi aplicación llama a scrollViewDidScroll 19 veces
- 23. Agregar pantalla compartida a mi aplicación web?
- 24. ¿Cómo agrego intellisense a mi aplicación?
- 25. versión presentada a mi aplicación Java - Netbeans
- 26. No se puede obtener Postgres comenzó
- 27. ¿Cómo forzar a las animaciones de jQuery a ejecutarse simultáneamente?
- 28. ¿Cuándo se fue a dormir mi computadora la última vez? Ventana 7
- 29. ¿Cómo restringir mi aplicación a una sola pestaña del navegador?
- 30. Cuándo utilizar nocall en mi tal: condición?
¿Qué "tiempo de inicialización? ¿Puedes ser mas específico? ¿Estás buscando cuánto tiempo tarda tu aplicación en comenzar? ¿O a qué hora del día se inició? –
sí, la hora del día en que comenzó. –
Peter, su pregunta no es realmente específica de Delphi, y tampoco las respuestas, así que he cambiado la pregunta para que los programadores que no sean de Delphi tengan menos probabilidades de descartarla como irrelevante cuando tienen una pregunta similar. –