AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Verknüpfung und Starteintrag erstellen

Ein Thema von ferby · begonnen am 11. Okt 2005 · letzter Beitrag vom 15. Okt 2005
Antwort Antwort
Seite 1 von 2  1 2      
ferby

Registriert seit: 15. Aug 2004
Ort: Wien
841 Beiträge
 
Delphi 2010 Enterprise
 
#1

Verknüpfung und Starteintrag erstellen

  Alt 11. Okt 2005, 19:17
Hallo,

Ich programmiere gerade eine Art Installationsprogramm für ein Spiel, dazu habe ich eine Frage:
Wie kann ich eine Verknüpfung und einen Starteintrag erstellen. Bitte nicht auf die Suche mit Verknüpfung Desktop verweißen, da hab ich schon gesucht und nichts gefunden.


MfG,
Ferby
  Mit Zitat antworten Zitat
Benutzerbild von LoRd-MuldeR
LoRd-MuldeR

Registriert seit: 9. Okt 2005
Ort: Somewhere over the Slaughterhouse
132 Beiträge
 
Delphi 7 Professional
 
#2

Re: Verknüpfung und Starteintrag erstellen

  Alt 11. Okt 2005, 19:25
Wie man Verknüpfungen mit Delphi erstellt, kann ich dir leider nich erklären.
Ein Beispiel Programm würde mich da auch interessieren.

Aber: Hast du mal drüber nachgedacht dein Installationsprogramm einfach mit NSIS anstatt mit Delphi zu erstellen? Spart sicher ne Menge Arbeit und lässt dir trotzdem alle Freiheiten.
  Mit Zitat antworten Zitat
ferby

Registriert seit: 15. Aug 2004
Ort: Wien
841 Beiträge
 
Delphi 2010 Enterprise
 
#3

Re: Verknüpfung und Starteintrag erstellen

  Alt 11. Okt 2005, 20:03
Hallo,

ich möchte es aber mit Delphi erstellen, das es nur teilweiße ein Installationsprogramm ist.


mfg,
Ferby
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Verknüpfung und Starteintrag erstellen

  Alt 11. Okt 2005, 20:06
Zitat von ferby:
Bitte nicht auf die Suche mit Verknüpfung Desktop verweißen, da hab ich schon gesucht und nichts gefunden.
Hier im Forum suchenVerknüpfung desktop ==> http://www.delphipraxis.net/internal...Cpfung+desktop


Ich glaube nicht, dass du ernsthaft gesucht hast.


Nachtrag: Hier im Forum suchenstartmenü eintrag erstellen ==> http://www.delphipraxis.net/internal...ct.php?t=41054
  Mit Zitat antworten Zitat
Benutzerbild von LoRd-MuldeR
LoRd-MuldeR

Registriert seit: 9. Okt 2005
Ort: Somewhere over the Slaughterhouse
132 Beiträge
 
Delphi 7 Professional
 
#5

Re: Verknüpfung und Starteintrag erstellen

  Alt 11. Okt 2005, 21:47
Hab jetzt mal schnell diese Unit zusammengeschustert:

Delphi-Quellcode:
unit MuldeR_Shortcut;

interface

uses
  SysUtils, Windows, ShlObj, ActiveX;

type
  TShowMode = (smNormal, smMaximized, smMinimized);

procedure CreateShortcut(ShortcutFile:String; TargetFile:String; IconFile:String;
  IconIndex:Integer; WorkingDirectory:String; ShowMode:TShowMode; Description:String);

implementation

procedure CreateShortcut(ShortcutFile:String; TargetFile:String; IconFile:String;
  IconIndex:Integer; WorkingDirectory:String; ShowMode:TShowMode; Description:String);
var
  sl:IShellLink;
  pf:IPersistFile;
  Show:Integer;
  Success:Boolean;
  Error:Boolean;
begin
  Success := False;

  case ShowMode of
    smMaximized: Show := SW_SHOWMAXIMIZED;
    smMinimized: Show := SW_SHOWMINNOACTIVE;
  else
    Show := SW_SHOWNORMAL;
  end;

  CoInitialize(nil);

  try
    if CoCreateInstance(CLSID_ShellLink, nil, CLSCTX_INPROC_SERVER, IShellLink, sl) = S_OK then
    begin
      Error := False;

      if sl.SetPath(PAnsiChar(TargetFile)) <> S_OK then Error := True;
      if sl.SetIconLocation(PAnsiChar(IconFile), IconIndex) <> S_OK then Error := True;
      if sl.SetWorkingDirectory(PAnsiChar(WorkingDirectory)) <> S_OK then Error := True;
      if sl.SetShowCmd(Show) <> S_OK then Error := True;
      if sl.SetDescription(PAnsiChar(Description)) <> S_OK then Error := True;

      if not Error then
        if sl.QueryInterface(IPersistFile, pf) = S_OK then
          if pf.Save(StringToOleStr(ShortcutFile), True) = S_OK then
            Success := True;
    end;
  finally
    CoUninitialize;
  end;

  if not Success then raise Exception.Create('Faild to create shortcut.');
