So, noch ein Nachtrag meinerseits:
Zitat von
MathiasSimmack:
Dabei ist mir aufgefallen, dass die Funktion nichts anzeigt, wenn man die gewünschte Eigenschaft vorher mit Bordmitteln (sprich: Rechtsklick auf die Datei -> Eigenschaften -> Dateiinfos) setzt.
Mittlerweile weiß ich auch warum. Windows legt diese Einträge nicht als WideString sondern nur als String ab. Ändere ich die Funktion "GetFileSummaryInfo" entsprechend um, sehe ich das auch.
Zitat von
Luckie:
In mehrer Felder schreiben geht nicht, entweder du schreibst sie dir selber um, dass sie es kann oder rufst sie entsprechend oft nacheinander auf.
Das klappt ja im Original wg. "Create" nicht, aber ich war mal so frei, eine zusätzliche Funktion "SetMultipleFileSummaryInfo" zu schreiben, die sich wie folgt aufrufen lässt:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
mal : TMultipleArrayList;
begin
SetLength(mal,3);
mal[0].pidInfoType := PIDSI_AUTHOR;
mal[0].pidInfoStr := 'Ich';
mal[1].pidInfoType := PIDSI_COMMENTS;
mal[1].pidInfoStr := 'Tralala';
mal[2].pidInfoType := PIDSI_TITLE;
mal[2].pidInfoStr := 'Mein Titel';
SetMultipleFileSummaryInfo('MeineDatei.txt',
FMTID_SummaryInformation,
mal);
SetLength(mal,0);
end;
Die bearbeitete
Unit (storage.pas) hänge ich ran, damit ihr das testen könnt. Die Grundlage ist zwar von Luckie, aber die Bezeichner für die Konstanten usw. stammen jetzt aus dem
PSDK; aus der Datei "PropIdl.h" um genau zu sein)
Zitat von
schitho:
Außerdem hab ich keine Möglichkeit gefunden, wie ich das Feld Revisionsnummer und Quelle mit Daten füllen kann.
Erstere ist PIDSI_REVNUMBER und lässt sich recht einfach setzen
Delphi-Quellcode:
SetFileSummaryInfo('MeineDatei.txt',
FMTID_SummaryInformation,
PIDSI_REVNUMBER,
'3.0');
Dagegen gehört die Quelle (PIDMSI_SOURCE) zur Kategorie
FMTID_MediaFileSummaryInformation, und die
GUID war nicht einfach zu finden. *schwitz* Aber ich habe sie ja doch entdeckt (s.
Unit im Anhang).
Und hier das Beispiel
Delphi-Quellcode:
SetFileSummaryInfo('MeineDatei.txt',
FMTID_MediaFileSummaryInformation,
PIDMSI_SOURCE,
'www.delphipraxis.net');
btw: Die Funktionen sind bisher nur darauf ausgelegt, Strings zu lesen und zu schreiben. Einige der Konstanten besitzen aber ein anderes Format. In der
Unit steht es dahinter (steht nichts da, hat die Konstanten den gleichen Typ wie die in der Zeile zuvor, usw.). Ihr müsstet die Funktionen also umschreiben um solche Werte auslesen zu können. Ich wollt´s nur gesagt haben.