在桌面上自动创建快捷方式

简介: uses   ShellAPI,   ShlObj,   ActiveX,   ComObj;         const             CCH_MAXNAME=255;             LNK_RUN_MIN=7;             LNK_RUN_MAX=3;             LNK_RUN_NORMAL=1;     type            
uses   ShellAPI ,    ShlObj ,    ActiveX ,    ComObj;   
    
  const   
          CCH_MAXNAME
= 255 ;   
          LNK_RUN_MIN
= 7 ;   
          LNK_RUN_MAX
= 3 ;   
          LNK_RUN_NORMAL
= 1 ;   
  type   
          LINK_FILE_INFO
= record   
                  FileName
: array[ 0 .. MAX_PATH]   of   char;   
                  WorkDirectory
: array[ 0 .. MAX_PATH]   of   char;   
                  IconLocation
: array[ 0 .. MAX_PATH]   of   char;   
                  IconIndex
: integer;   
                  Arguments
: array[ 0 .. MAX_PATH]   of   char;   
                  Description
: array[ 0 .. CCH_MAXNAME]   of   char;   
                  ItemIDList
: PItemIDList;   
                  RelativePath
: array[ 0 .. 255 ]   of   char;   
                  ShowState
: integer;   
                  HotKey
: word;   
          end;   
    
  function   CreateLinkFile(const   info
: LINK_FILE_INFO;const   DestFileName : string = '' ) : boolean;   
  var   
          anobj
: IUnknown;   
          shlink
: IShellLink;   
          pFile
: IPersistFile;   
          wFileName
: widestring;   
  begin   
          wFileName
:= destfilename;   
          anobj
:= CreateComObject(CLSID_SHELLLINK);   
          shlink
:= anobj   as   IShellLink;   
          pFile
:= anobj   as   IPersistFile;   
          shlink
. SetPath(info . FileName);   
          shlink
. SetWorkingDirectory(info . WorkDirectory);   
          shlink
. SetDescription(info . Description);   
          shlink
. SetArguments(info . Arguments);   
          shlink
. SetIconLocation(info . IconLocation , info . IconIndex);   
          shlink
. SetHotkey(info . HotKey);   
          shlink
. SetShowCmd(info . ShowState);   
          shlink
. SetRelativePath(info . RelativePath , 0 );   
          
if    DestFileName = ''    then   
                  wFileName
:= ChangeFileExt(info . FileName , ' lnk ' );   
          result
:= succeeded(pFile . Save(pwchar(wFileName) , false));   
  end;   

 

 

procedure   TForm1.Button1Click(Sender:   TObject);   
  var   
        rLnk   :   LINK_FILE_INFO;   
        pidl:pItemIDList;   
        pDesktop   :   
string ;   
  begin   
        rLnk.FileName   :
=     ' C:Program   FilesInternet   ExplorerIEXPLORE.EXE ' ;   
        rLnk.WorkDirectory   :
=     ' C:Program   FilesInternet   Explorer';   
        rLnk.IconIndex   : =     0 ;   
    
        
// 取桌面路径   
        SetLength(pDesktop,    255 );   
        SHGetSpecialFolderLocation(Self.Handle,   CSIDL_DESKTOP,   pidl);   
        SHGetPathFromIDList(pidl,   PChar(pDesktop));   
        SetLength(pDesktop,   StrLen(PChar(pDesktop)));   
    
        CreateLinkFile(rLnk,   pDesktop   
+     ' '   +    ' I.lnk ' );   
  end; 
相关文章
|
10月前
|
存储 Shell Windows
关于编辑Windows的右键【新建】删除和添加
关于编辑Windows的右键【新建】删除和添加
某文件在桌面上,命令窗口中找不到,因为桌面是两个目录合成的
某文件在桌面上,命令窗口中找不到,因为桌面是两个目录合成的
72 0
|
Ubuntu
在Ubuntu系统中给应用创建快捷方式
背景:因为Ubuntu中没有QQ版本可以使用,所以用wine+QQ 。之后安装完之后,肯定需要创建一个类似于window系统中的桌面快捷启动。每次都在终端中启动QQ实在太麻烦了, 所以我决定给QQ添加一个桌面启动器, 就是就是windows下面的快捷方式。
1764 0
|
Shell C# Windows
使用C#创建快捷方式
原文:使用C#创建快捷方式   在Windows中创建快捷方式很简单,直接用右键点击文件或文件夹,选择创建快捷方式即可。如果想用C#代码的方式创建,就没有那么方便了,因为.NET框架没有提供直接创建快捷方式的方法。
1280 0