频道分类

delphi 创建Win桌面快捷方式,实现360桌面图标数字提示 或 类似安卓的右上角的数字提示

作者:admin 来源: 日期:2020/5/6 10:42:23 人气: 标签:

 

创建Win桌面快捷方式,实现360桌面图标数字提示 或 类似安卓的右上角的数字提示

 

 

// 引用单元  
uses
  Winapi.ShlObj, System.Win.ComObj, Winapi.ActiveX, System.Win.Registry;


//参数说明 运行参数,快捷方式图标,备注,快捷快捷方式名,开始菜单快捷方式名
procedure NewLink(AppExe, AIco, Remark, DesktopLnk:String; MenuName: String = '');
var
  AComObj: IUnknown;
  ShellLink: Winapi.ShlObj.IShellLink;
  PersiFile: Winapi.ActiveX.IPersistFile;
  AReg: System.Win.Registry.TRegIniFile;
  AStr: String;
begin // 出处  www.delphifmx.com/node/48
  AComObj  := System.Win.ComObj.CreateComObject(CLSID_ShellLink); //快捷方式的初始化
  ShellLink:= AComObj as IShellLink;
  PersiFile:= AComObj as IPersistFile;
  //目标 (运行命令及参数)
  ShellLink.SetPath(LPWSTR(AppExe));
  //起始位置(路径)
  ShellLink.SetWorkingDirectory(LPWSTR(ExtractFilePath(AppExe)));
  //备注
  ShellLink.SetDescription(LPWSTR(Remark));
  //设置图标
  if AIco<>'' then begin
    ShellLink.SetIconLocation(LPWSTR(AIco), 0);
  end;

  //保存到桌面
  if DesktopLnk<>'' then begin
    AReg := TRegIniFile.Create('Software\MicroSoft\Windows\CurrentVersion\Explorer');
    AStr := AReg.ReadString('Shell Folders', 'Desktop', '');
    AReg.Free;
    AReg:= nil;
    //保存
    AStr := AStr + PathDelim + DesktopLnk + '.lnk';
    PersiFile.Save(POleStr(AStr), False);
  end;
  //保存到开始菜单
  if MenuName<>'' then begin
    AReg := TRegIniFile.Create('Software\MicroSoft\Windows\CurrentVersion\Explorer');
    AStr := AReg.ReadString('Shell Folders', 'Start Menu', '');
    AReg.Free;
    AReg:= nil;
    //保存
    AStr := AStr + PathDelim + MenuName + '.lnk';
    PersiFile.Save(POleStr(AStr), False);
  end;
end;

“”
// 通过调用上面 创建桌面快捷方式函数,生成桌面快捷方式,同时绘制数字小图标后保存 ico ,可实现类似 360 效果的桌面数字提示
procedure TForm1.Button1Click(Sender: TObject);
var
  AIco, Remark: String;
begin
  Remark:= 'www.delphifmx.com '#13#10'  作者: 大悟还俗';
  AIco:= ''; // 这里不断更换不同数字的图标路径
  NewLink(ParamStr(0) ,AIco ,Remark, '测试');

end;

 

来源:http://www.delphifmx.com/node/48


上一篇:delphi 安卓原生的Toast温柔提示下一篇:没有资料