Sicher das du denn alles richtig machst??
Ja, ziemlich.
Ich hab das etwas verändert, weil ich keine Fehlermeldungen haben möchte.
Daß etwas nicht funktioniert, sehe ich ja daran, daß der Rückgabewert der Funktion gettimefromfile 0 ist.
Aber ich habe natürlich kontrolliert, ob ich einen Fehler eingebaut habe, indem ich die in deinem Upload enhaltene .exe aufgerufen habe, und die bringt den gleichen Rückgabewert, wie die von mir modifizierte Funktion. (siehe anhängende .jpg).
Im 2.jpg kannst du sehen, daß der Windows Explorer die korrekte Zeit angibt.
Delphi-Quellcode:
FUNCTION TMain.GetTimeFromFile(FileName:String):Double;
var Duration:Double; wFileName:PWideChar; hr:HRESULT; MediaDet:IMediaDet;
begin;
MediaDet:=nil;
Result:=0;
wFileName:=StringToOleStr(FileName);
try
hr:=CoCreateInstance(CLSID_MediaDet,nil,CLSCTX_INPROC,IMediaDet,MediaDet);
if hr<>S_OK then exit;
hr := MediaDet.put_Filename(wFileName);
if hr<>S_OK then exit;
hr:=MediaDet.get_StreamLength(Duration);
if hr<>S_OK then exit;
result:=duration;
finally
SysFreeString(wFileName);
MediaDet:=nil;
end;
end;