begin process at 2010 02 10 03:52:00
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

API

 > CRÉATION D'UN RACCOURCI SUR LE BUREAU

CRÉATION D'UN RACCOURCI SUR LE BUREAU


 Information sur la source

Note :
9,33 / 10 - par 3 personnes
9,33 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :API Niveau :Débutant Date de création :03/07/2002 Date de mise à jour :03/02/2004 15:24:02 Vu :5 356

Auteur : rene38

Ecrire un message privé
Commentaire sur cette source (10)
Ajouter un commentaire et/ou une note

 Description

En VB6, l'assistant Empaquetage (installation du logiciel créé) utilise SETUP1.EXE dont le source peut être modifié pour installer automatiquement un raccourci sur le bureau.

Par contre, si quelqu'un peut me dire comment supprimer le raccourci en question au moment de la désinstallation, je suis preneur.  

Source

  • 'Dans la feuille frmSetup1 de Setup1.vbp, modifier la dernière procédure comme suit :
  • Private Sub Form_Unload(Cancel As Integer)
  • Dim Chemin As String, Réponse As Long, Bureau As String, Compteur As Integer
  • Dim RetourFonction As Long, Arguments As String
  • Chemin = Space(300) 'on crée un tampon, sinon ça foire)
  • Réponse = SHGetSpecialFolderPath(Me.hwnd, Chemin, 16, 0) '16 désigne le bureau
  • If (Réponse <> 0) Then
  • Chemin = Left(Chemin, InStr(Chemin, vbNullChar) - 1) 'on enlève le superflu
  • Else
  • 'la fonction n'a pas marché (on ne sait jamais)
  • End If
  • For Compteur = Len(Chemin) To 1 Step -1 ' on cherche le nom du bureau : Bureau ? Desktop ? ...
  • If Mid$(Chemin, Compteur, 1) = "\" Then Exit For
  • Next Compteur
  • Bureau = "..\.." & Mid$(Chemin, Compteur) ' le chemin du bureau
  • Bureau = strUnQuoteString(Bureau) ' on enlève les éventuels guillemets
  • Arguments = ""
  • RetourFonction = OSfCreateShellLink(Bureau & vbNullChar, gstrAppName, gstrDestDir & gstrAppName, Arguments & vbNullChar, True, gsPROGMENUKEY)
  • CleanUpCabs
  • End Sub
  • Ajouter aussi dans la section déclarations du module basCommon(common.bas) la déclaration :
  • Public Declare Function SHGetSpecialFolderPath Lib "Shell32.dll" Alias "SHGetSpecialFolderPathA" (ByVal hwndOwner As Long, ByVal lpszPath As String, ByVal nFolder As Long, ByVal fCreate As Long) As Long
'Dans la feuille frmSetup1 de Setup1.vbp, modifier la dernière procédure comme suit :

Private Sub Form_Unload(Cancel As Integer)
        Dim Chemin As String, Réponse As Long, Bureau As String, Compteur As Integer
        Dim RetourFonction As Long, Arguments As String
        Chemin = Space(300) 'on crée un tampon, sinon ça foire)
        Réponse = SHGetSpecialFolderPath(Me.hwnd, Chemin, 16, 0) '16 désigne le bureau
        If (Réponse <> 0) Then
            Chemin = Left(Chemin, InStr(Chemin, vbNullChar) - 1) 'on enlève le superflu
        Else
                 'la fonction n'a pas marché (on ne sait jamais)
        End If
        For Compteur = Len(Chemin) To 1 Step -1 ' on cherche le nom du bureau : Bureau ? Desktop ? ...
            If Mid$(Chemin, Compteur, 1) = "\" Then Exit For
        Next Compteur
        Bureau = "..\.." & Mid$(Chemin, Compteur) ' le chemin du bureau
        Bureau = strUnQuoteString(Bureau) ' on enlève les éventuels guillemets
        Arguments = ""
        RetourFonction = OSfCreateShellLink(Bureau & vbNullChar, gstrAppName, gstrDestDir & gstrAppName, Arguments & vbNullChar, True, gsPROGMENUKEY)
    CleanUpCabs
End Sub 

Ajouter aussi dans la section déclarations du module basCommon(common.bas) la déclaration :

Public Declare Function SHGetSpecialFolderPath Lib "Shell32.dll" Alias "SHGetSpecialFolderPathA" (ByVal hwndOwner As Long, ByVal lpszPath As String, ByVal nFolder As Long, ByVal fCreate As Long) As Long

 Conclusion

Je cherche toujours comment virer le raccourci à la désinstallation...

Ajouté le 03/02/2004 suite à une demande.

