[VBS] Erreur lancement script VBS

Erreur lancement script VBS [VBS] - VB/VBA/VBS - Programmation

Marsh Posté le 10-06-2013 à 16:08:51    

Bonjour à tous,
 
 
Je rencontre le problème suivant :
Lorsque je double clique sur mon script VBS, qui execute la commande suivante :     VarCmd.Run "PRINTUI.EXE /Sr /n " & """" & NomIMP & """" & " /a " &_
    """" & Chemin &  NomSite & "_"& TypeOS &".dat"& """",,TRUE
J'ai une erreur "impossible de terminer cette opération (erreur 0x0000000c";).
 
En revanche, si je passe par Notepad++ (paramétré pour lancer les scripts VBS directement via l'application), je n'ai pas d'erreur.
 
Le script se lance bien sur un poste XP mais plante sur mon Windows 7 64bit.
J'ai tenté de passer par "cmd" en mode Administrateur mais j'ai la même erreur.
Avez-vous une idée?
 
Merci d'avance pour votre aide.


Message édité par roloulou63 le 10-06-2013 à 20:57:38
Reply

Marsh Posté le 10-06-2013 à 16:08:51   

Reply

Marsh Posté le 10-06-2013 à 16:15:09    

Après y avoir passer toute une après-midi, j'ai trouvé :  
Voici ma correction :
If TypeOS = "64" Then
  VarCmd.Run "C:WindowsSysWOW64PRINTUI.EXE /Sr /n " & """" & NomIMP & """" & " /a " &_
  """" & Chemin &  NomSite & "_"& TypeOS &".dat"& """",,TRUE
 Else
  VarCmd.Run "PRINTUI.EXE /Sr /n " & """" & NomIMP & """" & " /a " &_
  """" & Chemin &  NomSite & "_"& TypeOS &".dat"& """",,TRUE
 End If
 
On est obligé de spécifier le répertoire SysWOW64 pour un poste 64bit.
Il y a-t'il une astuce pour le spécifier directement dans le script?


Message édité par roloulou63 le 10-06-2013 à 16:18:50
Reply

Marsh Posté le 10-06-2013 à 17:33:35    

 
           Bonjour,
 
           cela m"étonnerait tel qu'écrit le code fonctionne …   Merci aussi d'utiliser l'icône prévue pour le code.
 
           Sinon comme tu l'as déjà spécifié dans le script, je ne vois pas où tu veux en venir ?
           A part utiliser une variable d'environnement ou modifier le PATH système …
 
           Bref, chienlit en VBS et si facile en commande DOS !
 

Reply

Marsh Posté le 10-06-2013 à 20:54:28    

Bonjour,
 
Mon script dans sa globalité :  
''----------------------------------------------''
''----------------------------------------------''
''      Script d'installation d'imprimantes     ''
''----------------------------------------------''
''----------------------------------------------''
 
REM -----------------Options lié aux variables et erreurs-----------------
 'Verrouillage des variables'
 Option Explicit
 'Gestion des erreurs : Ne s'arrete pas lorsqu'il rencontre une erreur'
 'On Error Resume Next
 
REM -----------------Déclaration des variables-----------------
 Dim NomPC,objWMIService, ObjProcess, TypeOS, NomIMP, NomSite, Chemin, VarCmd, ObjFSO
 
REM -----------------Initialisation des variables-----------------
 'La variable NomPC reçoit le nom du PC
 NomPC = "."
 'J'instancie la variable ObjWMIService permettant d'accéder à la bibliothèque
 'des services
 Set ObjWMIService = GetObject("winmgmts:\\" & NomPC & "\root\cimv2" )
 'J'instancie la variable ObjProcess permettant de connaitre les infos sur le processeur
 Set ObjProcess = objWMIService.Get("win32_Processor='CPU0'" )
 'La variable TypeOS récupère le type d'architecture du processeur (x86 ou x64)
 TypeOS=ObjProcess.AddressWidth
 'J'instancie la variable VarCmd par l'objet Shell
 Set VarCmd = WScript.CreateObject( "WScript.Shell" )
 'J'instancie la variable VarCmd par l'objet FileSystemObject
 Set ObjFSO = CreateObject("Scripting.FileSystemObject" )
 'Nom de l'imprimante
 NomIMP = Inputbox("Merci de saisir le nom de l'imprimante","SAISIE NOM IMPRIMANTE","PRTXX" )
 'Nom du site'
 NomSite = Inputbox("Merci de saisir le nom du site","SAISIE NOM SITE","XX" )
 'Chemin des drivers de l'imprimante
 Chemin = ObjFSO.GetParentFolderName(Wscript.ScriptFullName)&"\"
  'TIMEOUT va me permettre de limiter l'affichage pop-up d'information de  
 Const TIMEOUT = 3
 
REM -----------------Début du Script-----------------
 If TypeOS = "64" Then
  VarCmd.Run "C:\Windows\SysWOW64\PRINTUI.EXE /Sr /n " & Chr(34) & NomIMP & Chr(34) & " /a " &_
  Chr(34) & Chemin &  NomSite &".dat" & Chr(34) & " m c",,TRUE
 Else
  VarCmd.Run "RUNDLL32 PRINTUI.DLL,PrintUIEntry /Sr /n " & Chr(34) & NomIMP & Chr(34) & " /a " &_
  Chr(34) & Chemin &  NomSite &".dat" & Chr(34),,TRUE
 End If
 
En gros, si je laisse la commande comme ceci : "RUNDLL32 PRINTUI.DLL,PrintUIEntry' j'ai une erreur sous Win 7 64. Car il va chercher le programme dans system32 ou lieu SysWOW64.  
Un peu quand tu compiles un script Autoit qui te demande si tu veux compiler en 32 ou 64 bits.
 
Mais si c'est pas possible, je laisserai tel quel.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed