Das ist ja nur dazu da um die Form anzuzeigen...
Wir haben hier zwei Varianten... entweder wird die Form als eigenständiges Fenster angezeigt oder in einem Bereich der Hauptform...
Was ich kurios finde...
Die Funktion die ich oben beschrieben habe, habe ich auch für Windows XP:
Delphi-Quellcode:
//******************************************************************************
// fnGetShellFolder --> Get Constant Special Item ID Path from Windows *
// *
// Only for WIN XP *
// WIN7 has to use fnGetKnownFolderPath in this Unit *
// *
// Parameter --> iCSIDL (Constant Special Item ID) *
// Return --> Boolean True/False *
//******************************************************************************
function fnGetShellFolder(iCSIDL: integer):
string;
var
pIDL : PItemIdList;
sFolderPath :
string;
iSystemFolder : Integer;
Malloc : IMalloc;
begin
Malloc :=
nil;
sFolderPath := '
';
SHGetMalloc(Malloc);
If Malloc =
nil Then
Begin
Result := sFolderPath;
Exit;
End;
Try
iSystemFolder := iCSIDL;
If SUCCEEDED(SHGetSpecialFolderLocation(0, iSystemFolder, pIDL))
then
Begin
SetLength(sFolderPath, max_path);
If SHGetPathFromIDList(pidl, PChar(sFolderPath))
Then
Begin
SetLength(sFolderPath, length(PChar(sFolderPath)));
End;
End;
Result := sFolderPath;
Finally
Malloc.Free(pIDL);
End;
end;
Ich hab die gleiche
DLL jetzt unter Windows XP getestet... hier kommt kein Fehler! Also kein Runtime Error...
Liegt der Fehler dann nicht eher in der Funktion für Windows 7, das diese einen Speicherfehler verursacht?