Page 1 sur 1
[R] Comment modifier les propriétés d'une imprimante...
Posté : sam. 22 janv. 2011 09:39
par Serge63
Bonjour à tous
Administrateur d'un parc informatique, je dois modifier les propriétés de plusieurs imprimantes (un photocopieur RICOH MP 2851) installées sur des sites géographique différents et distants. Le but est d'activer les accessoires comme le module "recto/verso" ou le module "trieur/agrafeur".
Les utilisateurs des postes de travail n'ont aucun droit d'administration. Je veux donc créer un script qui fonctionnera "en tant que administrateur" (j'ai déjà le code pour cette partie).
Ce qu'il me manque, c'est comment :
- soit ouvrir la fenêtre des propriétés de l'imprimante pour que l'utilisateur active lui même les accessoires.
- soit modifier directement les propriétés de l'imprimante.
Merci d'avance.
Re: [..] Comment modifier les propriétés d'une imprimante...
Posté : sam. 22 janv. 2011 10:50
par jl56
Bonjour,
Dans un de mes scripts j'utilise pour cela rundll32 printui.dll,PrintUIEntry ......
Code : Tout sélectionner
RunWait('rundll32 printui.dll,PrintUIEntry /q /Sr /n "'&$nom_imprimante&'" /a "'&$nomdufichierparametrage&'" 2 7 c d g m u'
exécute cette commande et tu aura toute la syntaxe
rundll32 printui.dll,PrintUIEntry /?
Enregistrer tous les paramètres de l'imprimante dans un fichier :
rundll32 printui.dll,PrintUIEntry /Ss /n "imprimante" /a "fichier.dat"
Enregistrer tous les paramètres de l'imprimante à partir d'un fichier :
rundll32 printui.dll,PrintUIEntry /Sr /n "imprimante" /a "fichier.dat"
A+ JL56
Re: [..] Comment modifier les propriétés d'une imprimante...
Posté : sam. 22 janv. 2011 14:49
par Serge63
@JL56
Merci pour l'astuce, je vais essayer ça tout de suite...
Re: [..] Comment modifier les propriétés d'une imprimante...
Posté : sam. 22 janv. 2011 17:41
par Serge63
j'ai trouvé plusieurs pistes intéressantes :
1) mon script fera afficher la fenêtre des propriétés pour que l'utilisateur modifie lui même les propriétés :
==> pas de soucis pour le faire, mais c'est dangereux car à ce moment là, l'utilisateur a accès à toutes les propriétés et il a tous les droits sur l'imprimante puisque le script est exécuté "en tant que administrateur"...
2) je modifie les propriétés sur une imprimante et je les enregistre dans un fichier pour faire un fichier "par défaut". ensuite, j'inclus ce fichier dans mon script qui restaurera les propriétés pour chaque imprimante
==> pas de soucis pour cela non plus, mais cela va écraser les réglages qui auraient déjà été fait ; or je ne veux modifier que les propriétés qui m'intéressent...
3) mon script enregistre les propriétés de l'imprimante dans un fichier, puis il modifie les propriétés concernées dans ce fichier et enfin, il restaure les nouvelles propriétés de l'imprimante depuis ce fichier.
==> c'est là que je sèche... je sais quelles données seront remplacées et par quoi, mais je ne sais pas comment modifier le fichier.dat
si quelqu'un a une piste, merci d'avance...
ps : j'ajoute en pièce jointe les fichiers qui m'ont servi pour la comparaison et les différences que j'ai trouvé
Re: [..] Comment modifier les propriétés d'une imprimante...
Posté : sam. 22 janv. 2011 18:47
par jl56
Bonsoir,
Cela me semble très hasardeux de modifier le fichier.dat
Je ferais comme ceci ( sous toutes réserve)
Code : Tout sélectionner
$fichier_avant=FileRead("c:\avant.dat")
$1erbloc_avant=FileRead("c:\difference avant 1er bloc.txt");stockez le bloc dans un fichier.txt
$1erbloc_apres=FileRead("c:\difference apres 1er bloc.txt")
StringReplace($fichier_avant,$1erbloc_avant,$1erbloc_apres)
$file = FileOpen("c:\apres.dat", 2)
FileWrite($file,$fichier_avant)
FileClose($file)
Le résultat de vos expériences peu m'être utile tenez moi au courant SVP merci
A+ JL56
Re: [..] Comment modifier les propriétés d'une imprimante...
Posté : dim. 23 janv. 2011 11:40
par Serge63
@JL56
cette solution ne fonctionne pas car le fichier en entrée contient des sauts de ligne différents sur chaque ligne (un coup on trouve @CR, un autre coup on trouve @LF, etc...).
du coup, j'ai fait une adaptation en lisant le fichier en entrée ligne par ligne et j'arrive à créer le fichier de sortie en apportant les modifications que je souhaite par rapport au fichier en entrée.
mais je suis confronté à un dernier soucis :
si je fais un simple FileWrite, il ajoute les lignes les unes à la suite des autres et le fichier n'aura pas le bon formatage
si je fais un FileWriteLine, il ajoute @CRLF à la fin de chaque ligne mais le fichier n'aura toujours pas le bon formatage
est-ce qu'il existe un moyen de savoir quel est le retour à la ligne (ou retour chariot) utilisé quant on lit une ligne dans un fichier ? pour que je puisse choisir entre @CR ou @LF à ajouter à la fin de ma ligne à écrire ?
Re: [R] Comment modifier les propriétés d'une imprimante...
Posté : mer. 26 janv. 2011 17:12
par Serge63
Je laisse tomber cette solution pour l'instant ; je n'arrive pas à trouver comment exploiter la fin de chaque ligne pour savoir si c'est un @LF ou @CR.
En attendant, je me suis rabattu sur la méthode de gestion de fenêtre à coup de "send".
Sujet clos !
Re: [R] Comment modifier les propriétés d'une imprimante...
Posté : mer. 26 janv. 2011 17:28
par TommyDDR
si vous voulez être sur d'avoir soit @LF soit @CR soit @CRLF :
Code : Tout sélectionner
$MonString = StringReplace($MonString, @CRLF, @LF)
$MonString = StringReplace($MonString, @CR, @LF)
$MonString = StringReplace($MonString, @LF, CeQueVousVoulezICI)
Re: [R] Comment modifier les propriétés d'une imprimante...
Posté : mer. 26 janv. 2011 18:44
par Serge63
Merci TommyDDR mais pour ça, je sais déjà faire.
Mon soucis, c'est au moment où on lit une ligne dans le fichier : le charactère de fin de ligne est ignoré par la commande "FileReadLine", donc je ne peux pas le traiter...
Tant pis...
Re: [R] Comment modifier les propriétés d'une imprimante...
Posté : mer. 26 janv. 2011 18:57
par TommyDDR
Faites un FileRead(), cela vous lira tout le fichier, vous appliquez ensuite mon bout de code, vous faites un StringSplit() et vous avez un tableau avec toutes les lignes du fichier.
Re: [R] Comment modifier les propriétés d'une imprimante...
Posté : mer. 26 janv. 2011 19:26
par Serge63
J'ai déjà essayé mais le fichier a un formatage particulier et le traitement ne s'applique qu'au texte avant le premier saut de ligne...

