CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  Windows SDK/API

如何在windows"开始-程序"菜单中添加和删除菜单项?高分送!

楼主jfy(jfy)2005-03-02 18:21:16 在 Delphi / Windows SDK/API 提问

我在制作一个安装程序,如何在windows"开始-程序"菜单中添加和删除菜单项? 问题点数:100、回复次数:8Top

1 楼yiph(逸飘寒)回复于 2005-03-02 18:59:24 得分 0

SHGetSpecialFolderLocation  
  SHGetPathFromIDListTop

2 楼rouqing(*冰雨&双子座奇缘*)回复于 2005-03-02 20:30:31 得分 0

Study...Top

3 楼linbren(lin)回复于 2005-03-02 23:24:05 得分 0

没用过,但是用installshell应该可以....Top

4 楼unsigned(僵哥(发站内消息,请附上链接或问题说明,否则不予回复))回复于 2005-03-02 23:46:19 得分 100

 
  uses  
      ShlObj,   ActiveX;  
   
  procedure   FreePidl(pidl:   PItemIDList);  
  var  
      allocator:   IMalloc;  
  begin  
      if   Succeeded(SHGetMalloc(allocator))   then  
      begin  
          allocator.Free(pidl);  
          {$IFDEF   VER100}  
          allocator.Release;  
          {$ENDIF}  
      end;  
  end;  
   
  function   GetCommonPrograms:   string;  
  var  
      pidl:   PItemIDList;  
      buf:   array[0..MAX_PATH]   of   Char;  
  begin  
      if   Succeeded(SHGetSpecialFolderLocation(Form1.Handle,CSIDL_COMMON_PROGRAMS{所有用户[开始]-[程序]},   pidl))   then  
      SHGetPathFromIDList(pidl,   buf);   //CSIDL_STARTMENU   当前用户[开始]菜单  
      Result   :=   StrPas(buf);                     //CSIDL_COMMON_STARTMENU   所有用户[开始]菜单  
                                                                      //CSIDL_COMMON_PROGRAMS   所有用户[开始]-[程序]  
                                                                      //CSIDL_COMMON_STARTUP   所有用户[开始]-[程序]-[启动]  
                                                                      //CSIDL_DESKTOP                 当前用户[桌面]  
                                                                      //CSIDL_PROGRAMS               当前用户[开始]-[程序]  
                                                                      //CSIDL_PERSONAL               当前用户[My   Document]我的文档  
                                                                      //CSIDL_FAVORITES             当前用户[收藏夹]  
                                                                      //CSIDL_STARTUP                 当前用户[开始]-[程序]-[启动]  
                                                                      //CSIDL_RECENT                     当前用户[Recent]文件夹  
                                                                      //CSIDL_SENDTO                     当前用户[SendTo]文件夹  
                                                                      //CSIDL_DESKTOPDIRECTORY     当前用户[桌面]  
                                                                      //CSIDL_NETHOOD                     当前用户[NetHood]网上邻居  
                                                                      //CSIDL_FONTS                         字体文件夹  
                                                                      //CSIDL_TEMPLATES                 当前用户[Templates]临时文件目录  
                                                                      //CSIDL_COMMON_DESKTOPDIRECTORY   所有用户[桌面]  
                                                                      //CSIDL_APPDATA                     当前用户[Application   Data]目录  
                                                                      //CSIDL_PRINTHOOD                 当前用户[PrintHood]目录  
                                                                      //CSIDL_COMMON_FAVORITES   所有用户[Favorites]收藏夹  
                                                                      //CSIDL_INTERNET_CACHE       当前用户IE浏览器临时文件夹  
                                                                      //CSIDL_COOKIES                     当前用户[Cookies]目录  
                                                                      //CSIDL_HISTORY                     当前用户[History]历史记录目录  
   
      //   The   calling   application   is   responsible   for   freeing   the   PItemIDList-pointer  
      //   with   the   Shell's   IMalloc   interface  
      FreePIDL(pidl);  
  end;  
  ----------------------------------------  
  用法:  
      label1.Caption   :=   GetCommonPrograms;Top

5 楼unsigned(僵哥(发站内消息,请附上链接或问题说明,否则不予回复))回复于 2005-03-02 23:47:15 得分 0

使用上述方法获取到相应目录之后就可以在该目录下进行如创建目录,快捷方式,删除等操作。Top

6 楼unsigned(僵哥(发站内消息,请附上链接或问题说明,否则不予回复))回复于 2005-03-02 23:50:25 得分 0

添加个在开始菜单创建目录的实例:  
   
  Uses  
      ShlObj,   ActiveX;  
   
  procedure   FreePidl(pidl:   PItemIDList);  
  var  
      allocator:   IMalloc;  
  begin  
      if   Succeeded(SHGetMalloc(allocator))   then  
      begin  
          allocator.Free(pidl);  
          {$IFDEF   VER100}  
          allocator.Release;  
          {$ENDIF}  
      end;  
  end;  
   
  function   CreateFolder(aFolderName:   string;   aLocation:   Integer):   Boolean;  
  var  
      pIdl:   PItemIDList;  
      hPath:   PChar;  
  begin  
      Result   :=   False;  
      if   SUCCEEDED(SHGetSpecialFolderLocation(0,   aLocation,   pidl))   then  
      begin  
          hPath   :=   StrAlloc(MAX_PATH);  
          SHGetPathFromIDList(pIdl,   hPath);  
          SetLastError(0);  
          CreateDirectory(PChar(hPath   +   '\\'   +   aFolderName),   nil);  
          if   (GetLastError   =   0)   or   (GetLastError   =   ERROR_ALREADY_EXISTS)   then  
              Result   :=   True;  
          FreePIDL(pIdl);  
          StrDispose(hPath);  
      end;  
  end;  
   
   
  procedure   TForm1.Button1Click(Sender:   TObject);  
  begin  
      CreateFolder('MyProgramgroup',   CSIDL_PROGRAMS);  
  end;  
   
   
  Top

7 楼leeshine(LeeShine_Soft)回复于 2005-03-03 00:25:15 得分 0

sou   cang   dai   ma!thanksTop

8 楼caiso(十年磨一剑)回复于 2005-03-04 10:40:18 得分 0

顶一下Top

相关问题

  • 怎样删除 IE 的右键菜单项
  • 如何删除快捷菜单项?在线等候!
  • 关于菜单项
  • 菜单项错位
  • 菜单项控制
  • 怎样删除FOXMAIL在鼠标右键中增加的菜单项?
  • 动态建立菜单项
  • 去掉菜单项出错?
  • 如何禁止菜单项
  • 动态添加菜单项

关键词

  • 用户
  • csidl
  • pidl
  • hpath
  • 程序
  • 菜单
  • freepidl
  • pitemidlist
  • 添加
  • allocator

得分解答快速导航

  • 帖主:jfy
  • unsigned

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo