经常看到操作系统中有创建快捷方式。如何实现
如何用语言实现创建快捷方式??

解决方案 »

  1.   

    http://expert.csdn.net/Expert/topic/2516/2516704.xml?temp=.4567224
    那里就有,自己看吧
      

  2.   

    我在网上找了一篇(好象就是csdn以前发表过,我忘了具体位置。重发一下),我没有试过。你自己看看!好的话通知我一下!!!
    procedure Tmainfrm.N30Click(Sender: TObject);
    var
      MyObject : IUnknown;
      MySLink : IShellLink;
      MyPFile : IPersistFile;
      FileName : String;
      Directory : String;
      WFileName : WideString;
      MyReg : TRegIniFile;
    begin
      MyObject := CreateComObject(CLSID_ShellLink);
      MySLink := MyObject as IShellLink;
      MyPFile := MyObject as IPersistFile;
      FileName := paramstr(0);
      with MySLink do begin
        SetPath(pchar(FileName));     // 1999.4.9, as bug before!
        SetHotkey(vk_F11);
        SetWorkingDirectory(PChar(ExtractFilePath(FileName)));
      end;
      MyReg := TRegIniFile.Create(
            'Software\MicroSoft\Windows\CurrentVersion\Explorer');
         // 在桌面上生成快捷图标
      Directory := MyReg.ReadString('Shell Folders','Desktop','');
        // 在Start Menu中加入相应的ShortCut
       { 1:Directory := MyReg.ReadString('Shell Folders','Start Menu','');
        // 在'发送到'中加入相应的ShortCut
        2:Directory := MyReg.ReadString('Shell Folders','SendTo','');
      end;  }  WFileName := Directory+'\中鑫工资管理系统 2003.lnk';
      MyPFile.Save(PWChar(WFileName),False);
      MyReg.free;
      application.messagebox('成功的创建!!!','消息框',mb_ok+mb_iconinformation);
    end;//上边的是在开始菜单,下边倒桌面:
    procedure Tmainfrm.M2Click(Sender: TObject);
    var
      MyObject : IUnknown;
      MySLink : IShellLink;
      MyPFile : IPersistFile;
      FileName : String;
      Directory : String;
      WFileName : WideString;
      MyReg : TRegIniFile;
    begin
      MyObject := CreateComObject(CLSID_ShellLink);
      MySLink := MyObject as IShellLink;
      MyPFile := MyObject as IPersistFile;
      FileName := paramstr(0);
      with MySLink do begin
        SetPath(pchar(FileName));     // 1999.4.9, as bug before!
        SetHotkey(vk_F11);
        SetWorkingDirectory(PChar(ExtractFilePath(FileName)));
      end;
      MyReg := TRegIniFile.Create(
            'Software\MicroSoft\Windows\CurrentVersion\Explorer');
         // 在桌面上生成快捷图标
      //Directory := MyReg.ReadString('Shell Folders','Desktop','');
        // 在Start Menu中加入相应的ShortCut
       Directory := MyReg.ReadString('Shell Folders','Start Menu','');
        // 在'发送到'中加入相应的ShortCut
      {  2:Directory := MyReg.ReadString('Shell Folders','SendTo','');
      end;  }  WFileName := Directory+'\中鑫工资管理系统 2003.lnk';
      MyPFile.Save(PWChar(WFileName),False);
      MyReg.free;
      application.messagebox('成功的创建!!!','消息框',mb_ok+mb_iconinformation);
    end;
      

  3.   

    转贴:
    //在桌面上建立快捷方式
    procedure TForm1.Button1Click(Sender: TObject);
    var
    tmpObject : IUnknown;
    tmpSLink : IShellLink;
    tmpPFile : IPersistFile;
    PIDL : PItemIDList;
    StartupDirectory : array[0..MAX_PATH] of Char;
    StartupFilename : String;
    LinkFilename : WideString;
    begin
    StartupFilename := 'c:\windows\notepad.exe';
    tmpObject := CreateComObject(CLSID_ShellLink);//创建建立快捷方式的外壳扩展
    tmpSLink := tmpObject as IShellLink;//取得接口
    tmpPFile := tmpObject as IPersistFile;//用来储存*.lnk文件的接口
    tmpSLink.SetPath(pChar(StartupFilename));//设定notepad.exe所在路径
    tmpSLink.SetWorkingDirectory(pChar(ExtractFilePath(StartupFilename)));//设定工作目录
    SHGetSpecialFolderLocation(0,
    CSIDL_DESKTOPDIRECTORY,
    PIDL);//获得桌面的Itemidlist
    SHGetPathFromIDList(PIDL,
    StartupDirectory);//获得桌面路径
    LinkFilename := StartupDirectory + '\MyNotepad.lnk';
    tmpPFile.Save(pWChar(LinkFilename),FALSE);//保存*.lnk文件
    end;