[RESOLU] Créer un raccourci sur le bureau

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
omega
Messages : 626
Inscription : sam. 26/nov./2011 13:04
Localisation : Alger

[RESOLU] Créer un raccourci sur le bureau

Message par omega »

Bonsoir à tous,

Avant de passer à la version Pb 5.62, j'utilisais très souvent PureFile_CreateLink pour créer un raccourci de mon programme par le biais d'un code d'installation (SETUP.EXE). C'est à dire, au niveau du code de la setup, je crée le raccourci. Tout marchait si bien. Depuis que j'utilise Pb 5.62, la création du raccourci ne marche plus. Est-ce à cause de PureFile qui est absolète? (A Noter que j'utilisais PureFile 4.30, je suppose que ça ne marche que sous Pb 4.30), j'ai cherché sur le forum une version supérieure mais je n'ai rien trouvé même l'ancienne version est absente. Sinon, y a t - il peut être un autre moyen de créer un raccourci d'un exécutable sur le bureau?
Voici un aperçu du code de PureFile qui permet de créer le raccourci

Code : Tout sélectionner

;Ajouter le raccourci dans le menu DEMARRER...
PathStart$ = GetSystemFolder (#CSIDL_STARTMENU) + "\Programmes\" + ProgName$ + ".lnk"
LinkFileName.s = PathStart$
FileLinkedTo.s =PathExe$
Arguments.s = ""
WorkingDirectory.s=PathInstal$
Description.s = ProgDesc$
ShowCommand.l = #SW_SHOWNORMAL
IconFile.s = FileLinkedTo
IconIndexInFile.l = 0
PureFILE_CreateLink(LinkFileName, FileLinkedTo, Arguments, Description, WorkingDirectory, ShowCommand, HotKey, IconFile, IconIndexInFile)

;Ajouter le raccourci sur le BUREAU...
PathStart$=GetSystemFolder (#CSIDL_DESKTOPDIRECTORY) + "\" + ProgName$ + ".lnk"
PathOnly$=GetPathPart(PathExe$)
LinkFileName.s = PathStart$
FileLinkedTo.s =PathExe$
Arguments.s = ""
WorkingDirectory.s=PathInstal$
Description.s = ProgDesc$
ShowCommand.l = #SW_SHOWNORMAL
IconFile.s = FileLinkedTo
IconIndexInFile.l = 0
PureFILE_CreateLink(LinkFileName, FileLinkedTo, Arguments, Description, WorkingDirectory, ShowCommand, HotKey, IconFile, IconIndexInFile)


Merci
Dernière modification par omega le jeu. 19/juil./2018 14:17, modifié 3 fois.
Win7 (x64) 64 bits Pb 5.72
Avatar de l’utilisateur
Ar-S
Messages : 9478
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Créer un raccourci sur le bureau

Message par Ar-S »

edit
mauvais lien

Sinon on peut pas tester si tu ne file pas le source.. il manque des fonctions dans ce que tu nous montres.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Créer un raccourci sur le bureau

Message par falsam »

Exemple testé avec PB 5.62. Commentaire dans le source.

Code : Tout sélectionner

EnableExplicit

Declare createShellLink(Application.s, LinkFileName.s, arg.s, desc.s, dir.s, icon.s, index)

Global Application.s, LinkFileName.s, LinkName.s, WorkDirectory.s

;Nom de l'executable : Exemple Demo.exe
Application = "D:\Purebasic Project\test\demo.exe"

WorkDirectory = GetPathPart(Application)

;Nom du raccourci à afficher sur le bureau
LinkFileName = GetHomeDirectory() + "desktop\" + "demo.lnk"

;Titre du raccourci 
LinkName = "Demo test"

;Création du raccourci sur le bureau
If createShellLink(Application, LinkFileName, "", LinkName, WorkDirectory, Application, 0) = 0
  MessageRequester("Information", "Le raccourci est crée sur le bureau", #PB_MessageRequester_Ok)
EndIf

;By Rashad (Forum anglophone)
Procedure createShellLink(Application.s, LinkFileName.s, arg.s, desc.s, dir.s, icon.s, index)
  ;Application - path to the exe that is linked to, lnk - link name, dir - working
  ;directory, icon - path to the icon file, index - icon index in iconfile
  Protected hRes.l, mem.s, ppf.IPersistFile
  CompilerIf #PB_Compiler_Unicode
    Protected psl.IShellLinkW
  CompilerElse
    Protected psl.IShellLinkA
  CompilerEndIf
  
  ;make shure COM is active
  CoInitialize_(0)
  hRes = CoCreateInstance_(?CLSID_ShellLink, 0, 1, ?IID_IShellLink, @psl)
  
  If hRes = 0
    psl\SetPath(Application)
    psl\SetArguments(arg)
    psl\SetDescription(desc)
    psl\SetWorkingDirectory(dir)
    psl\SetIconLocation(icon, index)
    
    ;query IShellLink for the IPersistFile interface for saving the
    ;link in persistent storage
    hRes = psl\QueryInterface(?IID_IPersistFile, @ppf)
    
    If hRes = 0
      ;CompilerIf #PB_Compiler_Unicode
      ;save the link
      hRes = ppf\Save(LinkFileName, #True)
      ppf\Release()
    EndIf
    psl\Release()
  EndIf
  
  ;shut down COM
  CoUninitialize_()
  
  DataSection
    CLSID_ShellLink:
    Data.l $00021401
    Data.w $0000,$0000
    Data.b $C0,$00,$00,$00,$00,$00,$00,$46
    IID_IShellLink:
    CompilerIf #PB_Compiler_Unicode
      Data.l $000214F9
    CompilerElse
      Data.l $000214EE
    CompilerEndIf
    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
  ProcedureReturn hRes
EndProcedure
Dernière modification par falsam le jeu. 19/juil./2018 9:38, modifié 1 fois.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
omega
Messages : 626
Inscription : sam. 26/nov./2011 13:04
Localisation : Alger

Re: Créer un raccourci sur le bureau

Message par omega »

Bonjour les pubistes et merci beaucoup pour vos réponses

@Ar-s
Je n'ai pas jugé nécessaire de fournir l'ensemble du code car il est volumineux et ensuite le problème résidait au niveau de la procédure que j'ai postée et qui consiste à créer un raccourci (la fonction CreateLink est prise en charge par PureFile 4.30 qui est déjà installé au niveau du dossier /Purebasic). J'ai extrait l'essentiel des variables du programme principal pour que tu puisses te retrouver sur leur signification mais n'essayes pas de tester le code car il n'est pas complet...

Code : Tout sélectionner

#CSIDL_PROGRAMS = $2 
#CSIDL_DESKTOPDIRECTORY = $10 
#CSIDL_PROGRAM_FILES = $26 
#CSIDL_SYSTEMX86 = $29 
 
Structure EMID 
    cb.b 
    abID.b[1] 
EndStructure 

;--------------------------------- PARAMETRES DU PROGRAMME A INSTALLER ------------------------------------------------
Global i,chemin$,PathInstal$,PathExe$,ProgName$,winTitre$,ProgDesc$,PathStart$,wmax,fileSys$,InstalDes$,wdos$

ProgName$="Pxmain"
ProgDesc$="Logiciel de gestion maintenance"
winTitre$="Installation du logiciel Pxmain - Gestion maintenance V.1 (2016)" 
fileSys$="wsysmn.ini" 
InstalDes$="INSTALLATION DU LOGICIEL Pxmain - Gestion maintenance V.1 (2016)" 

;--------------------------------------------------------------------------------------------------------------------------------
Procedure.s GetSystemFolder (folder) 
    *itemid.ITEMIDLIST = #Null 
    If SHGetSpecialFolderLocation_ (0, folder, @*itemid) = #NOERROR 
        location$ = Space (#MAX_PATH) 
        If SHGetPathFromIDList_ (*itemid, @location$) 
            ProcedureReturn location$ 
        EndIf 
    EndIf 
EndProcedure 

;-----------------------------------------------------------------------------
Procedure CreateIcone()
PathExe$=PathInstal$ + "\" + ProgName$ + ".exe"  

;Récupérer le chemin du menu demarrer + ajouter  le raccourci
PathStart$ = GetSystemFolder (#CSIDL_STARTMENU) + "\Programmes\" + ProgName$ + ".lnk"
LinkFileName.s = PathStart$
FileLinkedTo.s =PathExe$
Arguments.s = ""
WorkingDirectory.s=PathInstal$
Description.s = ProgDesc$
ShowCommand.l = #SW_SHOWNORMAL
IconFile.s = FileLinkedTo
IconIndexInFile.l = 0
PureFILE_CreateLink(LinkFileName, FileLinkedTo, Arguments, Description, WorkingDirectory, ShowCommand, HotKey, IconFile, IconIndexInFile)

;Récupérer le chemin du bureau + ajouter le raccourci
PathStart$=GetSystemFolder (#CSIDL_DESKTOPDIRECTORY) + "\" + ProgName$ + ".lnk"
PathOnly$=GetPathPart(PathExe$)
LinkFileName.s = PathStart$
FileLinkedTo.s =PathExe$
Arguments.s = ""
WorkingDirectory.s=PathInstal$
Description.s = ProgDesc$
ShowCommand.l = #SW_SHOWNORMAL
IconFile.s = FileLinkedTo
IconIndexInFile.l = 0
PureFILE_CreateLink(LinkFileName, FileLinkedTo, Arguments, Description, WorkingDirectory, ShowCommand, HotKey, IconFile, IconIndexInFile)

EndProcedure

PFilePath$ = GetSystemFolder (#CSIDL_PROGRAM_FILES) 
PathInstal$= PFilePath$ + "\" + ProgName$

CreateIcone()


@Falsam
Comme toujours, Je te remercie pour le partage car ton code marche très très bien. C'est en effet une solution qui va remplacer celle que j'utilisais auparavant.

Merci Falsam et bonne continuation
Win7 (x64) 64 bits Pb 5.72
Marc56
Messages : 2148
Inscription : sam. 08/févr./2014 15:19

Re: [RESOLU] Créer un raccourci sur le bureau

Message par Marc56 »

Depuis Windows Vista, il existe une commande MKLINK qui permet de créer des raccourcis en ligne de commande
(Commande interne au shell, donc appel par cmd /c)

Forme de base: mklink nom_icone nom_programme

Code : Tout sélectionner

; Créer un raccourci sur le bureau avec MKLINK (Commande interne Windows Vista et +)
; 23/06/18 - Marc56
; 
; Syntaxe complete: mklink /?
; Create a symbolic link, hard Or soft link.

Program_Title$ = "PureBasic Beta"
Program_EXE$   = "C:\Program Files\PureBasicBeta\PureBasic.exe"

SetCurrentDirectory(GetUserDirectory(#PB_Directory_Desktop))

RunProgram("cmd", "/c mklink "      + 
                  #DQUOTE$          + 
                  Program_Title$    + 
                  #DQUOTE$          + 
                  " "               + 
                  #DQUOTE$          + 
                  Program_EXE$      + 
                  #DQUOTE$, 
           "")
Ici utilisation de quelques #DQUOTE$ si le titre de l'icône et/ou le chemin contient des espaces.

:wink:
Marc56
Messages : 2148
Inscription : sam. 08/févr./2014 15:19

Re: [RESOLU] Créer un raccourci sur le bureau

Message par Marc56 »

L'utilisation d'API directe (commandes suffixées _), ça fait "élite pro", mais pas forcément... les API ça bouge et il en existe plusieurs pour faire la même chose et pas toujours compatible d'une version à l'autre.

Ex: SHGetSpecialFolderLocation_
[SHGetSpecialFolderLocation is not supported and may be altered or unavailable in the future. Instead, use SHGetFolderLocation.]

Donc on ne les utilisent que si on ne peut pas faire autrement ou si ça va réellement plus vite.

Mieux vaut utiliser ce qui existe déjà dans PB et qui suivra les évolutions :wink:
Depuis PB 5.60 (ou 5.50?) GetUserDirectory() fournit une tartine de variables en plus compatibles 3 os.

Code : Tout sélectionner

GetUserDirectory(Type)
  #PB_Directory_Desktop    : Répertoire 'Bureau' de l'utilisateur connecté
  #PB_Directory_Downloads  : Répertoire 'Téléchargements' de l'utilisateur connecté
  #PB_Directory_Documents  : Répertoire 'Documents' de l'utilisateur connecté
  #PB_Directory_Pictures   : Répertoire 'Images' de l'utilisateur connecté
  #PB_Directory_Musics     : Répertoire 'Musiques' de l'utilisateur connecté  
  #PB_Directory_Videos     : Répertoire 'Videos' de l'utilisateur connecté
  #PB_Directory_Public     : Répertoire 'Documents Publics' de l'utilisateur connecté
  #PB_Directory_ProgramData: Répertoire des données stokées par les programmes de l'utilisateur connecté
                             Sous Linux et OSX, c'est le dossier 'home' suivi de '/.' pour pouvoir créer 
                             un répertoire de configuration caché par l'utilisateur connecté
  #PB_Directory_AllUserData: Répertoire de données des programmes communs (accessible à tous les utilisateurs)
  #PB_Directory_Programs   : Répertoire  des fichiers de programme globaux (lecture seule)
et aussi GetEnvironmentVariable() pour lequel on peut appeler path et le splitter avec StringFiled()

Pour connaitre toutes les variables d'env utilisateur, il suffit de taper SET dans une fenêtre "dos"

Thinks simple, think (pure)basic

:wink:
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: [RESOLU] Créer un raccourci sur le bureau

Message par Kwai chang caine »

@Marc56
Merci je ne connaissais pas cette combine 8)
Marc56 a écrit :Commande interne au shell, donc appel par cmd /c)
Ca veut dire quoi ça ? 8O
Aucun rapport avec le powershell ?
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Marc56
Messages : 2148
Inscription : sam. 08/févr./2014 15:19

Re: [RESOLU] Créer un raccourci sur le bureau

Message par Marc56 »

Le "shell" est l'interpréteur de commande
Sous DOS, Windows 3.x, 9.x c'était command.com
Sous NT c'est CMD.EXE
mais il y en a d'autres 4DOS, Ndos, TCC

Le "shell" contient des commandes internes (dir, rd, md, del... et maintenant mklink)
il n'existe pas de "dir.exe", "rd.exe" etc
Les commandes internes ne peuvent donc pas êtres appelées directement par un RunProgram, il faut appeler le shell, puis lui dire de d'appeler une commande.

cmd /c dir

/c, la commande s'éxécutre puis, la fenêtre "dos" se ferme
/k elle reste ouverte après.

Donc pour faire un "dir" sous PB il faut faire

Code : Tout sélectionner

RunProgram("cmd", "/c dir", "")
Unix/Linux n'est pas pareil, la plupart des commandes usuelles sont des programmes à part entière (ls, ln, rmdir, mkdir etc), on peut donc les appeler directement

:mrgreen: Oui, aucun rapport avec le "bidule" powershell
Heureusement que MS a enfin eut une bonne idée avec le WSL
:wink:
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: [RESOLU] Créer un raccourci sur le bureau

Message par Kwai chang caine »

Merci beaucoup de cette explication, je comprend le commutateur /C maintenant 8)
Pour le reste je connaissais, car je suis un dinosaure, et j'ai commencé à tripoter mon premier PC avec un portable 286 epson...W3.1 ça fait rêver :lol:
A l'époque on avait encore un vrai DOS en sous système 8)
Oui pour le powershell j'ai cru comprendre que c'était une nouvelle mouture du DOS, plus puissante, plus pratique, plus moderne, "pluceMieuBien" quoi 8)
Je redoute le moment ou ils supprimeront le pseudo DOS pour qu'il n'y ai plus que le PowerShell :|
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Marc56
Messages : 2148
Inscription : sam. 08/févr./2014 15:19

Re: [RESOLU] Créer un raccourci sur le bureau

Message par Marc56 »

Dinosaure aussi, j'ai commencé ma vie "PC" avec Ms-Dos / Dr-Dos puis Windows 2 (qui s’appelait Windows 286 puis Windows 386 et pouvait même être utilisé en runtime avec une disquette 5"1/4 1.2Mo) puis Windows 3.0, 3.1 etc.

Powershell ne remplacera pas cmd, il voudrait, mais c'est imbuvable pour les trucs rapides. C'est du pure POO (ça fait plaisir à certains, mais même pas sur).
À noter que c'est ce qui fonctionne en sous-main pour faire tourner une partie des accessoires windows (avec une gui par dessus)

C'est plutôt le shell Linux (Bash) qui a de l'avenir sous Windows grâce au WSL (sous système linux).
Ex: Lancer notepad depuis linux:

Code : Tout sélectionner

~ $ /mnt/c/Windows/notepad.exe &
C'est fun et bien mieux que les portages de bash ou cygwin.
Et depuis la mise à jour 1803 de Windows 10, on peut enfin lancer des daemons linux (= services) dans le WSL et ils ne s'arrêtent pas à la fermeture du shell. (équivalent donc du NOHUP linux)

Windows va-t-il être le fédérateur des (300) distris Linux :?: :mrgreen:
Le noyau Linux est meilleur, les outils shell aussi mais la GUI Windows est bien plus élaborée que tous les gestionnaires Linux

:wink:
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: [RESOLU] Créer un raccourci sur le bureau

Message par Kwai chang caine »

Du LINUX dans Windows !!! alors ça non plus je savais pas 8O
Bon bah, tu me rassure pour la fin du pseudo dos, car si en plus powershell est POO...Kaï kaï kaï, :| ou plutôt Kwaï Kwaï Kwaï serait plus approprié :mrgreen:
Et ben, encore merci de tout ces "explicages" forts intéressants 8)
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
Micoute
Messages : 2522
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: [RESOLU] Créer un raccourci sur le bureau

Message par Micoute »

C'est un peu fade, tu peux me passer le SHELL ?
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: [RESOLU] Créer un raccourci sur le bureau

Message par Ollivier »

(Petite parenthèse)
Le "shell" contient des commandes internes (dir, rd, md, del...et maintenant mklink)
il n'existe pas de "dir.exe", "rd.exe" etc
A noter que dans les 1ères versions, il y a bien longtemps, ces commandes, guidées par un répertoire de commande spécifié à l'amorçage existait en tant que programme à part entière. On pouvait trouver ce répertoire et y figuraient une liste comme ceci :

Code : Tout sélectionner

.         [DIR]
..        [DIR]
DIR      COM
COPY     COM
CHDIR    COM
RMDIR    COM
MKDIR    COM
... Et autres commandes...

(Fin de parenthèse)
Avatar de l’utilisateur
omega
Messages : 626
Inscription : sam. 26/nov./2011 13:04
Localisation : Alger

Créer un raccourci sur le bureau

Message par omega »

@FALSAM
Je croyais que ce problème était réglé, car j'ai testé ton code et quand j'ai vu le raccourci affiché sur le bureau je pensais que c'était bon car ce n'est que ce jour que j'ai remarqué quelque chose qui ne va pas:
Quand on clique sur le raccourci, normalement, c'est le programme cible qui devait s'exécuter, alors qu'ici, c'est le raccourci lui même qui s'exécute (comme si c'était une application). Anormal n'est ce pas??
Merci
Win7 (x64) 64 bits Pb 5.72
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Créer un raccourci sur le bureau

Message par falsam »

omega a écrit :Quand on clique sur le raccourci, normalement, c'est le programme cible qui devait s'exécuter, alors qu'ici, c'est le raccourci lui même qui s'exécute (comme si c'était une application). Anormal n'est ce pas??
Je ne comprends pas de quoi tu parles.

Si je crée un raccourci d'une application c'est bien l'application qui est lancé.

Avec cette exemple que d'autres utilisateurs pourront tester, je crée sur le bureau un raccourci de l'application PureBasic.

■ Comment je procéde ?

Code : Tout sélectionner

;Nom de l'executable : Exemple Demo.exe
Application = #PB_Compiler_Home + "/PureBasic.exe"

;Nom du raccourci à afficher sur le bureau
LinkFileName = GetHomeDirectory() + "desktop\" + "PureBasic.lnk"

;Titre du raccourci 
LinkName = "Pure Basic IDE"
■ Le code complet que tu peux tester

Code : Tout sélectionner

EnableExplicit

Declare createShellLink(Application.s, LinkFileName.s, arg.s, desc.s, dir.s, icon.s, index)

Global Application.s, LinkFileName.s, LinkName.s

;Nom de l'executable : Exemple Demo.exe
Application = #PB_Compiler_Home + "/PureBasic.exe"

;Nom du raccourci à afficher sur le bureau
LinkFileName = GetHomeDirectory() + "desktop\" + "PureBasic.lnk"

;Titre du raccourci 
LinkName = "Pure Basic IDE"

;Création du raccourci sur le bureau
If createShellLink(Application, LinkFileName, "", LinkName, "", Application, 0) = 0
  MessageRequester("Information", "Le raccourci est crée sur le bureau", #PB_MessageRequester_Ok)
EndIf

;By Rashad (Forum anglophone)
Procedure createShellLink(Application.s, LinkFileName.s, arg.s, desc.s, dir.s, icon.s, index)
  ;Application - path to the exe that is linked to, lnk - link name, dir - working
  ;directory, icon - path to the icon file, index - icon index in iconfile
  Protected hRes.l, mem.s, ppf.IPersistFile
  CompilerIf #PB_Compiler_Unicode
    Protected psl.IShellLinkW
  CompilerElse
    Protected psl.IShellLinkA
  CompilerEndIf
  
  ;make shure COM is active
  CoInitialize_(0)
  hRes = CoCreateInstance_(?CLSID_ShellLink, 0, 1, ?IID_IShellLink, @psl)
  
  If hRes = 0
    psl\SetPath(Application)
    psl\SetArguments(arg)
    psl\SetDescription(desc)
    psl\SetWorkingDirectory(dir)
    psl\SetIconLocation(icon, index)
    
    ;query IShellLink for the IPersistFile interface for saving the
    ;link in persistent storage
    hRes = psl\QueryInterface(?IID_IPersistFile, @ppf)
    
    If hRes = 0
      ;CompilerIf #PB_Compiler_Unicode
      ;save the link
      hRes = ppf\Save(LinkFileName, #True)
      ppf\Release()
    EndIf
    psl\Release()
  EndIf
  
  ;shut down COM
  CoUninitialize_()
  
  DataSection
    CLSID_ShellLink:
    Data.l $00021401
    Data.w $0000,$0000
    Data.b $C0,$00,$00,$00,$00,$00,$00,$46
    IID_IShellLink:
    CompilerIf #PB_Compiler_Unicode
      Data.l $000214F9
    CompilerElse
      Data.l $000214EE
    CompilerEndIf
    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
  ProcedureReturn hRes
EndProcedure
j'ai regardé le gestionnaire de tache. C'est bien l'environnement de PureBasic qui est chargé.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Répondre