IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

fichiers "raccourci vers" de Windows


Sujet :

Python

  1. #1
    Membre expérimenté
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    946
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 946
    Points : 1 351
    Points
    1 351
    Par défaut fichiers "raccourci vers" de Windows
    Salut,

    Pour un projet, j'ai du créer des liens vers des répétertoires, chaque lien étant un bat (sous XP). En gros, chaque bat lance une commande dans une fenêtre DOS:
    explore étant la commande qui ouvre un explorateur. Les problèmes sont:
    - la commande explore a besoin de préfixer les fichiers en réseau par 'file'
    - les fichiers bat ne supportent visiblement pas l'unicode.

    J'ai alors pensé créer des raccourcis windows. Et là, la question qui tue: Quelqu'un connaitrait une classe python gérant (à la création surtout) les fichiers 'raccourci vers' (extension lnk je crois)? Je suis tombé sur ce topic java, donc c'est largement faisable:

    http://www.developpez.net/forums/d54...nk-raccourcis/

    Mais si ça existe déjà en python, j'aime autant ne pas réinventer la roue.

    A+

    Pfeuh

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 273
    Points : 36 757
    Points
    36 757
    Par défaut
    Salut,
    Il est possible d'appeler l'API comme dans les exemples proposés via ctypes, mais si vous travaillez un peu sous Windows, vous installerez un jour ou l'autre pywin32 qui permet de faire faire cela simplement, genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    import win32com.client
     
    shell = win32com.client.Dispatch("WScript.Shell")
    shortcut = shell.CreateShortCut(r"c:\py_works\test.lnk")
    shortcut.Targetpath = r"c:\py_works\lockfile"
    shortcut.save()
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre expérimenté
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    946
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 946
    Points : 1 351
    Points
    1 351
    Par défaut
    merci, c'est exactement ce que je cherchais! Par contre, je n'arrive pas à trouver de doc sur win32com.client, vous auriez un lien?

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 273
    Points : 36 757
    Points
    36 757
    Par défaut
    Citation Envoyé par pfeuh Voir le message
    merci, c'est exactement ce que je cherchais! Par contre, je n'arrive pas à trouver de doc sur win32com.client, vous auriez un lien?
    Avec win32com mais vous serez déçu, car ce n'est qu'une API qui vous permettra de parler aux composants COM de Windows mais ne vous dira pas quoi leur dire

    Ce qui est généralement documenté chez microsoft avec des exemples pour différents langages.

    Pour ce sujet particulier, regardez le lien MSDN et essayez de traduire en Python.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre expérimenté
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    946
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 946
    Points : 1 351
    Points
    1 351
    Par défaut
    Ok, merci beaucoup, je vais me débrouiller avec ça.

  6. #6
    Membre expérimenté
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    946
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 946
    Points : 1 351
    Points
    1 351
    Par défaut
    Bon, comme j'ai un peu galéré, il n'est peut-être inutile que je partage une fonction permettant de créer un raccourci windows et un programme sommaire de test.

    En fait, si on veut créer un raccourci vers un dossier, c'est une fois sur deux Exception tant que l'on ne passe pas un nom de dossier terminée par '\', qu'il faut rajouter à la main. S'il n'y a pas Exception, windows essaiera de lancer le répertoire... Ce qui ne peut pas marcher.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    import win32com.client
    import os.path
     
    def createShortcut(linkname, targetname='', wdir='', args='', icon='', description=''):
        shell = win32com.client.Dispatch('WScript.Shell')
        shortcut = shell.CreateShortCut(linkname)
        if args != '':
            shortcut.Arguments = args
        if icon != '':
            shortcut.IconLocation = icon
        if wdir != '':
            shortcut.WorkingDirectory = wdir   
        if description != '':
            shortcut.Description = description
        if os.path.isdir(targetname):
            print 'isdir!'
            targetname = os.path.abspath(targetname) + os.sep
        shortcut.Targetpath = targetname        
        shortcut.save()
     
    if __name__ == "__main__":
     
        import Tkinter
        import tkFileDialog
     
        linkname = u"noname.lnk"
        targetname = u""
     
        def guiCreateShortcut(targetname, wdir='', args='', icon='', description=''):
            global linkname
            tempname = tkFileDialog.asksaveasfilename(title="Set shortlink name", parent=root, initialdir=linkname, initialfile=linkname, filetypes=[("shortcuts", ".lnk")], defaultextension=".lnk")
            if tempname!= "":
                linkname = tempname
                createShortcut(linkname, targetname, wdir, 'Pierre Faller', icon, description)
            else:
                print "guiCreateShortcut abort"
     
        def createFileShortcut():
            global targetname
            tempname =  tkFileDialog.askopenfilename(title="Choose file to point to", parent=root, initialdir=targetname, initialfile=targetname)
            if tempname != "":
                targetname = tempname
                guiCreateShortcut(targetname, os.path.dirname(targetname), 'Pierre Faller de la Michaudiere')
            else:
                print 'createFileShortcut abort'
     
        def createDirShortcut():
            global targetname
            tempname =  tkFileDialog.askdirectory(title="Choose directory to point to", parent=root, initialdir=targetname)
            if tempname != None:
                targetname = tempname
                guiCreateShortcut(targetname)
            else:
                print 'createDirShortcut abort'
     
        root = Tkinter.Tk()
        Tkinter.Button(root, text="Create a file shortcut", command=createFileShortcut, width=80, height=3).grid()
        Tkinter.Button(root, text="Create a directory shortcut", command=createDirShortcut, width=80, height=3).grid()
        root.mainloop()

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [batch] Comment créer un raccourci vers un fichier ?
    Par koKoTis dans le forum FAQs Windows
    Réponses: 1
    Dernier message: 13/11/2013, 20h40
  2. [Windows]lecture des fichier lnk (raccourcis)
    Par Tiaps dans le forum API standards et tierces
    Réponses: 10
    Dernier message: 21/10/2009, 19h27
  3. [Windows CE 5.0] Envoi de fichier du PDA vers PC/Serveur
    Par kilgore dans le forum Windows Mobile
    Réponses: 8
    Dernier message: 27/11/2007, 10h36
  4. Créer un raccourci vers un logiciel et un fichier
    Par romram dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 12/05/2005, 15h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo