ShCutF.pas
上传用户:fh681027
上传日期:2022-07-23
资源大小:1959k
文件大小:2k
源码类别:

Delphi控件源码

开发平台:

Delphi

  1. unit ShCutF;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  5.   StdCtrls;
  6. type
  7.   TForm1 = class(TForm)
  8.     Button1: TButton;
  9.     EditName: TEdit;
  10.     Label1: TLabel;
  11.     Button2: TButton;
  12.     GroupBox1: TGroupBox;
  13.     cbDir: TCheckBox;
  14.     cbDesktop: TCheckBox;
  15.     cbStartMenu: TCheckBox;
  16.     procedure Button1Click(Sender: TObject);
  17.     procedure Button2Click(Sender: TObject);
  18.   private
  19.     { Private declarations }
  20.   public
  21.     { Public declarations }
  22.   end;
  23. var
  24.   Form1: TForm1;
  25. implementation
  26. {$R *.DFM}
  27. uses
  28.   ComObj, ActiveX, ShlObj, Registry;
  29. procedure TForm1.Button1Click(Sender: TObject);
  30. var
  31.   AnObj: IUnknown;
  32.   ShLink: IShellLink;
  33.   PFile: IPersistFile;
  34.   FileName: string;
  35.   WFileName: WideString;
  36.   Reg: TRegIniFile;
  37. begin
  38.   // access to the two interfaces of the object
  39.   AnObj := CreateComObject (CLSID_ShellLink);
  40.   ShLink := AnObj as IShellLink;
  41.   PFile := AnObj as IPersistFile;
  42.   // get the name of the application file
  43.   FileName := ParamStr (0);
  44.   // set the link properties
  45.   ShLink.SetPath (PChar (FileName));
  46.   ShLink.SetWorkingDirectory (PChar (
  47.     ExtractFilePath (FileName)));
  48.   // save the file in the current dir
  49.   if cbDir.Checked then
  50.   begin
  51.     // using a WideString
  52.     WFileName := ExtractFilePath (FileName) +
  53.       EditName.Text + '.lnk';
  54.     PFile.Save (PWChar (WFileName), False);
  55.   end;
  56.   // save on the desktop
  57.   if cbDesktop.Checked then
  58.   begin
  59.     Reg := TRegIniFile.Create(
  60.       'SoftwareMicroSoftWindowsCurrentVersionExplorer');
  61.     WFileName := Reg.ReadString ('Shell Folders', 'Desktop', '') +
  62.       '' + EditName.Text + '.lnk';
  63.     Reg.Free;
  64.     PFile.Save (PWChar (WFileName), False);
  65.   end;
  66.   // save in the Start Menu
  67.   if cbStartMenu.Checked then
  68.   begin
  69.     Reg := TRegIniFile.Create(
  70.       'SoftwareMicroSoftWindowsCurrentVersionExplorer');
  71.     WFileName := Reg.ReadString ('Shell Folders', 'Start Menu', '') +
  72.       '' + EditName.Text + '.lnk';
  73.     Reg.Free;
  74.     PFile.Save (PWChar (WFileName), False);
  75.   end;
  76. end;
  77. // add a document to the Start menu documents list
  78. procedure TForm1.Button2Click(Sender: TObject);
  79. var
  80.   ProjectFile: string;
  81. begin
  82.   ProjectFile := ChangeFileExt (ParamStr (0), '.dpr');
  83.   SHAddToRecentDocs (SHARD_PATH, PChar(ProjectFile));
  84. end;
  85. end.