AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Startmenue Eintrag erzeugen ohne JclShell
Thema durchsuchen
Ansicht
Themen-Optionen

Startmenue Eintrag erzeugen ohne JclShell

Ein Thema von Ajin · begonnen am 7. Nov 2006 · letzter Beitrag vom 7. Nov 2006
Antwort Antwort
Ajin

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

Startmenue Eintrag erzeugen ohne JclShell

  Alt 7. Nov 2006, 08:26
Guten Morgen Jungs und Mädels!

Ich hab ein Installationsprogramm geschrieben und möchte nun einträge ins Startmenue schreiben.
Meine Suche ergab interessante Treffer. Da gibts ein JEDI .pas file genannt JclShell.pas. Auch der Delphi Easy helper verweist auf diese Quelle. Ich hab dieses file bezogen, konnte es jedoch nicht im aktuellen Projekt einbinden - jcl.inc nicht gefunden.

Also wollte ich mir das jcl package besorgen und installieren. Installiert wird das ganze angeblich mit einer Install.bat welche sich bei mir überhaupt nicht rührt... kurzum ich kann die jcl Geschichten nicht einsetzen

Den "Programme" Ordner kann ich bestimmen, ebenso funktioniert eine "CreateLink" Funktion, aber mit beidem schaffe ich es nicht einen simplen Eintrag unter "Programme\meinprogramm\irgendwas.lnk" zu erstellen.

Nun die Frage: brauch ich zwingend dieses jcl Paket um einen Startmenueintrag vorzunehmen oder geht das auch mit Turbodelphi 2006 hausmitteln?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Startmenue Eintrag erzeugen ohne JclShell

  Alt 7. Nov 2006, 08:31
Logisch geht das auch ohne die Jedis. Die Jedis machen auch nichts anderes, als API-Funktionen zu kapseln. Du suchst dir das Verzeichnis und erzeugst darin eine Verknüpfung. Wo hast du jetzt das Problem, wenn du weißt, wie man beides einzeln macht?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
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, 09: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
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Startmenue Eintrag erzeugen ohne JclShell

  Alt 7. Nov 2006, 10:18
Steht den in b was sinnvolles drin? Und existiert der Ordner Mein Programm 1.0?

Ansonsten: http://www.michael-puff.de/dirindex....phi/Programme/ -> LinkMaker1_1.zip
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Ajin

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

Re: Startmenue Eintrag erzeugen ohne JclShell

  Alt 7. Nov 2006, 10:38
in b steht der Pfad zum Programme Ordner: C:\Dokumente udn Einstellungen\<Rechnername>\Startmenü\Programme

Der Ordner "Mein Programm 1.0" existiert. Allerdings nicht im Ordner

<Rechnername>\Startmenü\Programme sondern in

<All Users>\Startmenü\Programme.

Ich hab dein Zip mal runtergeladen und schau mal rein Vielen Dank schon mal.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Startmenue Eintrag erzeugen ohne JclShell

  Alt 7. Nov 2006, 10:50
Zitat von Ajin:
Der Ordner "Mein Programm 1.0" existiert. Allerdings nicht im Ordner

<Rechnername>\Startmenü\Programme sondern in

<All Users>\Startmenü\Programme.
Also existiert er doch nicht, da wo der Link erzeugt werden soll. Wie willst du eine Datei in einem Ordner erzeugen, der gar nicht existiert?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Ajin

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

Re: Startmenue Eintrag erzeugen ohne JclShell

  Alt 7. Nov 2006, 11:09
Ich hab das nochmal geprüft.

Mein Installationsprogramm ist ein "addon" für ein bereits installiertes Tool: Hello World. Das Setup von Hello World fügt einen den Startmenü Eintrag im Ordner <All Users> hinzu. (d.h. <All Users>\Startmenü\Hello World\start.lnk)

SHGetSpecialFolderPath(Form1.Handle, b, CSIDL_PROGRAMS, True); liefert mir das Startmenü im Ordner <Rechnername>. D.h. mein Programm muss im Ordner <Rechnername> nochmal den Ordner "Hello World" anlegen und darin dann den zusätzlichen Link. Ist zwar doppelt gemoppelt aber müsste so gehen.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:25 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz