Also mit der folgenden Funktion kannst du mal die Startzeit ermitteln
Delphi-Quellcode:
uses tlHelp32;
...
function GetProcessTime( ProcessName: String ): TDateTime;
var
hProc, b: Cardinal;
CT, T: TFileTime;
ST: TSystemTime;
tzi: TTimeZoneInformation;
function GetProcID(const lpName: String): Cardinal;
var
hSnapShot: LongWord;
Task: TProcessEntry32;
begin
Result := 0;
hSnapShot := CreateToolHelp32SnapShot( TH32CS_SNAPPROCESS, TH32CS_SNAPALL );
FillChar( Task, SizeOf(Task), #00 );
Task.dwSize := SizeOf(Task);
Process32First( hSnapShot, Task );
repeat
if LowerCase(Task.szExeFile) = LowerCase(lpName) then
begin
Result := Task.th32ProcessID;
CloseHandle( hSnapShot );
Exit;
end;
until not Process32Next( hSnapShot, Task );
CloseHandle( hSnapShot );
end;
begin
try
b := GetProcID( pChar(Processname) );
hProc := OpenProcess( PROCESS_QUERY_INFORMATION, False, b );
if hProc = 0 then
Exit;
GetProcessTimes( hProc, CT, T, T, T );
FileTimeToSystemTime( CT, ST );
GetTimeZoneInformation( tzi );
SystemTimeToTzSpecificLocalTime( @tzi, st, st );
Result := StrToTime(Format( '%d:%d:%d', [ ST.wHour, ST.wMinute, ST.wSecond] ) );
finally
CloseHandle( hProc );
end;
end;
...
//Aufrufmöglichkeit
ShowMessage( TimeToStr( GetProcessTime('explorer.exe') ) );
EDIT:
Zitat von
Jonas:
Mein Problem ist nur, dass ich diese Fenster gerne in der Reihenfolge wie sie erstellt wurden, auslesen möchte.
Nun ja ... So dürfte das nicht gehen aber wenn du sie samt der CreationTime speicherst könntest du sie nachher sortieren !
EDIT2:
Ein kleiner Fehler wurde behoben
MfG