zoukankan      html  css  js  c++  java
  • 外壳扩展创建快捷方式和获取快捷方式的目标对象

    uses
         Windows,ComObj,ShlObj,ActiveX;
    
    {
          函数功能:创建指定文件的快捷方式
          TargetFile: 快捷方式指向的文件或目录
          CreateAt:      创建的快捷方式保存路径
          函数返回True表示操作成功,False表示失败
    }
    function CreateShortCut(TargetFile,CreateAt:string):Boolean;
    const
         IID_IPersistFile:TGUID = '{0000010B-0000-0000-C000-000000000046}';
    var
         intfLink:IShellLink;
         IntfPersist:IPersistFile;
    begin
         IntfLink:=CreateComObject(CLSID_ShellLink) as IShellLink;
         Result:=(IntfLink<>nil) and SUCCEEDED(IntfLink.QueryInterface(IID_IPersistFile,IntfPersist))
         and SUCCEEDED(intfLink.SetPath(PAnsiChar(TargetFile))) and
         SUCCEEDED(IntfPersist.Save(PWideChar(WideString(CreateAt)),True));
    end;
    
    
    {
          函数功能:返回指定快捷方式的目标文件
          LinkFile: 快捷方式文件完整路径
          函数返回空字符串时表示失败,否则成功
    }
    
    function GetTargetOfShorCut(LinkFile:string):string;
    const
         IID_IPersistFile:TGUID = '{0000010B-0000-0000-C000-000000000046}';
    var
         intfLink:IShellLink;
         IntfPersist:IPersistFile;
         pfd:_WIN32_FIND_DATA;
         bSuccess:Boolean;
    begin
         Result:='';
         IntfLink:=CreateComObject(CLSID_ShellLink) as IShellLink;
         SetString(Result,nil,MAX_PATH);
         {
           Load方法的第二个参数还可以传递STGM_WRITE或STGM_READWRITE,表示对快捷方式信息的访问权限
             STGM_READ:只读 
             STGM_WRITE:只写 
             STGM_READWRITE:读写
           GetPath方法的第三个参数还可以传递SLGP_UNCPRIORITY或SLGP_SHORTPATH,表示返回的目标路径格式
             SLGP_UNCPRIORIT:UNC网络路径
             SLGP_SHORTPATH :DOS 8.3格式路径
             SLGP_RAWPATH      : 长路径
         }
         bSuccess:=(IntfLink<>nil) and SUCCEEDED(IntfLink.QueryInterface(IID_IPersistFile,IntfPersist))
          and SUCCEEDED(IntfPersist.Load(PWideChar(WideString(LinkFile)),STGM_READ)) and
          SUCCEEDED(intfLink.GetPath(PAnsiChar(Result),MAX_PATH,pfd,SLGP_RAWPATH));
         if not bSuccess then Result:='';
    end;
    
     
    
    除SetPath和GetPath方法外,IShellLink接口的其它方法可以设置或读取快捷方式的其它信息:
    GetArguments:获得参数信息 
    GetDescription:获得描述信息
    GetHotkey:获得快捷键
    GetIconLocation:获得图标  
    GetIDList:获得快捷方式的目标对象的item identifier list (Windows外壳中的每个对象如文件,目录和打印机等都有唯一的item identifiler list)
    GetPath: 获得快捷方式的目标文件或目录的全路径
    GetShowCmd:获得快捷方式的运行方式,比如常规窗口,最大化
    GetWorkingDirectory:获得工作目录 
    Resolve:按照一定的搜索规则试图获得目标对象,即使目标对象已经被删除或移动,重命名
    下面是对应信息的设置方法
    SetArguments 
    SetDescription 
    SetHotkey
    SetIconLocation
    SetIDList
    SetPath
    SetRelativePat
    SetShowCmd
    SetWorkingDirectory 
  • 相关阅读:
    hinge loss
    KL散度
    pygame 学习
    pytorch 反向传播
    在线画数学函数图
    recover deleted files
    98个关键点的人脸
    Pytorch详解BCELoss和BCEWithLogitsLoss
    one hot vector
    Effective C++
  • 原文地址:https://www.cnblogs.com/blogpro/p/11453890.html
Copyright © 2011-2022 走看看