Seite 1 von 1

Verknüpfung auf Desktop und im Startmenü erstellen?

Verfasst: 15.01.2005 19:40
von Andre
Hat jemand zufällig zwei fertige Prozeduren, mit denen man für sein eigenes laufendes Programm jeweils eine Verknüpfung auf dem Desktop sowie einen Eintrag im Startmenü erstellen kann ?

Der Pfad des Executables ist während der Laufzeit ja einfach zu ermitteln, mir unklar (da wohl WinAPI notwendig :wink:) ist das Erstellen der beiden Links inklusive Icon (sollte automatisch das Programmicon sein).

Hoffe es kann jemand helfen, da Suche + CodeArchiv leider erfolglos.

Verfasst: 15.01.2005 19:45
von Zaphod
ich glube da gab es etwas in der setup userlib auf purearea:
http://www.purearea.net/pb/download/use ... lib392.zip


EDIT:

shortcuts im startmenü sind das selbe wie shortcuts auf dem desktop, nur an anderer stelle.

Verfasst: 15.01.2005 20:02
von ts-soft
Hallo Andre, habe dir mal alle notwendigen Prozeduren zusammengesucht. Die zum link erstellen ist wohl von Danilo und der rest aus dem CodeArchiv. Habe ich für meine Zwecke ein bißchen geändert. Hoffe Du kommst damit klar.

Code: Alles auswählen

Structure EMID
  cb.b
  abID.b[1]
EndStructure
Structure ITEMIDLIST
  mkid.EMID
EndStructure
Procedure CreateShortcut(Path.s, Link.s, WorkingDir.s, Argument.s, ShowCommand.l, Description.s, HotKey.l, IconFile.s, IconIndex.l)
  CoInitialize_(0)
  If CoCreateInstance_(?CLSID_ShellLink,0,1,?IID_IShellLink,@psl.IShellLinkA) = 0
    Set_ShellLink_preferences:
    psl\SetPath(@Path)
    psl\SetArguments(@Argument)
    psl\SetWorkingDirectory(@WorkingDir)
    psl\SetDescription(@Description)
    psl\SetShowCmd(ShowCommand)
    psl\SetHotkey(HotKey)
    psl\SetIconLocation(@IconFile, IconIndex)
    ShellLink_SAVE:
    If psl\QueryInterface(?IID_IPersistFile,@ppf.IPersistFile) = 0
      mem.s = Space(1000)
      MultiByteToWideChar_(#CP_ACP, 0, Link, -1, mem, 1000)
      hres = ppf\Save(@mem,#True)
      Result = 1
      ppf\Release()
    EndIf
    psl\Release()
  EndIf
  CoUninitialize_()
  ProcedureReturn Result
  DataSection
  CLSID_ShellLink:
  Data.l $00021401
  Data.w $0000,$0000
  Data.b $C0,$00,$00,$00,$00,$00,$00,$46
  IID_IShellLink:
  Data.l $000214EE
  Data.w $0000,$0000
  Data.b $C0,$00,$00,$00,$00,$00,$00,$46
  IID_IPersistFile:
  Data.l $0000010B
  Data.w $0000,$0000
  Data.b $C0,$00,$00,$00,$00,$00,$00,$46
  EndDataSection
EndProcedure
Procedure.s GetAppName()
  AppName.s = Space(#MAX_PATH)
  GetModuleFileName_(GetModuleHandle_(0), @AppName, #MAX_PATH)
  ProcedureReturn AppName
EndProcedure
Procedure.s GetSpecialeFolder(folder.l)
  *itemid.ITEMIDLIST = #Null
  If SHGetSpecialFolderLocation_ (0, folder, @*itemid) = #NOERROR
    location.s = Space (#MAX_PATH)
    If SHGetPathFromIDList_ (*itemid, @location)
      If Right(location, 1) <> "\" : location + "\" : EndIf
      ProcedureReturn location
    EndIf
  EndIf
EndProcedure
#CSIDL_DESKTOP   =  0
#CSIDL_PROGRAMS  =  2
Debug GetSpecialeFolder(#CSIDL_DESKTOP)
Debug GetSpecialeFolder(#CSIDL_PROGRAMS)
Debug GetAppName()
Gruß
thomas

Verfasst: 15.01.2005 20:12
von ts-soft
Nachtrag:
Im Code von meinem TS-Shutdown haste Beispiele, dort werden während des Betriebes Desktop, Quicklaunch und Autostart einträge gesetzt und gelöscht. Natürlich micht iCONS

Verfasst: 15.01.2005 20:32
von Andre
Vielen Dank !

Ich denke, damit komme ich weiter. Insbesondere TS-ShutDown Source... :D

Verfasst: 15.01.2005 20:37
von ts-soft
Da passiert ja genau das was du willst :D

Verfasst: 03.07.2007 21:24
von marco2007
Ich habe folgenden Befehl von Droopy (der ja auch von Danilo ist - also gehe davon aus, das es das selbe ist) verwendet:

Code: Alles auswählen

CreateShortcut("C:\Windows\System32\Notepad.exe","C:\Super Notepad.lnk","","NotePAD is a lightweight editor","",#SW_SHOWMAXIMIZED,"%SystemRoot%\system32\SHELL32.dll",12)
Funkt bestens, jedoch wenn ich anstatt "%SystemRoot%\system32\SHELL32.dll" ein Icon-File nehme z.B. "Calc.ico" funkt der Code nicht! Ich verstehe auch leider nicht, was der letzte Parameter bewirken soll, da ich ja nicht weiß, warum ich eine *.dll für Iconfile.s nehmen muss.

Danke
Marco

Verfasst: 03.07.2007 21:33
von ts-soft
@marco2006
Nimm doch diese Version:
http://www.purebasic.fr/german/viewtopi ... 3825#93825
Ist dasselbe, aber die Reihenfolge der Parameter wurde so geändert, das
möglichste viele Optional sind. Dort sind Iconfile und Iconindex getrennt.