Choisir imprimante pour impression

Résolu
cs_ISoKa Messages postés 435 Date d'inscription jeudi 27 avril 2006 Statut Membre Dernière intervention 17 octobre 2008 - 25 juil. 2007 à 01:11
cs_ISoKa Messages postés 435 Date d'inscription jeudi 27 avril 2006 Statut Membre Dernière intervention 17 octobre 2008 - 25 juil. 2007 à 04:47
Bonjour,
Pour un projet MIRC que je suis en train de faire je me pose une question, j'ai plusieurs imprimantes branchées à mon pc. et en faite j'aimerai en fonction de l'impression que j'ai à faire choisir une imprimante plutot que l'autre. quelqu'un aurait une idée pour ca ?
merci d'avance : )

ISoKa

6 réponses

cs_wims Messages postés 2466 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 1 août 2010 1
25 juil. 2007 à 04:38
Bon ! comme c'est une demande pas banal et que ça requiert d'autre connaissance que les on text, j'me suis penché sur le truc, et j'ai réussis :

NOTE : le code est a titre indicatif.

alias print {
  .comopen Process WbemScripting.SWbemLocator
; bon j'suis pas expert en objet com, j'ai chopé les infos a droite a gauche
;cette premiere cmd ouvre l'objet WbemScripting.SWbemLocator
  noop $com(Process,ConnectServer,3, dispatch* Win32_Printer)
;celle là fait qu'on apelle se connect au "truc" et qu'on déplace le tout sur le nom Win32_printer
 noop $com(Win32_Printer, ExecQuery,3,string,Select * from  Win32_Printer,dispatch* Win32_Process_Result)
;celle là appelle l'objet win32_Printer et déplace le tout sur
; win32_printer_result
  var %a = $comval(Win32_Process_Result,0)
;ici on récupere le nombre de truc et on boucle pour récupéré
  while (%a) {
    ;ici name est un nom, qui peux prendre beaucoup d'autre valeur
    ;c'est ce qui permet de récupéré ce que tu veux sur l'imprimante
    ;name est son nom ^^
    echo -a > $comval(Win32_Process_Result,%a,name)
    ;bon comme j'fesais des test je l'affichais.
    if ($comval(Win32_Process_Result,%a,name) == AGFA-AccuSet v52.3) {
      ;ici AGFA... étais une fausse imprimante que j'ai crée pour testé.
      noop $comval(Win32_Process_Result,%a,SetDefaultPrinter)
      ;cette derniere command permet de rendre cette imprimante celle
      ; par défaut
    }
     ;on décrémente pour boucler
    dec %a
  }
  if ($com(process)) .comclose process
  if ($com(win32_Printer)) .comclose win32_Printer
  if ($com(win32_Process_Result)) .comclose Win32_Process_Result
}

J'espere que les commentaires passeront bien et qu'ils te suffiront (il est 4h32 quand même).

http://msdn2.microsoft.com/en-us/library/Aa394363.aspx

Sur ce lien tu trouveras ce dont je me suis aidé et notamment tout les "propriété que tu peux mettre pour récup des infos (si elle est local, si c'est celle par defaut etc), (a remplacé par le name) ainsi que toute les "actions" possible (a remplacer par SetDefaultPrinter)
Sur le site, les Method corresponde au "action"

Ton post prouve encore la puissance méconnus des objets com x)

Hesite pas si ta des questions =)
3
cs_wims Messages postés 2466 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 1 août 2010 1
25 juil. 2007 à 01:16
Surement avec une dll.Sans, ça peut peut etre se faire avec les object com, je sais cmt imprimé directement avec mirc, mais choisir l'imprimante, ya peux etre moyen :)
j'vais essayé de cherché.
0
cs_ISoKa Messages postés 435 Date d'inscription jeudi 27 avril 2006 Statut Membre Dernière intervention 17 octobre 2008
25 juil. 2007 à 02:01
meci c'est gentil, moi j'avai essayé de matté par des commandes dos mais j'ai rien vu de concluant.

ISoKa
0
cs_wims Messages postés 2466 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 1 août 2010 1
25 juil. 2007 à 02:14
Bon en cherchant un peu, c'est carrement faisable, là j'arrive déja a récupéré le nom de l'imprimante, je peux savoir si c'est celle par défaut etc etc, j'ai vu qu'on pouvais modifié tout ce qu'on voulais, je verrais si j'y arrive, ce que j'ai déja fait :

alias print {
  .comopen Process WbemScripting.SWbemLocator
  noop $com(Process,ConnectServer,3, dispatch* Win32_Printer)
  noop $com(Win32_Printer, ExecQuery,3,string,Select * from Win32_Printer,dispatch* Win32_Process_Result)
  var %a = $comval(Win32_Process_Result,0)
  while (%a) {
    echo -a $comval(Win32_Process_Result,%a,Name) {
      dec %a
    }
    .comclose process
    .comclose win32_printer
    .comclose Win32_Process_Result
  }
}

/print est CENSÉ te retourné chaque imprimante en echo, je n'ai qu'une imprimante donc je n'ai testé que sur une, j'aimerai beaucoup que tu me dise si (apparement tu en as plusieur) chez toi ça retourne bien plusieur nom..
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_wims Messages postés 2466 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 1 août 2010 1
25 juil. 2007 à 04:42
Ah oui un truc : il est possible que ça fonctionne que sous winxp ou vista, a testé pour les version anterieur
0
cs_ISoKa Messages postés 435 Date d'inscription jeudi 27 avril 2006 Statut Membre Dernière intervention 17 octobre 2008
25 juil. 2007 à 04:47
Nickel tout ca, en faite je n'ai pas encore l'imprimante, mais je la recoi la sem pro. Pour tout te dire je devellope un programme de gestion de caisse/ gestion commerciale pour le magasin ou je taff et on c'est décidé à faire des tickets de caisse dc je recoi l'imprimante à ticket de caisse bientot et j'essai d'avancer un max avant. donc voila, je matte ca de mon coté pour décortiquer tt ca (j'ai jamais toucher les objet com x) ) et je te tiens au courant :)
merci encore.

ISoKa
0