如何打开网上邻居、回收站、桌面、我的电脑、控制面板等特殊文件夹?
以前我的方法很变态,今天看到一个极好的方法,于是改进了一下,共享出来:
///核心代码参考于Torry's Delphi Page的Tips。
uses
ActiveX, ShlObj, ShellApi;
procedure OpenSpecialFolder(FolderID: integer; AHandle: HWND = 0);
procedure FreePidl(pidl: PItemIDList);
var
allocator : IMalloc;
begin
if Succeeded(shlobj.SHGetMalloc(allocator)) then
begin
allocator.Free(pidl);
{$IFDEF VER90}
allocator.Release;
{$ENDIF}
end;
end;
var
exInfo : TShellExecuteInfo;
begin
// initialize all fields to 0
FillChar(exInfo, SizeOf(exInfo), 0);
with exInfo do
begin
cbSize := SizeOf(exInfo); // required!
fMask := SEE_MASK_FLAG_DDEWAIT or SEE_MASK_IDLIST;
Wnd := AHandle;
nShow := SW_SHOWNORMAL;
lpVerb := 'open';
ShGetSpecialFolderLocation(AHandle, FolderID, PItemIDLIst(lpIDList));
end;
ShellExecuteEx(@exInfo);
FreePIDL(exinfo.lpIDList);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
OpenSpecialFolder(CSIDL_STARTUP);///打开开始菜单
OpenSpecialFolder(CSIDL_NETWORK);///打开“网上邻居”
end;