Einzelnen Beitrag anzeigen

Ajin

Registriert seit: 23. Feb 2006
Ort: Mons
252 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Startmenue Eintrag erzeugen ohne JclShell

  Alt 7. Nov 2006, 10:44
Das ist meine Vorgehensweise:

Delphi-Quellcode:
{*******************************************************************************
*  CREATE LINK                                        *
********************************************************************************}

 procedure CreateLink (Target, Args, WorkDir, ShortCutName, Icon: String; IconNo: Integer);
var
  IObj: IUnknown;
  Link: IShellLink;
  IPFile: IPersistFile;
  TargetW: WideString;
begin
  IObj := CreateComObject (CLSID_ShellLink);
  Link := IObj as IShellLink;
  IPFile := IObj as IPersistFile;

 
  with Link do
  begin
    SetPath (PChar (Target));
    SetArguments (PChar (Args));
    SetShowCmd (SW_SHOWMINIMIZED);
    SetWorkingDirectory (PChar (WorkDir));
    SetIconLocation (PChar (Icon), IconNo);
  end;

 
  TargetW := ShortCutName;
  IPFile.Save (PWChar (TargetW), False);
End;
Damit möchte ich den Link erzeugen. Funktioniert prima. Ein beispielaufruf wäre:

CreateLink('c:\test.txt', '', '', 'd:\test.lnk', 'c:\icon.ico', 0); Soweit kein Problem.

Nun der Code um den Link ins Startmenue zu bekommen:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
b:PAnsiChar;
StartmenuProgrammeOrdner: String;
begin
  b := AllocMem(MAX_PATH);
  SHGetSpecialFolderPath(Form1.Handle, b, CSIDL_PROGRAMS, True);
  StartmenuProgrammeOrdner := b;
  FreeMem(b);

  CreateLink ('C:\meinprogramm\unterordner\dwi_run.cmd', '', '', StartmenuProgrammeOrdner + '\Mein Programm 1.0\test.lnk', 'C:\test.ico', 0);

End;
Ich kann einen Link direkt im Startmenue erzeugen - sobald ich ihn aber ein einen vorhandenen Ordner einfügen will passiert nix.
  Mit Zitat antworten Zitat