end;

end.
  Mit Zitat antworten Zitat
ferby

Registriert seit: 15. Aug 2004
Ort: Wien
841 Beiträge
 
Delphi 2010 Enterprise
 
#6

Re: Verknüpfung und Starteintrag erstellen

  Alt 12. Okt 2005, 15:55
Hallo,

kannst du den Quellcode auch noch ein wenig erklären?
Ich würde gerne so halb wegs verstehen was in welcher Zeile passiert.

Danke,
Ferby
  Mit Zitat antworten Zitat
Benutzerbild von LoRd-MuldeR
LoRd-MuldeR

Registriert seit: 9. Okt 2005
Ort: Somewhere over the Slaughterhouse
132 Beiträge
 
Delphi 7 Professional
 
#7

Re: Verknüpfung und Starteintrag erstellen

  Alt 12. Okt 2005, 17:14
Na klaro!

Mit CoIntialize() musst du zunächst mal COM initializieren.
Am Ende das CoUninitialize() nich vergessen!

Mit dem CoCreateInstance(CLSID_ShellLink, nil, CLSCTX_INPROC_SERVER, IShellLink, sl) erstellst du den ShellLink, also die Verknüpfung. sl is ne Variable vom Typ IShellLink, das is das Interface zu deiner neuen Verknüpfung. Diesen benutzt du dazu, um bei dem Link alles einzustellen. Mit IShellLink.SetPath() legst du die Ziel-Datei fest, mit .SetDescription die Beschreibung und so weiter... Anschließend muss die Verknüpfung noch gespeichert werden. Dazu holst du dir über QueryInterface(IPersistFile, pf) ein IPersistFile interface zu deiner Verknüpfung. Jetzt nur noch mit .Save als ".lnk" Datei speichern. Finito!

BTW: IShellLink und IPersistFile muss *nicht* zerstört werden!
  Mit Zitat antworten Zitat
ferby

Registriert seit: 15. Aug 2004
Ort: Wien
841 Beiträge
 
Delphi 2010 Enterprise
 
#8

Re: Verknüpfung und Starteintrag erstellen

  Alt 12. Okt 2005, 19:03
Hallo,

Danke für die Antwort

also ich habe geschaft Verknüpfungen zu erstellen, jetzt will ich noch einen Starteintrag erstellen und zwar das meine Spiele unter:

Start --> Programme --> Ferby --> div. Spiele

steht, wie mach ich das???

Ferby
  Mit Zitat antworten Zitat
Benutzerbild von LoRd-MuldeR
LoRd-MuldeR

Registriert seit: 9. Okt 2005
Ort: Somewhere over the Slaughterhouse
132 Beiträge
 
Delphi 7 Professional
 
#9

Re: Verknüpfung und Starteintrag erstellen

  Alt 13. Okt 2005, 02:14
Du musst dir das passende Verzeichniss vom System holen.

Versuchs mal mit der "SHGetSpecialFolderPath()" funktion. Du musst dazu allerdings "ShlObj" bei deinen uses einfügen!

zu SHGetSpecialFolderPath():
1) HWND setzt du auf "Form1.Handle"
2) lpszPath setzt du auf ne Variable vom Typ PAnsiChar
3) nFolder gibt den Ordner an, denn du haben möchtest (Der Ordner "Programme" im Startmenu wird mit CSIDL_PROGARMS angewählt. Es gibt aber noch vieeeele anderer interessante CSIDLs)

Delphi-Quellcode:
var
  b:PAnsiChar;
  StartmenuProgrammeOrdner:String;
  LinkDatei:String;

begin
  b := allocMem(MAX_PATH);
  SHGetSpecialFolderPath(Form1.Handle, b, CSIDL_PROGRAMS, True);
  StartmenuProgrammeOrdner := b;
  FreeMem(b);

  ShowMessage('So, der Startmenu "Programme" Ordner lautet also:' + #10 +
    StartmenuProgrammeOrdner);

  LinkDatei := StartmenuProgrammeOrdner + '\Ferby\Spiele\Plopp.lnk';
  
  //Jetzt die Verknüpfung erstellen
  Mit Zitat antworten Zitat
ferby

Registriert seit: 15. Aug 2004
Ort: Wien
841 Beiträge
 
Delphi 2010 Enterprise
 
#10

Re: Verknüpfung und Starteintrag erstellen

  Alt 13. Okt 2005, 19:06
Hallo,

danke an alle die mir geholfen haben,
ich habe meinen Installationsprogramm fertig,
ihr könnt es mal ausprobieren und mir schreiben ob alles klappt oder auch nicht.

ferbx
Angehängte Dateien
Dateityp: exe install_ferby-fall_825.exe (386,0 KB, 11x aufgerufen)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 15:29 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