comment créer une icône sur le bureau pour lancer un prog
comment créer une icône sur le bureau pour lancer un prog
Bonjour à tous,
Je reviens à nouveau vers vous pour solliciter votre aide bienveillante.
Mon problème découle de l'aide que vous m'avez déjà apportée pour l'installation de programmes à partir d'une clé USB, et donc maintenant quand l'installation est terminée, je souhaiterais avoir une icône sur le bureau ou dans la barre des tâches pour pouvoir exécuter le programme nouvellement installé .
Cette fois-ci, je n'ai pas de code, car je n'ai pas la moindre idée de comment pratiquer.
Je vous remercie tous à l'avance pour les réponses que vous allez me donner.
Je reviens à nouveau vers vous pour solliciter votre aide bienveillante.
Mon problème découle de l'aide que vous m'avez déjà apportée pour l'installation de programmes à partir d'une clé USB, et donc maintenant quand l'installation est terminée, je souhaiterais avoir une icône sur le bureau ou dans la barre des tâches pour pouvoir exécuter le programme nouvellement installé .
Cette fois-ci, je n'ai pas de code, car je n'ai pas la moindre idée de comment pratiquer.
Je vous remercie tous à l'avance pour les réponses que vous allez me donner.
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 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Un homme doit être poli, mais il doit aussi être libre !
Re: comment créer une icône sur le bureau pour lancer un pr
J'ai trouvé ça dans mes archives mais je ne sais pas si ça marche sous Windows 10, ça devrait je pense.
M.
Code : Tout sélectionner
;PB4.00
;20061127, now works with unicode executables
EnableExplicit
Declare createShellLink(obj.s, lnk.s, arg.s, desc.s, dir.s, icon.s, index)
Declare.s getSpecialFolder(id)
Procedure.s getSpecialFolder(id)
Protected path.s, *ItemId.ITEMIDLIST
*itemId = #Null
If SHGetSpecialFolderLocation_(0, id, @*ItemId) = #NOERROR
path = Space(#MAX_PATH)
If SHGetPathFromIDList_(*itemId, @path)
If Right(path, 1) <> "\"
path + "\"
EndIf
ProcedureReturn path
EndIf
EndIf
ProcedureReturn ""
EndProcedure
Procedure createShellLink(obj.s, lnk.s, arg.s, desc.s, dir.s, icon.s, index)
;obj - 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(Obj)
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(lnk, #True)
; CompilerElse
; ;ensure that the string is ansi unicode
; mem = Space(#MAX_PATH)
; MultiByteToWideChar_(#CP_ACP, 0, lnk, -1, mem, #MAX_PATH)
; ;save the link
; hRes = ppf\Save(mem, #True)
; CompilerEndIf
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
#CSIDL_WINDOWS = $24
#CSIDL_DESKTOPDIRECTORY = $10
Global obj.s, lnk.s
obj = getSpecialFolder(#CSIDL_WINDOWS) + "Notepad.exe"
lnk = getSpecialFolder(#CSIDL_DESKTOPDIRECTORY) + "Demo link.lnk"
If createShellLink(obj, lnk, "", "Open Notepad", "C:\", obj, 0) = 0
MessageRequester("OK", "Raccourci créé sur le bureau", #PB_MessageRequester_Ok)
EndIf
End
Re: comment créer une icône sur le bureau pour lancer un pr
Marc56 t'a donné le code dans ton propre topic "Comment copier un fichier d'un lecteur à un autre".. 

~~~~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
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳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
Re: comment créer une icône sur le bureau pour lancer un pr
Oui
https://www.purebasic.fr/french/viewtop ... 24#p202724
C'est un peu trompeur quand on ne le sait pas, car "Lien symbolique" est un terme Unix (ln -s) que Ms a repris pour redéfinir son terme 'raccourci'
Note: Je viens de vérifier, la commande mklink est disponible à partir de Windows Vista, donc dans ton cas Micoute, tu seras peut-être obligé d'utiliser la méthode API si tu as quelques utilisateurs XP.
https://www.purebasic.fr/french/viewtop ... 24#p202724
C'est un peu trompeur quand on ne le sait pas, car "Lien symbolique" est un terme Unix (ln -s) que Ms a repris pour redéfinir son terme 'raccourci'

Code : Tout sélectionner
C:\>mklink /?
Crée un lien symbolique.
MKLINK [[/D] | [/H] | [/J]] Lien Cible
/D Crée un lien symbolique vers un répertoire. Par défaut,
il s'agit d'un lien symbolique vers un fichier.
/H Crée un lien physique à la place d'un lien symbolique.
/J Crée une jonction de répertoires.
Lien Spécifie le nom du nouveau lien symbolique.
Cible Spécifie le chemin d'accès (relatif ou absolu) auquel
le nouveau lien fait référence.
Re: comment créer une icône sur le bureau pour lancer un pr
Mille excuses, je n'avais même pas vu ce programme qui apparemment ne fonctionne pas avec Windows 10, mais comme je suis une brêle, peut-être que je ne comprends pas le fonctionnement.
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 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Un homme doit être poli, mais il doit aussi être libre !
Re: comment créer une icône sur le bureau pour lancer un pr
Voici l'essai que j'ai compilé sur ma clé, mais je n'ai pas de nouvelle icône sur l'écran.
Code : Tout sélectionner
EnableExplicit
Define Program_Title$ = "Diabdepiste"
Define Program_EXE$ = "Diabdepiste.exe"
Define Program_Rep$ = "D:\AFD50"
SetCurrentDirectory(GetUserDirectory(#PB_Directory_Desktop))
RunProgram("cmd", "/c mklink " +
#DQUOTE$ +
Program_Title$ +
#DQUOTE$ +
" " +
#DQUOTE$ +
Program_Rep$ +
"\" +
Program_EXE$ +
#DQUOTE$,
"")
End
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 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Un homme doit être poli, mais il doit aussi être libre !
Re: comment créer une icône sur le bureau pour lancer un pr
Faute de frappe: Tu as écris dans ton dernier code: "Diabdepiste.exe"
alors qu'avant ton programme s’appelait: "Diagdepiste.exe"
(j'ai mis du temps à trouver)

Pour ne pas avoir ce type d'erreur en cours de programme, il est intéressant d'ajouter une vérification (exemple au début du programme vérifier que l'EXE est là)
PS. mklink est arrivé à partir de Windows Vista, donc il marche pour Vista, Seven, 8, 8.1, 10
alors qu'avant ton programme s’appelait: "Diagdepiste.exe"
(j'ai mis du temps à trouver)

Pour ne pas avoir ce type d'erreur en cours de programme, il est intéressant d'ajouter une vérification (exemple au début du programme vérifier que l'EXE est là)
Code : Tout sélectionner
If FileSize(Program_Rep$ + "\" + Program_EXE$) <> -1
MessageRequester("Erreur: Le Fichier Source n'existe pas",
Program_Rep$ + "\" + Program_EXE$, #PB_MessageRequester_Error)
End
EndIf
Re: comment créer une icône sur le bureau pour lancer un pr
Bonjour à tous,
@Merc56, d'abord, merci beaucoup pour l'aide providentielle que tu me donnes et ça me fait bien avancer, non ce n'est pas une faute de frappe, car le programme se nomme "Diabdepiste" qui est une contraction de "Diabète dépiste" et c'est moi dans ma confusion qui a induit tout le monde en erreur et je demande qu'on m'en excuse.
Les sécurités que tu apportes en vérifiant la présence des fichiers qui seront utilisés sont de bonnes précautions à mon humble avis, car ça peut éviter de chercher le petit graine de sable dans la machine.
@Merc56, d'abord, merci beaucoup pour l'aide providentielle que tu me donnes et ça me fait bien avancer, non ce n'est pas une faute de frappe, car le programme se nomme "Diabdepiste" qui est une contraction de "Diabète dépiste" et c'est moi dans ma confusion qui a induit tout le monde en erreur et je demande qu'on m'en excuse.
Les sécurités que tu apportes en vérifiant la présence des fichiers qui seront utilisés sont de bonnes précautions à mon humble avis, car ça peut éviter de chercher le petit graine de sable dans la machine.
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 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Un homme doit être poli, mais il doit aussi être libre !
Re: comment créer une icône sur le bureau pour lancer un pr
Je ne suis pas spécialiste dans PB mais j’ai crée un programme il y a quelques temps et j’ai mis une icône il faudrait que je retrouve, mais je n’ai pas eu trop de problèmes le fichier est un peu plus lourd mais ça marche sans s’occuper si le fichier icône est là.
Dans Compilateur/Option du compilateur/Utiliser une icône et on sélectionne l’icône, si je me rappelle (l’icône est dans le programme pour quelques ko de plus)
Et en copiant le raccourci sur le bureau c'est ok.
Bon WE a tous
Pierre
Dans Compilateur/Option du compilateur/Utiliser une icône et on sélectionne l’icône, si je me rappelle (l’icône est dans le programme pour quelques ko de plus)
Et en copiant le raccourci sur le bureau c'est ok.
Bon WE a tous
Pierre
Toshiba satellite Windows 7 64bits
Re: comment créer une icône sur le bureau pour lancer un pr
Voici un code qui marche très bien et que j'utilise très souvent dans mes programmes d'installation. Je ne me rappelle pas de l'auteur mais il m'a été fourni par Falsam. Pour que le programme fonctionne, il faut créer un nouveau dossier appelé par exemple TestIcone, dans ce dossier mettre un programme exécutable (il doit apparaitre avec une icône bien entendu), mettre enfin ce code dans le même dossier puis excuter-le:
Code : Tout sélectionner
#CSIDL_DESKTOPDIRECTORY = $10
#CSIDL_WINDOWS = $24
#CSIDL_SYSTEM = $25
#CSIDL_PROGRAM_FILES = $26
#CSIDL_SYSTEMX86 = $29
#CSIDL_PROGRAM_FILESX86 = $2A
#CSIDL_PROGRAM_FILES_COMMON = $2B
#CSIDL_PROGRAM_FILES_COMMONX86 = $2C
Structure EMID
cb.b
abID.b[1]
EndStructure
Enumeration
#Win
#CreateIcone
EndEnumeration
Global Application.s, LinkFileName.s, LinkName.s, WorkDirectory.s, Exit
Declare createShellLink(Application.s, LinkFileName.s, arg.s, desc.s, dir.s, icon.s, index)
ProgName$="LinkIcone" ; nom du programme exemple: LinkIcone.exe liée à une icône, il se trouve dans le même dossier que ce programme (dossier courant). N'oubliez pas de le remplacer par le votre.
Procedure createShellLink(Application.s, LinkFileName.s, arg.s, desc.s, dir.s, icon.s, index)
Protected hRes.l, mem.s, ppf.IPersistFile
CompilerIf #PB_Compiler_Unicode
Protected psl.IShellLinkW
CompilerElse
Protected psl.IShellLinkA
CompilerEndIf
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
;-----------------------------------------------------------------------------
Procedure CreateIcone()
If createShellLink(Application, LinkFileName, "", LinkName, WorkDirectory, Application, 0) = 0
errorfound=0
Else
MessageRequester("Erreur","Le raccourci n'a pas pu être créé")
EndIf
EndProcedure
;-----------------------------------------------------------------------------
OpenWindow(#Win, 0, 0, 500,120, "Créer raccourci sur le bureau", #PB_Window_ScreenCentered|#PB_Window_SystemMenu )
ButtonGadget(#CreateIcone,10, 30, 150, 30, "Créer icône sur le bureau")
exit=0
Repeat
EventID = WaitWindowEvent()
If EventID = #PB_Event_Gadget
Select EventGadget()
Case #CreateIcone
Application = GetCurrentDirectory() + progname$+".exe"
WorkDirectory = GetPathPart(Application)
LinkFileName = GetHomeDirectory() + "desktop\" + progName$ +".lnk"
LinkName =ProgDesc$
CreateIcone()
MessageRequester("Ok","Raccourci créé avec succès!")
Exit=1
EndSelect
EndIf
If EventID=#PB_Event_CloseWindow
Exit = 1
EndIf
Until Exit = 1
End
Win7 (x64) 64 bits Pb 5.72
Re: comment créer une icône sur le bureau pour lancer un pr
Merci beaucoup omega pour le partage, mais je m'aperçois que c'est le même code à peu de choses près que celui de Mesa quelques postes plus haut, donc je vous remercie tous les deux sans oublier Marc56 qui m'a beaucoup aidé aussi.
Bon dimanche à tous.
Bon dimanche à tous.
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 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Un homme doit être poli, mais il doit aussi être libre !