Moin Daniel,
gemäss Doku sollte das dann unter NT 4 und Win 95 funktionieren, wenn mindestens der IE 4.0 installiert ist.
Ansonsten könntest Du Dir als Ersatz für SHGetSpecialFolderPath auch die Funktion SHGetFolderPath importieren, die soll's auch so ab NT 4 und 95 tun.
Warum Borland die nun weggelassen hat, weiss ich allerdings auch nicht:
Code:
function SHGetFolderPath(const hwndOwner : HWND;const nFolder : integer;const hToken : DWORD;const dwFlags : DWORD; const pszPath : PChar) : HRESULT; stdcall; external 'shell32.dll' name 'SHGetFolderPathA';
Der Aufruf wäre dann wie folgt (ein Beispiel):
Code:
const // aus SHLOBJ.H
SHGFP_TYPE_CURRENT = 0;
var
szDesktopFolder : PChar;
begin
szDesktopFolder := StrAlloc(MAX_PATH+1);
try
if SHGetFolderPath(0,CSIDL_COMMON_DESKTOPDIRECTORY,0,SHGFP_TYPE_CURRENT,szDesktopFolder) <> S_OK then
begin
ShowMessage(SysErrorMessage(GetLastError));
exit;
end;
ShowMessage(szDesktopFolder);
finally
StrDispose(szDesktopFolder);
end;
end;
Ob das allerdings wirklich unter 95 und NT 4 ohne IE 4.0 funktioniert weiss ich nicht, und kann ich auch nicht testen.
Zur Sicherheit emfiehlt es sich allerdings die Funktion dynamisch und nicht, wie hier gezeigt, statisch zu importieren. Falls sie doch nicht vorhanden ist, gäbe es sonst ja eine Fehlermeldung.
***EDIT***
Ich hab' das ganze mal nach Windows
API verschoben.