Pour que le raccourci sur le bureau ait une icône autre qu'un petit rectangle surmonté d'un trait bleu, il faut :
   - Sous VB, afficher une des feuilles du projet -disons Form1-
     dans les propriétés de Form1, on a :  Icon  (icon)
     on clique sur (icon) puis sur les 3 points qui apparaissent (...)
     et on sélectionne un fichier .ico
   - On clique sur Projet - Propriétés de (le nom du Projet) puis sur l'onglet Créer
      A droite, dans le cadre Application, on déroule la combobox Icône
       pour faire apparaître Form1
      A côté,  l'icône va s'afficher.

   - On fait OK ; on sauvegarde le projet ; on crée l'exe ;
      on crée le programme d'installation avec
      l'Assistant Empaquetage et déploiement (Setup1 modifié).

Et voilà.

Quand on fera l'installation, l'icône du raccourci sera l'icône
du projet c'est à dire l'icône de Form1 et en face du nom de l'exe,
au lieu du rectangle surmonté d'un trait bleu, ce sera aussi cette icône.


 Sources du même auteur

Source avec Zip Source avec une capture AFFICHER ET IMPRIMER DANS TOUS LES SENS : APPLICATION
Source avec Zip Source avec une capture RACCOURCI SUR LE BUREAU EN VB6
Source avec Zip Source avec une capture COURBE EN COORDONNÉES PARAMÉTRIQUES
Source avec Zip EFFECTUER DES SYMÉTRIES SUR UNE IMAGE
Source avec Zip Source avec une capture FEUILLE DE FOND D'UNE BOITE DE CD/DVD

 Sources de la même categorie

Source avec Zip Source avec une capture Source .NET (Dotnet) FAIRE LA DIFFÉRENCE ENTRE UNE ADRESSE EMAIL QUI EXISTE D'UNE... par lesinfosdugeek
ENVOYER UN MESSAGE SUR SON COMPTE TWITTER par lesinfosdugeek
Source avec Zip Source avec une capture TROUVER LES CLÉS DE REGISTRE QUI CHANGENT par Flocreate
Source avec Zip IP_PUBLIQUE_INTERNETGETCONNECTEDSTATE par marco62118
Source avec Zip TOUTES LES RÉSOLUTIONS D'ÉCRAN ET TAILLE MAXI DE LA FORM AUD... par marco62118

Commentaires et avis

Commentaire de leneuf22 le 03/07/2002 23:28:15

Mais il faut aussi utiliser la fonction SHGetSpecialFolderPathA pour retrouver l'emplacement du bureau sur le dd.

Commentaire de rene38 le 04/12/2002 01:26:08

Merci, leneuf22 : code corrigé.

Commentaire de VieilEric le 14/11/2003 13:41:32

Dans RetourFonction = le second gstrAppName doit être remplacé par gstrAppExe car le nom de l'application n'est pas forcément celui de l'exe, donc le fichier appelé par le raccourci doit être gstrAppExe.

Commentaire de fontyve le 26/01/2004 09:09:19

J'ai rien compris mais c'est pas grave puisque ca marche!
Bravo
fontyve

Commentaire de Nicolas75 le 19/03/2005 14:06:29

Bonjour à tous

Tout le monde sait (enfin je crois) que l'on peut modifier la procédure d'installation de VB6.
J'ai vu ici une procédure qui semble intéressante mais qui pose quelques petits inconvénients du moins je pense car je me fit au code saisi  je n'ai pas testé.

1 &#8211; Le raccourci est effectivement créé mais est t'il supprimer lors de la désinstallation.
Car cette opération n'a pas été enregisté dans le fichier unst.log

2- Il n'est pas nécessaire de déclarer à nouveau la fonction SHGetSpecialFolderPath car elle existe déjà dans le code ainsi que la fonction OSfCreateShellLink (Pourquoi ne pas les utiliser).


J'ai moi-même modifié ce code mais avec beaucoup moins de lignes et en utilisant les fonctions existantes;Ce qui fait que l'opération est enregistrée dans le fichier st6unst.log et que le raccourci est alors désinstaller automatiquement avec l'application.

Je dois avouer que je me suis beaucoup inspirer du code précédent et j'en remercie beaucoup l'auteur.

Comment faire :

Tout d'abord Déclarez un variable Public dans le module Général de basSetup1.bas
Exemple BlnRaccourci as Boolean

Puis dans la feuille frmBegin créé un CheckBox  que vous appellerez ChkIcone.
Dans la procédure sur Click de ChkIcone entrez :

If ChkIcone.Value = vbChecked Then
    blnRaccourci = True
Else
    blnRaccourci = False
End If

A la fin du module basSetup1.bas créez la procédure suivante

