大家对桌面的快键方式、开始菜单、程序菜单、快速启动菜单的快键方式,都很熟悉了。
但是各位用编程去实现过吗?最近在弄一个软件时,需要这点功能时,通过找些资料及自己查看源码?
1、包含单元ComObj,ShlObj,ActiveX
var
tmpObject :Iunknown;
tmpSlink: IShellLink;
tmpPFile: IPersistFile;
PIDL: PItemIDList;
StartupDirectory: array[0..MAX_PATH] of char;
StartupFilename: string;
LinkFilename: WideString;
begin
StartupFilename:=Application.ExeName;
tmpObject:=CreateComObject(CLSID_ShellLink);
tmpSLink:=tmpObject as IShellLink;
tmpPFile:=tmpObject as IPersistFile;
tmpSlink.SetPath(pchar(StartupFilename));
tmpSlink.SetWorkingDirectory(pchar(ExtractFilePath(StartupFilename)));
SHGetSpecialFolderLocation(0,CSIDL_DesktopDirectory,PIDL); //主要是这参数
SHGetPathFromIDList(PIDL,StartupDirectory);
LinkFilename:=StartupDirectory+'/OUEmail.lnk';
tmpPFile.Save(pWchar(linkFilename),false);
CSIDL_STARTUP 启动菜单项
CSIDL_PROGRAMS 程序菜单项
CSIDL_STARTMENU 开始菜单项
CSIDL_DesktopDirectory 桌面项
这些定义都在ShlObj单元存在。