Re: [R] Comment modifier les propriétés d'une imprimante...
Posté : mer. 26 janv. 2011 19:28
par TommyDDR
Pouvez vous poster le fichier ?
Re: [R] Comment modifier les propriétés d'une imprimante...
Posté : mer. 26 janv. 2011 19:39
par Serge63
pas ce soir car il est au boulot
mais si vous avez une imprimante, utilisez la commande suivante :
rundll32 printui.dll,PrintUIEntry /Ss /n "imprimante" /a "fichier.dat"
c'est grace à elle que j'ai généré mon fichier...
Re: [R] Comment modifier les propriétés d'une imprimante...
Posté : mer. 26 janv. 2011 19:44
par TommyDDR
Je post le mien, dites moi si le votre y ressemble (ouvrez le avec SciTE).
Re: [R] Comment modifier les propriétés d'une imprimante...
Posté : mer. 26 janv. 2011 19:46
par Serge63
oui c'est bien le meme format de fichier
Re: [R] Comment modifier les propriétés d'une imprimante...
Posté : mer. 26 janv. 2011 19:56
par TommyDDR
Ok donc ca n'est pas du "texte basique" il faut donc ouvrir le fichier en binaire
ensuite vous lisez la totalité du fichier
puis vous convertissez en String
Vous coupez (mon code plus haut)
et vous voila avec votre tableau remplie
Attention : Si vous tentez de faire des MsgBox ou autre, le message s'arretera au 1er NULL qu'il rencontrera (NULL = fin de chaine de caractere)
Ce n'est pas pour autant que vos variables sont vides.
Idem si vous écrivez dans un fichier.
Si vous devez écrire dans un fichier :
Retransformez en binaire, ouvrez le fichier en binaire et écrivez dedent.
► Afficher le texte
Code : Tout sélectionner
$File = FileOpen("Fichier.dat", 16)
$Contenu = FileRead($File)
FileClose($File)
$Contenu = StringReplace($Contenu , @CRLF, @LF)
$Contenu = StringReplace($Contenu , @CR, @LF)
; Ici tous vos retour à la ligne seront des @LF
$Tableau = StringSplit($Contenu, @LF)
; Votre traitement ici
$File = FileOpen("Fichier2.dat", 16+2)
For $i = 1 To $Tableau[0]
FileWrite($File, $Tableau[$i])
Next
FileClose($File)
Re: [R] Comment modifier les propriétés d'une imprimante...
Posté : mer. 26 janv. 2011 21:23
par Serge63
merci pour l'aide, j'essaierai ça quand je reprendrai le boulot...