Ich hab mal dieses Programm geschrieben, das so weit 1a funktioniert
Ich finde das um einiges eleganter, als über eine Verknüpfung. Außerdem musst du dich nich drum bemühen, dass deine Verknüpfung stimmt und du kannst alles aus dem Programm heraus festlegen.
In meinem Bespiel kannst du
CSIDL_DRIVES auch durch etwas anderes ersetzen. Im moment wird direkt der Arbeitsplatz im Explorer angeziegt. Du kannst aber auch den Desktop (CSIDL_DESKTOPDIRECTORY), "Eigene Dateien" (CSIDL_PERSONAL) und viele andere benutzen...
Delphi-Quellcode:
uses
Windows, ShellAPI, ShlObj;
{$R *.res}
var
Info: ShellExecuteInfo;
List: PItemIDList;
begin
SHGetSpecialFolderLocation(GetActiveWindow, CSIDL_DRIVES, List);
ZeroMemory(@Info, SizeOf(ShellExecuteInfo));
Info.cbSize := SizeOf(ShellExecuteInfo);
Info.lpVerb := 'explore';
Info.Wnd := GetActiveWindow;
Info.fMask := SEE_MASK_IDLIST;
Info.lpIDList := List;
Info.nShow := SW_SHOWMAXIMIZED;
ShellExecuteEx(@Info)
end.
BTW:
GetEnvironmentVariable is übrigens etwas unsicher und sollte vermieden werden! Mit
GetWindowsDirectory fährst du sicher...