Private Sub CreationRaccourciBureau(strProgramPath As String, strProgramArgs As String, strProgramIconTitle As String, fPrivate As Boolean, sParent As String)
    Dim oMalloc As IVBMalloc
    Dim sPath As String
    Dim IDL As Long
    Dim lPrograms As SpecialFolderIDs
    Dim Compteur As Integer
    
    'Renvoi le Chemin du bureau
    If SHGetSpecialFolderLocation(frmSetup1.hWnd, lPrograms, IDL) = NOERROR Then
        sPath = String$(gintMAX_PATH_LEN, 0)
        SHGetPathFromIDListA IDL, sPath
        SHGetMalloc oMalloc
        oMalloc.Free IDL
        sPath = StringFromBuffer(sPath)
    End If
    AddDirSep sPath

    For Compteur = Len(sPath) - 1 To 1 Step -1 ' on cherche le nom du bureau : Bureau ? Desktop ? ...
        If Mid$(sPath, Compteur, 1) = "\" Then Exit For '
    Next Compteur
        sPath = "..\.." & Mid$(sPath, Compteur) ' le chemin du bureau
        sPath = Mid$(sPath, 1, Len(sPath) - 1) 'le chemin du bureau sans le Slash à la fin
    'Appel procédure qui Crée l'icône sur le bureau
    CreateShellLink strProgramPath, sPath, strProgramArgs, strProgramIconTitle, fPrivate, sParent
End Sub



Maintenant Recherchez le module CreateIcons dans basSetup1.bas et à la fin, après Le next  tapez le code suivant :

    If blnRaccourci Then
        Call CreationRaccourciBureau(strProgramPath, strProgramArgs, strProgramIconTitle, fPrivate, sParent)
    End If




Voilà c'est tout.


Etant donné que j'utilise ici le code existant toute l'opération est alors enregistrée dans le fichier St6unst.log, ce qui a pour conséquence de supprimer l'icône lors de la désinstallation de l'application.

Si vous avez des soucis avec ce code n'hésitez pas à me le dire.

A+

Commentaire de VieilEric le 29/03/2005 17:30:55

Bonjour
J'ai essayé le code de Nicolas75, mais sans succès.
Comme je ne pouvais cocher la case ChkIcone (la checkBox n'apparaît pas) j'ai supprimé la condition If blnRaccourci, mais sans plus de résultat.
Le programme s'installe, mais pas le raccourci.
Aurais-je oublié quelque chose ?
A+
NOTA: le code de René38 fonctionne

Commentaire de Nicolas75 le 30/03/2005 10:30:49

Salut VieilEric.

Je te confirme que chez moi tout marche à merveille.

Pour info j'utilise VB 6 SP5.

Je ne comprend pas très bien quand tu dis ne pas voir la Checkbox sur la form frmBegin.
As-tu vérifié que sa propriété visible est à True (sans vouloir t'offenser) :-).

Mais il est vrai que ce n'est pas indispensable, c'est seulement pour donner le choix à l'utilisateur d'installer le raccourci ou non.

Pour essayer de répondre à ta question,
Vérifie que les fonctions et procédures SHGetSpecialFolderLocation CreateShellLink existe bien dans le module BasSetup1.bas.

As-tu un message d'erreur suite aux modifs que tu as apportées ?

As-tu créé le fichier Setup1.exe puis le copié dans le dossier "C:\Program Files\Microsoft Visual Studio\VB98\Wizards\PDWizard" à la place du précédent ?

Si oui, après une insttall vérifie que le fichier ST6UNST.LOG a bien pris en compte la création de l'icône (c'est un fichier texte).

Si tu veux je peux te faire parvenir le fichier setup1.exe que j'ai modifié  par e-mail.

laisse moi juste une adresse.

A+

Nicolas

Commentaire de VieilEric le 30/03/2005 11:23:25

Salut Nicolas75
J'ai découvert au moins un problème.
Lorsque je compile Setup1, la version compilée ne se met pas dans PDWizard mais dans Visual Studio (pourquoi, alors qu'elle le fait avec l'autre méthode ?), dons je conservais l'ancien Setup1.exe.
J'ai donc déplacé manuellement le nouveau Setup1.exe et maintenant je vois la CheckBox.
Mais j'ai ensuite une "Erreur lors de la création de l'icone..."
En faisant "ignorer" j'installe le programme mais sans l'icone.
Je ne vois pas d'où vient cette erreur.
Peux-tu m'envoyer Setup1.exe, et peut être Setup1.bas

Mon adresse eric(point)barsalou(at)Wanadoo.fr
Remplacer (point) par . et (at) par @ bien sûr.

Merci d'avance.

P.S. j'ai VB6 SP6 version initiation

Commentaire de sojojo le 06/09/2005 09:58:15

moi j'ai un probleme avec gsPROGMENUKEY, il n'est pas definit quelqu'un sait comment il doit l'etre??
merci

Commentaire de rimas10 le 07/07/2007 00:01:51

j'ai essaié ca me donne toujours des erreurs de compilation de l'exe setup1.exe

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,702 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales