' ---------------------------------------------------------- ' Définition de l'imprimante par défaut en ligne de commande ' syntaxe : ' defprint.vbs | ' exemples : ' defprint.vbs LPT1: ' defprint.vbs 130.98.34.84: ' defprint.vbs "Acrobat PDFWriter" ' Si on ne passe aucun paramètres, la liste des ports et noms ' des imprimantes disponibles s'affiche ' 'JC BELLAMY © 2002 ' ---------------------------------------------------------- Dim Net, CollPrinters,args, fso,Shell Set fso=WScript.CreateObject("Scripting.FileSystemObject") Set Net=CreateObject("Wscript.NetWork") Set Shell=Wscript.CreateObject("WScript.Shell") Set args=Wscript.Arguments testhost true Set CollPrinters=Net.EnumPrinterConnections Nobj=CollPrinters.count NPrinters=Nobj/2 Dim port(),name() Redim port(NPrinters),name(NPrinters) lmaxP=0 lmaxN=0 for index=0 to NPrinters-1 Port(index)=CollPrinters(2*index) Name(index)=CollPrinters(2*index+1) l=len(Name(index)) If lmaxN | " & VBCRLF mess=mess & "Exemples :" & VBCRLF mess=mess & " defprint.vbs LPT1:" & VBCRLF mess=mess & " defprint.vbs 130.98.34.84:" & VBCRLF mess=mess & " defprint.vbs ""Acrobat PDFWriter""" & VBCRLF mess=mess & "Si on ne passe aucun paramètre, la liste des ports" & VBCRLF mess=mess & "et noms des imprimantes disponibles s'affiche" & VBCRLF wscript.echo mess wscript.quit End If found=false For index = 0 To NPrinters-1 if (LCase(Port(index))=defPrinter) or (Lcase(Name(index))=Defprinter) then found=true exit for end if Next if not found then wscript.echo "Imprimante " & Defprinter & " non trouvée!" wscript.quit end if Net.SetDefaultPrinter Name(index) wscript.echo Name(index) & " (sur " & Port(index) & ") définie comme imprimante par défaut" wscript.quit '-------------------------------------------------------------------- 'Sous-programme de test du moteur 'Vu les sorties générées, c'est CSCRIPT (et non pas WSCRIPT) 'qui doit être utilisé de préférence Sub TestHost(force) dim rep strappli=lcase(Wscript.ScriptFullName) strFullName =lcase(WScript.FullName) i=InStr(1,strFullName,".exe",1) j=InStrRev(strFullName,"\",i,1) strCommand=Mid(strFullName,j+1,i-j-1) if strCommand<>"cscript" then If force then Init="Ce script doit être lancé avec CSCRIPT" Else Init="Il est préférable de lancer ce script avec CSCRIPT" End If rep=MsgBox(Init & VBCRLF & _ "Cela peut être rendu permanent avec la commande" & VBCRLF & _ "cscript //H:CScript //S /Nologo" & VBCRLF & _ "Voulez-vous que ce soit fait automatiquement?", _ vbYesNo + vbQuestion,strappli) if rep=vbYes then nomcmd="setscript.bat" Set ficcmd = fso.CreateTextFile(nomcmd) ficcmd.writeline "@echo off" ficcmd.writeline "cscript //H:CScript //S /Nologo" ficcmd.writeline "pause" params="" For i = 0 To nbargs-1 params=params & " " & args(i) next ficcmd.writeline chr(34) & strappli & chr(34) & params ficcmd.writeline "pause" ficcmd.close shell.Run nomcmd, SW_SHOWNORMAL,true force=true end if If force then WScript.Quit end if end sub '-------------------------------------------------------------------- Function FormatStr(ch,lmax) l=len(ch) If l