Hi Mathias & alle anderen,
| MathiasSimmack hat folgendes geschrieben: |
Ich muss mich übrigens noch korrigieren. Die o.g. Interfaces funktionieren natürlich auch unter Win 9x. Wichtig ist nur, dass ein aktueller IE (min. 5.5) drauf ist.
|
Ja, das PSDK sagt (fälschlicherweise?)
| Zitat: |
Minimum operating systems: Millennium, Windows 2000
|
Ohne es getestet zu haben, denke ich aber, dass es reichen müsste den IE5.5 installiert zu haben. Dieser benötigt mind. Windows 95/Windows NT (btw: IE6 benötigt mind. Win98; bald werden wir mit solchen Techniken also nicht mehr alle Windowsversionen ab 95 abdecken können).
| MathiasSimmack hat folgendes geschrieben: |
@DaFox: Falls du mal wieder anwesend bist, [...]
|
Ganz schön frech... Ich bin immer anwesend!!
| MathiasSimmack hat folgendes geschrieben: |
[...] wie sieht´s mit deiner geschätzten Meinung dazu aus:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| type STATURL = record cbSize: DWORD; pwcsUrl: DWORD; pwcsTitle: DWORD; ftLastVisited: FILETIME; ftLastUpdated: FILETIME; ftExpires: FILETIME; dwFlags: DWORD; end; |
Laut PSDK müssten die beiden markierten Einträge eigentlich LPWSTR (also WideChars) sein. |
Mathias, Du hast natürlich wie immer Recht!
Mein Source sah damals in etwa so aus:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30:
| procedure TForm1.Button2Click(Sender: TObject); const CLSID_CUrlHistory: TGUID = '{3C374A40-BAE4-11CF-BF7D-00AA006946EE}'; var r: TStatURL; Enum: IEnumStatUrl; X: Integer; Row: Integer; I: IUrlHistoryStg2; begin StringGrid1.Cells[0, 0] := 'Last Visited'; StringGrid1.Cells[1, 0] := 'Title'; StringGrid1.Cells[2, 0] := 'Url'; StringGrid1.Cells[3, 0] := 'Last Updated'; StringGrid1.Cells[4, 0] := 'Expires'; Row := 0; I := CreateComObject(ClsId_CUrlHistory) as IUrlHistoryStg2; I.EnumUrls(Enum); Enum.SetFilter('http://', 0); while enum.next(1, r, @X) = S_OK do begin Inc(Row); StringGrid1.RowCount := Row + 1; Stringgrid1.Cells[0, Row] := DateTimeToStr(FileTimeToDateTime(r.ftLastVisited)); Stringgrid1.Cells[1, Row] := PWideChar(Pointer(r.pwcsTitle)); Stringgrid1.Cells[2, Row] := PWideChar(Pointer(r.pwcsUrl)); Stringgrid1.Cells[3, Row] := DateTimeToStr(FileTimeToDateTime(r.ftLastUpdated)); Stringgrid1.Cells[4, Row] := DateTimeToStr(FileTimeToDateTime(r.ftExpires)); end; end; |
Ändert man nun den Record in
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| TSTATURL = record cbSize: DWORD; pwcsUrl: <span style="font-weight: bold">PWideChar</span>; pwcsTitle: <span style="font-weight: bold">PWideChar</span>; ftLastVisited: FILETIME; ftLastUpdated: FILETIME; ftExpires: FILETIME; dwFlags: DWORD; end; |
so spart man sich das Casten und er stimmt mit den Vorgaben im PSDK überein! (Aaah, ich liebe Pointer

)
Viele Grüße,
Markus