Win32::Shortcut - Gestion des raccourcis Win32 depuis Perl |
Win32::Shortcut - Gestion des raccourcis Win32 depuis Perl
use Win32::Shortcut;
$LINK = new Win32::Shortcut();
Ce module implémente l'interface Win32 IShellLink pour permettre la gestion des raccourcis de fichiers depuis Perl.
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:
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");
Save
pour appliquer les
modifications à un fichier raccourci.
Exemple:
$LINK->Close();
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); }
undef
en cas d'erreur.
Exemple:
$LINK = new Win32::Shortcut();
$RegEdit = new Win32::Shortcut("Registry Editor.lnk"); die "Fichier introuvable" if not $RegEdit;
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;
}
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'});
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);
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.
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.
Load
, et/ou le nom de
fichier sous lequel le raccourci sera sauvé avec Save
(si l'argument
fichier n'est pas spécifié).
Touche de raccourci
de la boîte de Dialogue Propriétés
du raccourci.
IconLocation
au cas ou plus d'une icone est contenue dans ce fichier.
(je suppose cela, la documentation n'est pas claire là-dessus).
Arguments
) le contenu
du champ Cible
de la boîte de Dialogue Propriétés du raccourci.
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é.
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
.
Démarrer dans
de la boîte de Dialogue Propriétés
du raccourci.
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
.
Aldo Calpini <a.calpini@romagiubileo.it>
Merci à : Jesse Dougherty, Dave Roth, ActiveWare, et à la communauté des utilisateurs de Perl-Win32.
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.
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/ .
Jean-Louis Morel <jl_morel@bribes.org>
Win32::Shortcut - Gestion des raccourcis Win32 depuis Perl |