Какова функция для получения даты и времени, когда приложение было выполнено? Я использую Delphi.Когда мое приложение запустилось?
ответ
Вы можете использовать API вызова Windows, к GetProcessTimes (объявлено в Windows.pas), чтобы получить подробную информацию о любом процессе.
Если это ваше приложение, я бы, скорее всего, сам заработал и зарегистрировал его где-нибудь, чтобы сохранить историю.
Я не уверен, есть ли функция или вызов API для этого. Но вы можете легко его подделать. Создайте блок, который выглядит следующим образом:
unit AppStartTime;
interface
function GetAppStartTime: TDateTime;
implementation
uses
SysUtils;
var
fStartTime: TDateTime;
function GetAppStartTime: TDateTime;
begin
result := fStartTime;
end;
initialization
fStartTime := Now;
end.
Добавьте его в свой ДПР использует список, в верхней части, либо первый или сразу же после того, как все, что «должно быть первым в списке», такие как пользовательские памяти менеджер.
Если вы хотите быть действительно точным, и ваше приложение имеет длительный старт, тогда поставьте этот блок первым в своем примере использования. –
Если вы хотите быть действительно точным, вам нужно использовать 'GetProcessTimes()', так как даже код при инициализации самого первого блока будет выполнен только после того, как все модули будут загружены и все точки входа модуля будут разрешены , что может занять довольно много времени с низкой пропускной способностью ввода-вывода и без предварительной загрузки или кэширования. – mghie
Возможно, ваше приложение зарегистрирует время запуска в текстовом файле или базе данных либо в файле DPR, либо в событии OnCreate() основной формы. Вы можете использовать функцию Delphi Now() для получения текущей даты и времени и форматировать ее как строку с помощью FormatDateTime() или DateTimeToStr(), в зависимости от того, что именно вы хотите сделать.
ниже код сохраняет дату запуска и время во время конструкторе главной формы в текстовый файл в той же папке, что и само приложение под названием 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;
Ваш ответ противоречит Брюсам? –
Peter. Нет. Его ответ близок ко второй части моего ответа, за исключением того, что Кен опубликовал свой первый и включенный исходный код. Если вы решили пойти, вы должны выбрать ответ Кена как правильный. –
Я бы предпочел, чтобы первое предложение ответа было удалено - это явно неправильно. – mghie
Использование NtQuerySystemInformation с SystemProcessInformation informationclass, это возвращает массив SYSTEM_PROCESSES структур (записи) из которых CreateTime содержит точное время, когда приложение было начато:
_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;
Мы уже перевели все это в Jedi Apilib (JwaNative)
Это не структура, документально подтвержденная на MSDN, поэтому я смущаюсь доверять ее точности. –
Ну, Microsoft сохранила эту функцию без документов, и теперь они частично документированы. Структура была отменена очень давно, хотя я думаю, что это очень хорошо использовать. – Remko
Большое спасибо Remko за это, не могли бы вы рассказать нам больше о том, как конвертировать из 'CreateTime' в системное время, это микросекунды с эпохи? PS - Точная структура здесь - 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. Android, приложение не запустилось
- 2. Приложение для приложения VB.NET запустилось как администратор
- 3. Как запустить активность заставки только тогда, когда приложение запустилось заново?
- 4. Мое приложение пытается захватить мое собственное приложение?
- 5. Мое приложение пытается заменить другое мое приложение
- 6. Мое приложение рушится, когда она является обед
- 7. Необходимо знать, когда мое приложение отправит уведомление
- 8. Не получайте уведомления, когда мое приложение убито
- 9. Как узнать, когда пользователь удаляет мое приложение?
- 10. Когда я прокручиваю SwipeRefreshLayout, обновляя мое приложение
- 11. Обнаружить, когда мышь покидает мое приложение.
- 12. Мое приложение застряло, когда DB не работает
- 13. мое приложение вылетает, когда экран заблокирован
- 14. неизвестная ошибка, когда я бегу мое приложение
- 15. Когда я выбираю радиокнопку, мое приложение разбилось
- 16. Обнаруживать, когда пользователь покидает мое приложение facebook
- 17. Что происходит, когда мое приложение обновляется?
- 18. Запуск newstand, когда мое приложение прослушивается
- 19. мое приложение разбилось, когда gps отключился?
- 20. Как узнать, когда мое приложение собирается убить
- 21. Выполнение скрипта Когда XCode запускает мое приложение
- 22. Когда я перемещаю EditText, мое приложение вылетает
- 23. Когда iOS 7 закрывает мое приложение?
- 24. контролирует размер, когда я максимизирую мое приложение
- 25. Как определить, когда работает мое приложение?
- 26. Tomcat бросает java.lang.UnsupportedOperationException, когда мое приложение раскрылось
- 27. Установщик приложений Microsoft запускает мое приложение ClickOnce
- 28. Android всплывающее окно после того, как приложение запустилось 3 раза
- 29. Установить стороннее приложение BlackBerry, когда мое приложение установлено
- 30. Как автоматически инициализировать «диспетчерServlet» в тот момент, когда веб-приложение запустилось в приложении весенней загрузки?
Какое «время запуска»? Можете быть более конкретными? Вы ищете, сколько времени займет ваше приложение? Или в какое время дня оно было начато? –
Да, время дня было начато. –
Питер, ваш вопрос не имеет особого отношения к Delphi, и ответы не являются, поэтому я изменил вопрос, поэтому программисты, не являющиеся разработчиками Delphi, с меньшей вероятностью отклонят его как несущественные, если у них есть аналогичный вопрос. –