IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

script pour choisir imprimante


Sujet :

VBScript

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mai 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 7
    Par défaut script pour choisir imprimante
    Bonjour à tous,
    je voudrais créer un script qui lorsque l'utilisateur imprime avec son imprimante par défaut et que celle ci n'est pas disponible, une liste déroulante s'affiche(avec les imprimantes disponible) et qu'il puisse sélectionner son imprimante...
    Est ce possible?

  2. #2
    Nouveau membre du Club
    Inscrit en
    Mai 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 7
    Par défaut
    voyez vous mon erreur.? ça me donne " objet requis " à la ligne objstatus.statuscode, colonne 0 .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    Option Explicit
    Dim objPing,objstatus, objWMIService, colInstalledPrinters, objPrinter, net,Serveur
    Set net = CreateObject("WScript.Network")
     
    'PING DU SERVEUR
    Set objPing = GetObject("winmgmts:{impersonationLevel=impersonate}!\\").ExecQuery("select * from Win32_PingStatus where address ='serveur236'")
     
    If objStatus.Statuscode <> 0 Then
            'Si le ping ne répond pas
                    'Rassemble toutes les imprimantes dans colInstalledPrinters
     
                    Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
     
                   Set colInstalledPrinters = objWMIService.execQuery("Select * from Win32_Printer")
                    'Use the reference variable to add some items to the listbox
                    For Each objPrinter In colInstalledPrinters
                                  if Transform(loPrinter.Default) then
                                  msgbox objPrinter.name
                                  end If
                    Next
     
     
     
            'net.SetDefaultPrinter "\\serveur241\"
    End If

  3. #3
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 302
    Par défaut
    salut,
    un copié/collé un peu distrait sans doute...
    compare avec ce script: http://www.developpez.net/forums/d20...-reponse-ping/
    il te manque la boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For Each objStatus in objPing
    ...
    Next
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  4. #4
    Nouveau membre du Club
    Inscrit en
    Mai 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 7
    Par défaut
    ah mince dsl, j'ai pas mis en encode ...
    c'était bien ça en effet...J'ai pas du tout enregistrer mercredi soir ...du coup un peu de mal a m'y remettre..
    à " if transform...." il me met "objet requis "encore...

  5. #5
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    en effet et c'est quoi Transform ?
    Une fonction ?
    On peut avoir le code ?

  6. #6
    Nouveau membre du Club
    Inscrit en
    Mai 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 7
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    Option Explicit
    Dim oFrm, objPing,objstatus, objWMIService, colInstalledPrinters, objPrinter, net,Serveur, loprinter, resultat
    Set net = CreateObject("WScript.Network")
     
    'PING DU SERVEUR
     
    Set objPing = GetObject("winmgmts:{impersonationLevel=impersonate}!\\").ExecQuery("select * from Win32_PingStatus where address ='serveur236'")
     
    If objStatus = 0 Then
     
     
            'Si le ping ne répond pas
                    'Rassemble toutes les imprimantes dans colInstalledPrinters
                    Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
     
                    Set colInstalledPrinters = objWMIService.execQuery("Select * from Win32_Printer")
     
                    'Use the reference variable to add some items to the listbox
     
                   For Each objPrinter In colInstalledPrinters
                         Resultat = Resultat & "Nom: " & objPrinter.Name & " active : " _
        & objPrinter.Default & vbLf
     
                        'if Transform(loPrinter.Default) then
                           msgbox resultat
                         ' end If
                    Next
     
     
           ' net.SetDefaultPrinter "\\serveur241\"
    End If


    je ne sais pu ce que c'est le transform. Mon but est faire un ping sur le serveur 236, si celui ci ne marche pas j'ai une liste d'imprimante qui s'affiche avec l'autre serveur cad " \\serveur241\....." puis je sélectionne celle que je souhaite.
    Ici, une fenetre s'ouvre pour afficher une imprimante, puis 2 puis enfin 3 , mais je ne peux pas sélectionner...

  7. #7
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 130
    Par défaut
    msgbox affiche une information pour l'utilisateur
    inputbox demande une information à l'utilisateur
    Motif de l'edit:
    Un petit exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    dim Rep
    rep = inputbox("d'accord")
    if rep <> "" then
      msgbox rep
      else
      msgbox "pas de reponse ou bien le bouton Annuler a été utilisé"
    end if
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  8. #8
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Transform est certainement une fonction que tu (ou quelqu'un d'autre vraissemblablement) a crée.
    Si ton script ne comporte pas cette fonction, tu ne peux pas l'utiliser.

    Où as tu récupérer ce script ?


    En plus de la piste que t'a donné ProgElecT, je t'aide en te disant qu'il faudra certainement dans ta boucle réutiliser le code qui te permet de faire le ping.
    Le mieux serait de te faire une fonction Ping qui prends en paramètre une adresse de serveur.

  9. #9
    Nouveau membre du Club
    Inscrit en
    Mai 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 7
    Par défaut
    le " inputbox" n'était pas la solution

    cependant
    j'arrive à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    Option Explicit
    Dim oDlg, oFrm, oCtl, objWMIService, colInstalledPrinters, Wscript
    Dim objPrinter, net, objPing, objStatus, Resultat, Serveur
    Set net = CreateObject("WScript.Network")
     
    'PING DU SERVEUR
    Set objPing = GetObject("winmgmts:{impersonationLevel=impersonate}!\\").ExecQuery("select * from Win32_PingStatus where address ='serveur236'")
     
            For Each objstatus in objping
     
                    If objStatus.statuscode = 1 Then
                             msgbox (objStatus.Statuscode)
                            msgbox ("TEST OK")
                    else
                            msgbox (objStatus.StatusCode)
                             msgbox ("TEST NOK")
     
                    'Si le ping ne répond pas
                    'Rassemble toutes les imprimantes dans colInstalledPrinters
     
                              Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
                              Set colInstalledPrinters = objWMIService.execQuery("Select * from Win32_Printer")
     
     
                    'Create the WshDialog.Kit object and store a reference in oDlg
     
                               Set oDlg = Wscript.CreateObject("WshDialog.Kit", "oDlg_")
     
                    'Add a new form and store a reference to it in the variable oFrm
     
                               Set oFrm = oDlg.NewForm("Sample")
     
                    'Add a listbox control named LBX1 to the oFrm form
                    'and store a reference to the control in the variable oCtl
     
                               Set oCtl = oFrm.NewListBox("LBX1", 150, 150, 5000, 1000)
     
                    'Use the reference variable to add some items to the listbox
     
                             For Each objPrinter In colInstalledPrinters
                                    if InStr(1, objPrinter.Name, "\\serveur236\") = 0 then
                                    oCtl.AddItem objPrinter.Name
                                     End If
                             Next
     
                    'Sélectionner par défault la première imprimante
                     oCtl.ListIndex = 0
     
                    'Add an OK button and set it's Default property
                    Set oCtl = oFrm.NewButton("OK", 900, 1250, 1000, 375, "&OK")
                    oCtl.Default = True
     
                    'Automatically size the form and show it (modally)
                    oFrm.Autosize
                    oFrm.Show 1
     
                    'Définir l'imprimante selectionnée par défault
                            If oDlg.Clicked = "OK" Then
                            net.SetDefaultPrinter oFrm.Ctl("LBX1")
                             end if
     
                    end if
            Next
    il me met encore...." objet requis " pour "Set oDlg = Wscript.CreateObject("WshDialog.Kit", "oDlg_")"
    idem pour les autres " Set...."

  10. #10
    Nouveau membre du Club
    Inscrit en
    Mai 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 7
    Par défaut
    merci pour tous,ça fonctionne.
    cependant j'aimerais une dernière petite chose, c'est que ce script se lance après l'échec d'une impression ou avant l'impression . comment faire?

  11. #11
    Nouveau membre du Club
    Inscrit en
    Mai 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 7
    Par défaut
    besoin d'aide s'il vous plait !

  12. #12
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Citation Envoyé par guizmo35 Voir le message
    besoin d'aide s'il vous plait !
    On s'en doute sinon tu ne serais pas ici.
    Si on n'a pas répondu c'est que soit on ne sait pas, soit on n'a pas encore eu le temps de voir ton message.
    Perso je viens de le voir seulement maintenant et je ne connais pas la réponse.

Discussions similaires

  1. Besoin d'aide : Script pour renommer imprimante par défaut
    Par ryohazuki100 dans le forum Scripts/Batch
    Réponses: 0
    Dernier message: 01/08/2013, 10h37
  2. Script pour choisir le dernier fichier en date
    Par dupdup dans le forum Langage
    Réponses: 6
    Dernier message: 09/08/2010, 13h50
  3. Réponses: 6
    Dernier message: 22/09/2008, 14h07
  4. Script pour choisir un Date Time
    Par arnaudperfect dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 07/08/2008, 10h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo