Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

WSH / VBS - Erreur de l'objet WshShortcut - Mais où est la liste des erreurs ?

9 réponses
Avatar
GOWAP
Salutation,

J'utilise l'objet WshShortcut pour fabrique ou mettre a jour un raccourci
("*.LNK").
Lorsque ce raccourci et en lecture seul par exemple, ou verrouillé (en cours
de modification ou autre...), la méthode "save" génère une erreur.
Avec l'objet "err", càd avec un "on error resume next", je peux intercepté
l'erreur et récupérer son code avec "err.number". (ou number n'est pas le
nombre d'erreur mais le numéro de l'erreur).

C'est bien jolie, mais je la trouve où la table des erreurs de l'objet
WshShortcut ?

J'ai regarde sur le site de JCB, mais il n'y a rien d'autre que dans l'aide
Fr "Documentation Windows Script 5.6" (Script56.CHM).

Merci de votre aide a localiser la documentation.

Cordialement,
GOWAP

9 réponses

Avatar
mc
Les codes erreur dont tu parles sont certainement les mêmes que pour un
fichier normal. Regardes dans la MSDN, tu devrais trouver ton bonheur avec le
numéro de l'erreur renvoyé.


Salutation,

J'utilise l'objet WshShortcut pour fabrique ou mettre a jour un raccourci
("*.LNK").
Lorsque ce raccourci et en lecture seul par exemple, ou verrouillé (en cours
de modification ou autre...), la méthode "save" génère une erreur.
Avec l'objet "err", càd avec un "on error resume next", je peux intercepté
l'erreur et récupérer son code avec "err.number". (ou number n'est pas le
nombre d'erreur mais le numéro de l'erreur).

C'est bien jolie, mais je la trouve où la table des erreurs de l'objet
WshShortcut ?

J'ai regarde sur le site de JCB, mais il n'y a rien d'autre que dans l'aide
Fr "Documentation Windows Script 5.6" (Script56.CHM).

Merci de votre aide a localiser la documentation.

Cordialement,
GOWAP





Avatar
martial collinet
Bonjour,

our être un peu plus complet voici une liste de quelques erreurs
interceptables
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbenlr98/html/vamsgFileNotFound.asp

Bon coding.
--
----------------------------------
martial collinet
http://martialcollinet.free.fr
----------------------------------



Salutation,

J'utilise l'objet WshShortcut pour fabrique ou mettre a jour un raccourci
("*.LNK").
Lorsque ce raccourci et en lecture seul par exemple, ou verrouillé (en cours
de modification ou autre...), la méthode "save" génère une erreur.
Avec l'objet "err", càd avec un "on error resume next", je peux intercepté
l'erreur et récupérer son code avec "err.number". (ou number n'est pas le
nombre d'erreur mais le numéro de l'erreur).

C'est bien jolie, mais je la trouve où la table des erreurs de l'objet
WshShortcut ?

J'ai regarde sur le site de JCB, mais il n'y a rien d'autre que dans l'aide
Fr "Documentation Windows Script 5.6" (Script56.CHM).

Merci de votre aide a localiser la documentation.

Cordialement,
GOWAP





Avatar
GOWAP
Salutation,

Je pose la question, car je ne trouve pas les erreurs (numéro,
signification) dans le MSDN (voir
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/e1b7f981-e8b9-4f41-bb4c-5462d664f184.asp ;
la page ne fonctionne pas avec FireFox !).
Pour information, il n'y a pas de relation intrinsèque entre VB et WSH. Il
faut faire la différence en VB, VBS, VBA et WSH (autant dans les question
que dans les réponses). C'est digne quand même que ca persiste ce mélange !
C'est bien un langage BASIC comme vocabulaire mais ce ne sont pas les mêmes
langages.

Revenons au problème... je vais le détailler.

Dans un "Windows Script Host" = WSH, j'utilise l'objet natif "WshShell"
(http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/7b956233-c1aa-4b59-b36d-f3e97a9b02f0.asp).
Pour cela, je fais un :

Set WshShell = WScript.CreateObject("WScript.Shell")

Puis, j'utilise l'instance WshShell pour utiliser la méthode
"CreateShortcut" qui perme de créer ou de modifier un "Lien" (raccourci) :

Set oShellLink = WshShell.CreateShortcut("C:LnkTest.lnk")

A partir de la, l'instance oShellLink est fabriqué en mémoire. Le propriété
sont toutes vides (ou du moins avec un valeur par défaut). Je ne suis pas
obligé d'affecté les propriétés de l'objet (Arguments, Description,
FullName, Hotkey, IconLocation, RelativePath, TargetPath, WindowStyle,
WorkingDirectory), mais pour l'exemple :

