Win32::Shortcut - Gestion des raccourcis Win32 depuis Perl


NOM

Win32::Shortcut - Gestion des raccourcis Win32 depuis Perl

Retour en haut de la page


SYNOPSIS

    use Win32::Shortcut;
    $LINK = new Win32::Shortcut();

Retour en haut de la page


DESCRIPTION

Ce module implémente l'interface Win32 IShellLink pour permettre la gestion des raccourcis de fichiers depuis Perl.

Utilisation générale

Pour utiliser ce module, ajoutez d'abord la ligne suivante au début de votre script :

    use Win32::Shortcut;

Puis, vous utilisez la commande suivante pour créer un objet raccourci :

    $LINK = new Win32::Shortcut();

Cette fonction créera un objet $LINK sur lequel vous pourrez appliquer les Méthodes et Propriétés expliquées plus bas.

L'objet n'est cependant pas un raccourci; c'est juste la définition d'un raccourci. Fondamentalement, vous pouvez alors faire 2 choses:

  1. Charger un fichier raccourci dans l'objet.

  2. Sauver l'objet dans un fichier raccourci.

Pour le reste, l'objet peut être accédé comme si c'était une référence à un tableau associatif normal. Il possède les clefs suivantes (ici reportées comme propriétés):

    $LINK->{'File'}
    $LINK->{'Path'}               $LINK->Path()
    $LINK->{'ShortPath'}
    $LINK->{'WorkingDirectory'}   $LINK->WorkingDirectory()
    $LINK->{'Arguments'}          $LINK->Arguments()
    $LINK->{'Description'}        $LINK->Description()
    $LINK->{'ShowCmd'}            $LINK->ShowCmd()
    $LINK->{'Hotkey'}             $LINK->Hotkey()
    $LINK->{'IconLocation'}       $LINK->IconLocation()
    $LINK->{'IconNumber'}         $LINK->IconNumber()

Donc, en supposant que vous avez un fichier raccourci nommé test.lnk dans votre répertoire courant, ce script simple vous dira où ce raccourci pointe :

    use Win32::Shortcut;
    $LINK=new Win32::Shortcut();
    $LINK->Load("test.lnk");
    print "Raccourci vers : $LINK->{'Path'} $LINK->{'Arguments'} \n";
    $LINK->Close();

Mais vous pouvez aussi modifier ses valeurs :

    use Win32::Shortcut;
    $LINK=new Win32::Shortcut();
    $LINK->Load("test.lnk");
    $LINK->{'Path'}=~s/C:/D:/i;   # change la cible de C: en D:
    $LINK->{'ShowCmd'}=SW_NORMAL; # lancement dans une fenêtre normale

et alors vous pouvez sauver vos changements dans le fichier raccourci avec cette commande :

    $LINK->Save();
    $LINK->Close();

ou alors vous pouvez le sauver sous un autre nom, en créant un nouveau fichier raccourci :

    $LINK->Save("test2.lnk");
    $LINK->Close();

Finalement, vous pouvez créer un raccourci complètement nouveau :

    $LINK=new Win32::Shortcut();
    $LINK->{'Path'}="C:\PERL5\BIN\PERL.EXE";
    $LINK->{'Arguments'}="-v";
    $LINK->{'WorkingDirectory'}="C:\PERL5\BIN";
    $LINK->{'Description'}="Affiche la version de Perl";
    $LINK->{'ShowCmd'}=SW_SHOWMAXIMIZED;
    $LINK->Save("Perl Version Info.lnk");
    $LINK->Close();

Notez aussi que, dans les exemples ci-dessus, les deux lignes :

    $LINK=new Win32::Shortcut();
    $LINK->Load("test.lnk");

peuvent être réduite à :

    $LINK=new Win32::Shortcut("test.lnk");

Méthodes

Close
Ferme un objet raccourci. Notez qu'il n'est pas «strictement» requis de fermer les objets que vous créez, puisque les objets Win32::Shortcut sont automatiquement fermés quand le programme se termine (ou quand un tel objet est détruit). Notez aussi qu'un raccourci n'est pas sauvé automatiquement quand il est fermé, même si vous l'avez modifié. Vous devez appeler Save pour appliquer les modifications à un fichier raccourci.

Exemple:

      $LINK->Close();

Load (fichier)
Charge le contenu du fichier raccourci nommé fichier dans un objet raccourci et remplit les propriétés de l'objet avec ses valeurs. Retourne undef en cas d'erreur, ou une valeur VRAI si tout réussit.

Exemple:

      $LINK->Load("test.lnk") or print "test.lnk introuvable !";
      print join("\n", $LINK->Path,
                       $LINK->ShortPath,
                       $LINK->WorkingDirectory,
                       $LINK->Description,
                       $LINK->ShowCmd,
                       $LINK->Hotkey,
                       $LINK->IconLocation,
                       $LINK->IconNumber);
      }

new Win32::Shortcut ([fichier])
Crée un nouvel objet raccourci. Si un nom de fichier est passé dans fichier, ce fichier est automatiquement chargé aussi. Retourne l'objet créé ou undef en cas d'erreur.

Exemple:

      $LINK = new Win32::Shortcut();
      $RegEdit = new Win32::Shortcut("Registry Editor.lnk");
      die "Fichier introuvable" if not $RegEdit;

Resolve ([flag])
Tente de résoudre un raccourci et retourne le chemin trouvé ou undef en cas d'erreur; si aucune solution n'est trouvée, le chemin est retourné inchangé. Notez que le chemin est mis à jour automatiquement dans la propriété Path du raccourci. Par défaut, cette méthode agit discrètement, mais, si vous passez une valeur de 0 (zéro) dans le paramètre flag, elle affichera une boîte de dialogue qui demandera à l'utilisateur plus d'information.

Exemple:

      # si la cible n'existe pas...
      if(! -f $LINK->Path) {
      # sauvegarder la cible actuelle pour comparaison
      $oldpath = $LINK->Path;
      # essayer de la résoudre (avec une boîte de dialogue)
      $newpath = $LINK->Resolve(0);
      die "Non résolu..." if $newpath == $oldpath;
      }

Save ([fichier])
Sauve le contenu de l'objet raccourci dans le fichier nommé fichier. Si fichier est omis, il est pris dans la propriété File de l'objet (lequel, s'il n'a pas changé, est le nom du dernier fichier chargé). Si aucun fichier n'a été chargé et si la propriété File ne contient pas de nom de fichier valide, la méthode renverra undef, valeur qui sera aussi renvoyée en cas d'erreur. Une valeur VRAIE sera retournée si tout réussit.

Exemple:

      $LINK->Save();
      $LINK->Save("Copie de " . $LINK->{'File'});

Set (path, arguments, workingdirectory, description, showcmd, hotkey, iconlocation, iconnumber)
Fixe toutes les propriétés de l'objet raccourci en une seule commande. Cette méthode est fournie seulement pour des raisons de commodité, vous pouvez aussi fixer ces valeurs en changeant les valeurs des propriétés.

Exemple:

      $LINK->Set("C:\PERL5\BIN\PERL.EXE",
                 "-v",
                 "C:\PERL5\BIN",
                 "Affiche la version de Perl",
                 SW_SHOWMAXIMIZED,
                 hex('0x0337'),
                 "C:\WINDOWS\SYSTEM\COOL.DLL",
                 1);
      # ce qui est la même chose que ...
      $LINK->Path("C:\PERL5\BIN\PERL.EXE");
      $LINK->Arguments("-v");
      $LINK->WorkingDirectory("C:\PERL5\BIN");
      $LINK->Description("Affiche la version de Perl");
      $LINK->ShowCmd(SW_SHOWMAXIMIZED);
      $LINK->Hotkey(hex('0x0337'));
      $LINK->IconLocation("C:\WINDOWS\SYSTEM\COOL.DLL");
      $LINK->IconNumber(1);

Propriétés

On a accès aux propriétés d'un objet raccourci par :

    $OBJECT->{'property'}

Par exemple, en supposant que vous avez créé un objet raccourci avec :

    $LINK=new Win32::Shortcut();

vous pouvez, par exemple, voir sa description avec :

    print $LINK->{'Description'};

Vous pouvez aussi bien la fixer :

    $LINK->{'Description'}="Ceci est une description";

Depuis la version 0.02, ces propriétés ont aussi une méthode correspondante (routine), donc vous pouvez écrire les deux lignes ci-dessus en utilisant cette syntaxe :

    print $LINK->Description;
    $LINK->Description("Ceci est une description");

