Für diejenigen, die noch hilft suchen Sie versuchen, die Antwort von Scott kann. Hier ist, wie ich es mit der Bibliothek ATLComTime.h gemacht habe, die noch ein paar Schritte benötigt.
FileTime fileTime = yourFileTime;
// dateFileTime will automatically cast to DATE when used as a parameter
COleDateTime dateFileTime(fileTime);
Seit DATE ist ein COM-freundliche Art Sie einfach die ‚dateFileTime‘ Variable als Methodenparameter geben kann. Wenn Sie den VARIANT weiterhin verwenden möchten, setzen Sie die Variable 'dateFileTime' einfach in einen VARIANT.
VARIANT varDate;
VariantInit(&varDate);
varDate.vt = VT_DATE;
varDate.date = dateFileTime;
// Use the varDate varaible
// ... call some method or use locally
// Don't forget to clear the VARIANT from memory after use
VariantClear(&varDate);
In der aufgerufenen Methode (immer noch in C++), dh die FILETIME von einer Date-Variable zurückbekommen. Die COleDateTime möchte Ihnen eine SYSTEMTIME anstatt einer FILETIME geben, also müssen wir ein paar Hoops überspringen.
FILETIME fileTime;
if (variantDateTime.vt == VT_DATE) // only use if DATE was put into a VARIANT
{
COleDateTime oleDateTime(variantDateTime.date);
SYSTEMTIME sysTime;
oleDateTime.GetAsSystemTime(sysTime);
SystemTimeToFileTime(&sysTime, &fileTime);
}
Wenn Sie keinen VARIANT verwenden, so können Sie nur den Typen Coledatetime mit dem DATE Variable initialisieren.
COleDateTime oleDateTime(dateVariable);
... // etc as above
Wie oben erwähnt es ein bisschen mehr Arbeit als Scotts Antwort ist, aber eine andere Möglichkeit, eine FILE über die COM-Schnittstelle Barriere zu erhalten.
Machst du es wirklich zweimal oder ist es ein Kopier-/Einfügefehler? –
Entschuldigen Sie, kopieren Sie Paste-Fehler. – Paws