oShellLink.TargetPath = WScript.ScriptFullName
oShellLink.WindowStyle = 1
oShellLink.IconLocation = "notepad.exe, 0"
oShellLink.Description = "Script de raccourci"
oShellLink.WorkingDirectory = "c:"

Puis je créer réélement le fichier de lien avec la méthode SAVE

oShellLink.Save

Voir objet.Save
(http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/a6e33ae0-25ba-4a11-80ee-94764565be54.asp)
Cette méthode peut générer des erreurs ; même si il n'y en a aucune trace
dans la documentation. Dans la documentation que fournie Microsoft pour
Windows 95/98, dans toutes les méthodes qui pouvaient générer une erreur, il
y avait une référence vers une table.
Ici, c'est l'objet WshShortcut qui m'intéresse. Où est la liste des erreurs
de cette objet ?

Générons une erreur.
Créer votre script WSF avec entête et les 9 lignes ci-dessus (je remettre
tous en bas de ce message pour le copier/coller) en code (ou alors
directement un fichier VBS).
A la première exécution, le script crée le raccourci.
A la deuxième, il met a jours - vous pouvez change le contenu pour vérifier
et relancer le script.
Maintenant, mettez l'attribut "lecture seul". (pour le accros de la ligne de
commande, 'Attrib +r c:LnkTest.lnk")

Relancer le script, vous avez :

C:>cscript LnkTest.wsf
Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. Tous droits réservés.

C:LnkTest.wsf(16, 2) WshShortcut.Save: Impossible d'enregistrer le
raccourci "C:LnkTest.lnk".

Ici, on n'a pas le numéro de l'erreur.

Modifiez la ligne de code "oShellLink.Save" par :

On Error Resume Next 'Active la gestion d'erreur
oShellLink.Save 'Crée ou MAJ le raccourci / Traitement erreur après
set oShellLink = nothing 'Libère l'instance d'objet

If err.number Then
WScript.Echo "Erreur N° " & CStr(Err.Number) & "(" & Hex(Err.Number) & _
") sur la ligne """ & Err.Source & """." & vbCrLf & Err.Description
Err.Clear ' Efface l'erreur.
End If
On Error Goto 0

Relancer le script, vous avez :
C:>cscript LnkTest.wsf
Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. Tous droits réservés.

Erreur N° -2147024891(80070005) sur la ligne "WshShortcut.Save".
Impossible d'enregistrer le raccourci "C:LnkTest.lnk".

Remarquez que l'erreur est en français ; je vous invite a la cherche dans le
MSDN FR (y-a jamais rien la), puis US (pas mieux) ; si vous trouvez quelque
chose, fait passer. Et surtout, les numéros d'erreur ne sont pas pris au
hasard, il y a surement une table... A votre bon cour !

Sur cette page perso, il y a une table réduit d'erreur mais dans les valeur
: http://e.marcon.free.fr/docvb/wsh/wsErrorList.htm

GOWAP


----- Original Message -----
From: "martial collinet" <martialcollinet[nospam]@hotmail.com>
Newsgroups: microsoft.public.fr.scripting
Sent: Sunday, August 20, 2006 11:12 AM
Subject: RE: WSH / VBS - Erreur de l'objet WshShortcut - Mais où est la
liste d


Bonjour,

our être un peu plus complet voici une liste de quelques erreurs
interceptables
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbenlr98/html/vamsgFileNotFound.asp

Bon coding.
--
----------------------------------
martial collinet
http://martialcollinet.free.fr
----------------------------------



Salutation,

J'utilise l'objet WshShortcut pour fabrique ou mettre a jour un raccourci
("*.LNK").
Lorsque ce raccourci et en lecture seul par exemple, ou verrouillé (en
cours
de modification ou autre...), la méthode "save" génère une erreur.
Avec l'objet "err", càd avec un "on error resume next", je peux
intercepté
l'erreur et récupérer son code avec "err.number". (ou number n'est pas le
nombre d'erreur mais le numéro de l'erreur).

C'est bien jolie, mais je la trouve où la table des erreurs de l'objet
WshShortcut ?

J'ai regarde sur le site de JCB, mais il n'y a rien d'autre que dans
l'aide
Fr "Documentation Windows Script 5.6" (Script56.CHM).

Merci de votre aide a localiser la documentation.

Cordialement,
GOWAP






-------------------------------LnkTest.wsf--------------(version
1)----------------------------
<package>
<job id="LnkTest1"><?job debug="false"?><!-- Script d'installation -->
<runtime>
<description>Test sur un fichier LNK</description>
</runtime>

<script language="VBScript">

Set WshShell = WScript.CreateObject("WScript.Shell")
Set oShellLink = WshShell.CreateShortcut("C:LnkTest.lnk")
oShellLink.TargetPath = WScript.ScriptFullName
oShellLink.WindowStyle = 1
oShellLink.IconLocation = "notepad.exe, 0"
oShellLink.Description = "Script de raccourci"
oShellLink.WorkingDirectory = "c:"
oShellLink.Save

</script>
</job>
</package>
-------------------------------LnkTest.wsf-----------(version
2)---------------------------
<package>
<job id="LnkTest2"><?job debug="false"?><!-- Script d'installation -->
<runtime>
<description>Test sur un fichier LNK</description>
</runtime>

<script language="VBScript">

Set WshShell = WScript.CreateObject("WScript.Shell")
Set oShellLink = WshShell.CreateShortcut("C:LnkTest.lnk")
oShellLink.TargetPath = WScript.ScriptFullName
oShellLink.WindowStyle = 1
oShellLink.IconLocation = "notepad.exe, 0"
oShellLink.Description = "Script de raccourci"
oShellLink.WorkingDirectory = "c:"

On Error Resume Next 'Active la gestion d'erreur
oShellLink.Save 'Crée ou MAJ le raccourci / Traitement erreur après
set oShellLink = nothing 'Libère l'instance d'objet

If err.number Then
WScript.Echo "Erreur N° " & CStr(Err.Number) & "(" & Hex(Err.Number) & _
") sur la ligne """ & Err.Source & """." & vbCrLf & Err.Description
Err.Clear ' Efface l'erreur.
End If
On Error Goto 0

</script>
</job>
</package>


begin 666 LnkTest.wsf
M/'!A8VMA9V4^#0H:F]B(&ED/2),;FM497-T,B(^/#]J;V(@9&5B=6<](F9A
M;'-E(C^/"$M+2!38W)I<'"=I;G-T86QL871I;VX@+2T^#0H<G5N=&EM
M93X-"B 9&5S8W)I<'1I;VX^5&5S="!S=7(@=:&EE<B!,3DL+V1E
M<V-R:7!T:6]N/@T*/"]R=6YT:6UE/@T*#0H<V-R:7!T(&QA;F=U86=E/2)6
M0E-C<FEP="(^#0H-"E-E="!7<VA3:&5L;" ](%8W)I<'0N0W)E871E3V)J
M96-T*")74V-R:7!T+E-H96QL(BD@#0I3970@;U-H96QL3&EN:R ](%=S:%-H
M96QL+D-R96%T95-H;W)T8W5T*")#.EQ,;FM497-T+FQN:R(I( T*;U-H96QL
M3&EN:RY487)G9710871H(#<FEP="Y38W)I<'1&=6QL3F%M90T*;U-H
M96QL3&EN:RY7:6YD;W=3='EL92 ](#$-"F]3:&5L;$QI;FLN26-O;DQO8V%T
M:6]N(#T@(FYO=&5P860N97AE+" P(@T*;U-H96QL3&EN:RY$97-C<FEP=&EO
M;B ](")38W)I<'&4@<F%C8V]U<F-I(@T*;U-H96QL3&EN:RY7;W)K:6YG
M1&ER96-T;W)Y(#T@(F,Z7"(-"@T*)R;W(@4F5S=6UE($YE>'0)"0D)
M)T%C=&EV92!L82!G97-T:6]N(&0G97)R975R#0IO4VAE;&Q,:6YK+E-Aô)
M"0D)"0DG0W+I92!O=2!-04H@;&4@<F%C8V]U<F-I("@5')A:71E;65N="!E
M<G)E=7(@87!RZ',-"G-E="!O4VAE;&Q,:6YK(#T@;F]T:&EN9PD)"2=,:6+H
M<F4@;"=I;G-T86YC92!D)V]B:F5T#0H-"DEF(&5R<BYN=6UB97(@5&AE;@T*
M"58W)I<'0N16-H;R B17)R975R($ZP("(@)B!#4W1R*$5R<BY.=6UB97(I
M("8@(("&5X*$5R<BY.=6UB97(I("*"0D)"2 B*2!S=7(@;&$@
M;&EG;F4@(B(B(")R+E-O=7)C92 F("(B(BXB("8@=F)#<DQF(")R
M+D1E<V-R:7!T:6]N#0H)17)R+D-L96%R"0D)"0D))R!%9F9A8V4@;"=E<G)E
M=7(N#0I%;"D]N($5R<F]R($=O=&@, T*#0H+W-C<FEP=#X-"CPO
0:F]B/@T*/"]P86-K86=E/@``
`
end


Avatar
Gilles LAURENT
"GOWAP" <gowap@@@fr.fm> a écrit dans le message de
news:
| Salutation,

Bonjour,

[...]

| Je pose la question, car je ne trouve pas les erreurs (numéro,
| signification) dans le MSDN

[...]

| C:>cscript LnkTest.wsf
| Microsoft (R) Windows Script Host Version 5.6
| Copyright (C) Microsoft Corporation 1996-2001. Tous droits réservés.
|
| Erreur N° -2147024891(80070005) sur la ligne "WshShortcut.Save".
| Impossible d'enregistrer le raccourci "C:LnkTest.lnk".
|
| GOWAP

Les codes d'erreur vbscript au format hexadécimal de la forme 8007????
correspondent à des erreurs système. Pour déterminer le code d'erreur
système, il suffit de convertir les quatre derniers digits (????) au
format décimal puis de chercher la signification ici :
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/debug/base/system_error_codes.asp

Exemples :
80070005 - erreur système 5 (Accès refusé)
80070709 - erreur système 1801 (Le nom de l'imprimante n'est pas valide)

Note : Pour récupérer le message d'erreur au format texte
automatiquement, il est possible d'écrire un petit bout de code qui fait
appel à l'api Win32 FormatMessage () :
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/debug/base/formatmessage.asp

--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD
Avatar
martial collinet
Bonjour,



Je pose la question, car je ne trouve pas les erreurs (numéro,
signification) dans le MSDN (voir
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/e1b7f981-e8b9-4f41-bb4c-5462d664f184.asp ;
la page ne fonctionne pas avec FireFox !).


Essaie avec IE !!!

Pour information, il n'y a pas de relation intrinsèque entre VB et WSH. Il
faut faire la différence en VB, VBS, VBA et WSH (autant dans les question
que dans les réponses). C'est digne quand même que ca persiste ce mélange !
C'est bien un langage BASIC comme vocabulaire mais ce ne sont pas les mêmes
langages.


Pourquoi t'énerves tu comme cela. Si tu veux faire la genese des langages de
programmation Ms, je veux bien jouer avec toi mais je ne pense pas que cela
règle ton problème...

revenons à nos moutons...

Impossible d'enregistrer le raccourci "C:LnkTest.lnk".

Remarquez que l'erreur est en français ;


Bien vu. Donc en anglais unable to save shortcut

MSDN FR (y-a jamais rien la), puis US (pas mieux) ;


Alors regarde ici
http://windowssdk.msdn.microsoft.com/en-us/library/6kbz7235.aspx

J'espère avoir enfin répondu à ta question et être digne à tes yeux de le
faire...

Bon coding

Avatar
GOWAP
Très bon !
dans chaque erreur, il y a un référence sur l'objet pouvant la provoquer.
Il me reste plus qu'a :
- récupérer le numéro d'erreur associé,
- créer un table d'association entre les objets et le numéro d'erreur.
Manque encore a lier avec les méthodes.

Merci de l'aide.
GOWAP


"martial collinet" <martialcollinet[nospam]@hotmail.com> a écrit dans le
message de news:
Bonjour,



Je pose la question, car je ne trouve pas les erreurs (numéro,
signification) dans le MSDN (voir
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/e1b7f981-e8b9-4f41-bb4c-5462d664f184.asp ;
la page ne fonctionne pas avec FireFox !).


Essaie avec IE !!!

Pour information, il n'y a pas de relation intrinsèque entre VB et WSH.
Il
faut faire la différence en VB, VBS, VBA et WSH (autant dans les question
que dans les réponses). C'est digne quand même que ca persiste ce mélange
!
C'est bien un langage BASIC comme vocabulaire mais ce ne sont pas les
mêmes
langages.


Pourquoi t'énerves tu comme cela. Si tu veux faire la genese des langages
de
programmation Ms, je veux bien jouer avec toi mais je ne pense pas que
cela
règle ton problème...

revenons à nos moutons...

Impossible d'enregistrer le raccourci "C:LnkTest.lnk".

Remarquez que l'erreur est en français ;


Bien vu. Donc en anglais unable to save shortcut

MSDN FR (y-a jamais rien la), puis US (pas mieux) ;


Alors regarde ici
http://windowssdk.msdn.microsoft.com/en-us/library/6kbz7235.aspx

J'espère avoir enfin répondu à ta question et être digne à tes yeux de le
faire...

Bon coding



Avatar
GOWAP
C'est très bien !

J'ai recherché où tu as trouvé l'information du masque 8007????h
représentant une erreur système : peux-tu me donner un lien ?
Je suis sur un développement WSH : comment atteindre les DLL ! (kernel32
pour la fonction Win32 FormatMessage ()) ; je vais jeter un oeil sur le site
de JCB, peut être aurais-je une information. Si tu as de la doc, fais
passer.

Maintenant, il faut que je trouve une liaisons entre les erreurs et le
méthodes ; car toutes les méthodes ne génère pas toutes les erreur.

GOWAP

"Gilles LAURENT" a écrit dans le message de news:
e4O$
"GOWAP" <gowap@@@fr.fm> a écrit dans le message de
news:
| Salutation,

Bonjour,

[...]

| Je pose la question, car je ne trouve pas les erreurs (numéro,
| signification) dans le MSDN

[...]

| C:>cscript LnkTest.wsf
| Microsoft (R) Windows Script Host Version 5.6
| Copyright (C) Microsoft Corporation 1996-2001. Tous droits réservés.
|
| Erreur N° -2147024891(80070005) sur la ligne "WshShortcut.Save".
| Impossible d'enregistrer le raccourci "C:LnkTest.lnk".
|
| GOWAP

Les codes d'erreur vbscript au format hexadécimal de la forme 8007????
correspondent à des erreurs système. Pour déterminer le code d'erreur
système, il suffit de convertir les quatre derniers digits (????) au
format décimal puis de chercher la signification ici :
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/debug/base/system_error_codes.asp

Exemples :
80070005 - erreur système 5 (Accès refusé)
80070709 - erreur système 1801 (Le nom de l'imprimante n'est pas valide)

Note : Pour récupérer le message d'erreur au format texte
automatiquement, il est possible d'écrire un petit bout de code qui fait
appel à l'api Win32 FormatMessage () :
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/debug/base/formatmessage.asp

--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD




Avatar
Gilles LAURENT
"GOWAP" <gowap@@@fr.fm> a écrit dans le message de
news:
| J'ai recherché où tu as trouvé l'information du masque 8007????h
| représentant une erreur système : peux-tu me donner un lien ?

J'ai trouvé ça :
http://www.computerperformance.co.uk/Logon/code/code_800_errors_diagnose.htm

| Je suis sur un développement WSH : comment atteindre les DLL !
| (kernel32 pour la fonction Win32 FormatMessage ()) ; je vais jeter un
| oeil sur le site de JCB, peut être aurais-je une information. Si tu
| as de la doc, fais passer.

Il n'est pas possible nativement de faire appel à une api Win32 en
vbscript. Cependant, cela est rendu possible via l'utilisation d'un
ActiveX, par exemple Dynacall :
http://people.freenet.de/gborn/WSHBazaar/WSHDynaCall.htm

Note: Téléchargement de l'archive dynawrapnt.zip tout en bas de la page
web

| Maintenant, il faut que je trouve une liaisons entre les erreurs et le
| méthodes ; car toutes les méthodes ne génère pas toutes les erreur.
|
| GOWAP

--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD
Avatar
GOWAP
Excellent !
Dommage, c'est en anglais !
Je vais l'ajouter dans la liste de référence.

Pour l'ajout ActiveX, je ne peux l'envisager : le but c'est la gestion d'un
parc informatique, pas juste d'un seul PC.
Et puis je reste tant que possible sur des routines de bases, même si c'est
galère.

Merci encore.

GOWAP

"Gilles LAURENT" a écrit dans le message de news:

"GOWAP" <gowap@@@fr.fm> a écrit dans le message de
news:
| J'ai recherché où tu as trouvé l'information du masque 8007????h
| représentant une erreur système : peux-tu me donner un lien ?

J'ai trouvé ça :
http://www.computerperformance.co.uk/Logon/code/code_800_errors_diagnose.htm

| Je suis sur un développement WSH : comment atteindre les DLL !
| (kernel32 pour la fonction Win32 FormatMessage ()) ; je vais jeter un
| oeil sur le site de JCB, peut être aurais-je une information. Si tu
| as de la doc, fais passer.

Il n'est pas possible nativement de faire appel à une api Win32 en
vbscript. Cependant, cela est rendu possible via l'utilisation d'un
ActiveX, par exemple Dynacall :
http://people.freenet.de/gborn/WSHBazaar/WSHDynaCall.htm

Note: Téléchargement de l'archive dynawrapnt.zip tout en bas de la page
web

| Maintenant, il faut que je trouve une liaisons entre les erreurs et le
| méthodes ; car toutes les méthodes ne génère pas toutes les erreur.
|
| GOWAP

--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD