【发布时间】:2012-10-24 08:09:48
【问题描述】:
1。如何获取控制面板列表,包括它们的名称和图标,以便创建类似于“开始”菜单显示的菜单?
2。当我点击一个条目时,如何执行对应的控制面板?
顺便问一下,这种PopupMenu是用什么控件来做的?但它有右键单击事件。
更新:
我使用 PItemIDList 来获取一个文件夹:
var:
PIDL, TempPIDL: PItemIDList;
Path: array[0..MAX_PATH] of Char;
FI: SHFILEINFOW;
begin
SHGetSpecialFolderLocation(0, CSIDL_FAVORITES, PIDL);
SHGetPathFromIDList(PIDL , Path);
Memo1.Lines.Add(Path);
SHGetFileInfo(LPCTSTR(PIDL), 0, FI, SizeOf(FI), SHGFI_PIDL or SHGFI_DISPLAYNAME or SHGFI_ICON);
Memo1.Lines.Add(FI.szDisplayName);
Image1.Picture.Icon.Handle := FI.hIcon;
它显示正常,但是当我将 CSIDL_FAVORITE 更改为 CSIDL_CONTROLS 时,我总是得到错误。
这是获取控制面板项目的错误方法吗?
我还通过使用 CPL 使用另一种方法
复制自here
但它不能显示完整的项目。
【问题讨论】:
-
我不明白这个问题。我想您是在问如何枚举控制面板中的所有项目,以及如何在菜单中显示它们。对吗?
-
是的。对不起,英语不是我的强项
标签: delphi popupmenu control-panel