Marc56 a écrit :Hello,
La bibliothèque
FileSystem contient un tas de commandes utiles à la programmation système.
Je pense qu'il serait intéressant d'ajouter une commande
officielle de création de raccourci (si c'est faisable)
CreateShortcut() ?
Même si cette commande ne créé pas tous les champs possibles des fichiers .lnk, les champs
Cible: et
Démarrer dans: sont les plus utiles. C'est ce que font les outils d'automation. Certains ajoutent une variable système correspondant à "Desktop", "HomeDir" (~) ou "Start Menu"
Raison: Il existe de nombreux codes sur le forum, mais plus ou moins compatibles d'une version à l'autre de PB et rarement compatibles entre versions Windows, Linux, Mac

créer des raccourcis sous windows uniquement (j'ai ni mon mac ni mon nux sous la main pour le faire sous les autres OS) :
Code : Tout sélectionner
Procedure CreateShortcut(Path.s, LINK.s, Argument.s, DESCRIPTION.s, WorkingDirectory.s, ShowCommand.l, IconFile.s, IconIndexInFile.l)
CoInitialize_(0)
If CoCreateInstance_(?CLSID_ShellLink,0,1,?IID_IShellLink,@psl.IShellLinkW) = 0
Set_ShellLink_preferences:
psl\SetPath(Path)
psl\SetArguments(Argument)
psl\SetWorkingDirectory(WorkingDirectory)
psl\SetDescription(DESCRIPTION)
psl\SetShowCmd(ShowCommand)
psl\SetHotkey(HotKey)
psl\SetIconLocation(IconFile, IconIndexInFile)
ShellLink_SAVE:
If psl\QueryInterface(?IID_IPersistFile,@ppf.IPersistFile) = 0
mem.s = Space(1000)
PokeS(@mem, LINK, -1, #PB_Unicode)
hres = ppf\Save(mem,#True)
result = 1
ppf\Release()
EndIf
psl\Release()
EndIf
CoUninitialize_()
ProcedureReturn result
DataSection
CLSID_ShellLink:
; 00021401-0000-0000-C000-000000000046
Data.l $00021401
Data.w $0000,$0000
Data.b $C0,$00,$00,$00,$00,$00,$00,$46
IID_IPersistFile:
; 0000010b-0000-0000-C000-000000000046
Data.l $0000010B
Data.w $0000,$0000
Data.b $C0,$00,$00,$00,$00,$00,$00,$46
IID_IShellLink: ; {000214F9-0000-0000-C000-000000000046}
Data.l $000214F9
Data.w $0000, $0000
Data.b $C0, $00, $00, $00, $00, $00, $00, $46
EndDataSection
EndProcedure
CreateShortcut("C:\Windows\System32\Notepad.exe","C:\Users\Poshu\Desktop\Super Notepad.lnk","","NotePAD is a lightweight editor","",#SW_SHOWMAXIMIZED,"%SystemRoot%\system32\SHELL32.dll",12)
Attention aux droits d'écriture, certains dossiers spéciaux demandent des droits spéciaux.