提示:使用DDE!
在帮助中找一找!网上也有很多关于使用DDE修改开始菜单的文章。
去找找!记住是DDE(动态数据交换)!!

解决方案 »

  1.   

    大哥,俺对DDE,不是熟悉。
    麻烦你多说一点好吗?
      

  2.   

    下面的例子用客户程序向程序管理器发送命令,用于创建程序组、程序项以及删除程序组。 
    程序管理器提供了应用程序的DDE接口命令字符串,应用程序利用这些命令字符串可以实现以下的功能:
    1.创建程序组
    命令格式为:
    CreateGroup(程序组名[,程序组所在的路径])
    程序组不存在时进行创建;如程序组存在则按照指定的路径激活。
    2.删除程序组
    命令格式为:
    DeleteGroup(程序组名)
    3.显示程序组
    命令格式为;
    ShowGroup(程序组名,显示标志)
    显示标志用于控制程序组在程序管理器中以极大、极小或正常方式显示。
    4.重新装入程序组
    命令格式为:
    ReLoadGroup(程序组名)
    该命令使程序管理器先删除而后再重新装入一个已有的程序组。
    5.向程序组中添加程序项
    命令格式为:
    AddItem(命令行[,描述[,图标路径[,图标序号[,图标横坐标,图标纵坐标[,工作区目录[,热键[,是否最小化显示标志]]]]]]])
    命令行控制程序项的执行,可包括路径、参数等。其它参数分别对应在程序管理器中添加一个程序项时需要设置的参数和选项。它们都有缺省设置,因而是可选的。
    6.替换程序组中的程序项
    命令格式为:
    ReplaceItem(程序项名)
    该命令删除一个程序项,并将所删除程序项的位置记录下来,以后通过AddItem在这个所记录的位置增加新项目。
    7.从程序组中删除程序项
    命令格式为:
    DeleteItem(程序项名)
    从当前活动程序组中删除一个程序项。
    8.关闭程序管理器
    命令格式为:
    ExitProgram(是否保存程序组信息标志)
      

  3.   

    程序设计界面如图所示,包含一个DDE客户会话(DDEClientConv)部件和四个完成不同功能的按钮。
    DDEClientConv在设计时和程序管理器建立一个DDE会话,其中DDE服务器和DDE主题 都为PROGMAN。联接模式ConnectMode设置为ddeManual。
    我们把只有一个字符串参数的命令发送情况抽象出来,形成下面的SendMacro函数。 
    function TForm1.SendMacro(Name: String;Command: String): Boolean;
    var
    Macro: String;
    Cmd: array[0..255] of Char;
    begin
    Result := True;
    if Name <> '' then
    begin
    Macro := Format('['+Command+'(%s)]', [Name]) + #13#10;
    StrPCopy (Cmd, Macro);
    DDEClient.OpenLink;
    if not DDEClient.ExecuteMacro(Cmd, False) then
    Result := False;
    DDEClient.CloseLink;
    end;
    end; 
    过程首先利用Format函数形成宏字符串: 
    Macro := Format('['+Command+'(%s)]', [Name]) + #13#10; 
    而后把Pascal类型的字符串拷贝到一个程序管理器可接受的PChar类型字符串中。
    DDE联接采用人工模式。首先调用OpenLink方法。而后调用ExecuteMacro方法发送命令,如失败则返回False。最后用CloseLink关闭联接。
      三个按钮CreateButton、AddButton、DeleteButton分别用于创建程序组、添加程序项、删除程序组。它们的程序实现大同小异,如下所示。
    (只给你添加程序项的例子,替换改为ReplaceItem及可) procedure TForm1.AddButtonClick(Sender: TObject);
    var
    Name: String;
    begin
    Name := InputBox('Input Box','Input Application full_Path name','');
    if Name = '' then
    MessageDlg('Application name can not be blank.', mtError, [mbOK], 0)
    else
    if SendMacro(Name,'AddItem') = False then
    MessageDlg('Unable to Add Item.', mtInformation, [mbOK], 0);
    end;
      

  4.   

    具体关于DDE的资料你看看帮助,或在网上查查,因为很长时间不用,我已经生疏了,只记得个大概。
      

  5.   

    其实,这就是如何操作快捷方式,用wscrit脚本最方便了,然后在代码中执行该脚本。
    当然dde、com接口也行