Les propriétés d'un raccourci reflètent le contenu de la boîte de dialogue des Propriétés du Raccourci qui peut être obtenue en cliquant le troisième bouton de la souris sur un fichier raccourci dans l'Explorateur de Windows 95 (ou NT 4.0) et en choisissant «Propriétés» (bon, j'espère que vous le saviez déjà :). Les champs qui correspondent aux propriétés seules sont marqués en gras dans la liste suivante.

Arguments
Les arguments associés avec l'objet lien du shell. Ils seront passés au programme visé (voyez Path) quand il sera exécuté. En fait, concaténé avec Path, ce paramètre forme le champ Cible de la boîte de Dialogue Propriété du raccourci.

Description
Une description optionnelle donnée au raccourci. Semble manquer à la boîte de Dialogue Propriété du raccourci (pas encore implémenté ?).

File
Le nom de fichier du raccourci ouvert avec Load, et/ou le nom de fichier sous lequel le raccourci sera sauvé avec Save (si l'argument fichier n'est pas spécifié).

Hotkey
La touche de raccourci associée au raccourci, dans la forme d'un nombre sur deux octets dont le premier octet identifie les modificateurs (Ctrl, Alt, Shift... mais je n'ai pas trouvé comme il marche) et le second octet est le code ASCII de la touche de caractère. Correspond au champ Touche de raccourci de la boîte de Dialogue Propriétés du raccourci.

IconLocation
Le fichier qui contient l'icone pour le raccourci. Semble actuellement toujours ne renvoyer rien.

IconNumber
Le numéro de l'icone pour le raccourci dans le fichier pointé par IconLocation au cas ou plus d'une icone est contenue dans ce fichier. (je suppose cela, la documentation n'est pas claire là-dessus).

Path
La cible du raccourci. Constitue (concaténé avec Arguments) le contenu du champ Cible de la boîte de Dialogue Propriétés du raccourci.

ShortPath
Identique à Path, mais exprimé dans le format compatible-DOS (nom de fichiers 8.3). Disponible uniquement en lecture (bon, vous pouvez le changer, mais cela n'a aucun effet sur le raccourci; changez Path à la place) une fois le fichier raccourci chargé.

ShowCmd
La condition de la fenêtre dans laquelle le programme sera exécuté (peut être Normale, Réduite ou Agrandie). Correspond au champ Exécuter de la boîte de Dialogue Propriétés du raccourci. Les valeurs admises sont
    Valeur      Signification   Constante
    1           Normale         SW_SHOWNORMAL
    3           Agrandie        SW_SHOWMAXIMIZED
    7           Réduite         SW_SHOWMINNOACTIVE

Toute autre valeur doit (théoriquement) donner une fenêtre Normale.

WorkingDirectory
Le répertoire dans lequel le programme cible doit s'exécuter. Correspond au champ Démarrer dans de la boîte de Dialogue Propriétés du raccourci.

Constantes

Les constantes suivantes sont exportées dans l'espace de noms principal de votre script qui utilise Win32::Shortcut :

    SW_SHOWNORMAL
    SW_SHOWMAXIMIZED
    SW_SHOWMINNOACTIVE

Ces constantes sont les valeurs admises pour la propriété ShowCmd.

Retour en haut de la page


HISTORIQUE DES VERSIONS

Retour en haut de la page


AUTEUR

Aldo Calpini <a.calpini@romagiubileo.it>

Retour en haut de la page


CRÉDITS

Merci à : Jesse Dougherty, Dave Roth, ActiveWare, et à la communauté des utilisateurs de Perl-Win32.

Retour en haut de la page


DÉCHARGE

Ce programme est LIBRE; vous pouvez le redistribuer, le modifier, le désassembler, lui appliquer du «reverse engineering», comme vous le voulez. Néanmoins, gardez présent à l'esprit que RIEN N'EST GARANTI quant à son fonctionnement et que tout que vous faites l'est À VOS PROPRES RISQUES - Je n'assume aucune responsabilité pour aucun dommage, perte d'argent et/ou de santé qui pourraient résulter de l'utilisation de ce programme !

This is distributed under the terms of Larry Wall's Artistic License.

Retour en haut de la page


VERSION FRANÇAISE

Cette traduction française correspond à la version anglaise distribuée avec perl 5.6.1. Pour en savoir plus concernant ces traductions, consultez http://www.enstimac.fr/Perl/ .

Retour en haut de la page


TRADUCTION EN FRANÇAIS

Jean-Louis Morel <jl_morel@bribes.org>

Retour en haut de la page

 Win32::Shortcut - Gestion des raccourcis Win32 depuis Perl