Récupérer l'état d'un imprimante en VB.NET

cs_jonathann Messages postés 5 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 8 novembre 2006 - 5 nov. 2006 à 20:26
elmj3our Messages postés 2 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 29 avril 2008 - 29 avril 2008 à 23:58
Bonjour,

J'aimerais récupérer l'état d'une imprimante, savoir si elle est ou non connectée à l'ordinateur mais je ne sais pas du tout comment faire.
Faut-il utiliser la classe PrintSetting? et si oui comment faire?
Je n'ai pas réussi le faire moi même et je n'ai pas réussi non plus à trouver l'info sur ce forum mais j'ai peut etre mal cherché.

Je vous remerci de votre aide.

9 réponses

cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
6 nov. 2006 à 00:56
Salut, dans le principe il faut créer un objet imprimmante, puis récupérer les paramètres de l'imprimmante désisrer, peut-être via system.reflection ou un truc de ce genre.

Chris...
Web : Firstruner
0
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
6 nov. 2006 à 13:23
0
cs_jonathann Messages postés 5 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 8 novembre 2006
6 nov. 2006 à 21:12
Merci ca m'aide beaucoup.

Par contre j'ai encore du mal à récupérer le statut de l'imprimante. J'utilise la classe win32_printer mais les propriétés 'status' ou 'PrinterStatus' ne me donnent pas le résultat souhaité. Il me faut utiliser la propriété 'Availability' mais je n'y arrive pas, la propriété est vide alors qu'elle ne devrait pas l'être.
Voici le code que j'utilise :

        Dim strPrintServer As String
        strPrintServer = "localhost"
        Dim WMIObject As String, PrinterSet As Object, Printer As Object
        WMIObject = "winmgmts://" & strPrintServer
        PrinterSet = GetObject(WMIObject).InstancesOf("win32_Printer")
        For Each Printer In PrinterSet
             MsgBox(Printer.Availability.ToString)
        Next Printer

Aurais-je oublier quelque chose?
Merci de votre aide
0
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
7 nov. 2006 à 09:58
salut,

alors là mais :
http://www.blogsarchives.com/wmi/12327/
http://www.blogsarchives.com/wmi/10251/
http://www.blogsarchives.com/wmi/14987/

c'est pas du VB.Net mais c'est quand même du .Net...

ShareVB
0

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

Posez votre question
cs_jonathann Messages postés 5 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 8 novembre 2006
7 nov. 2006 à 11:15
Je te remerci, ca va beaucoup m'aider.
Je connais un peu le C++ donc je devrais pouvoir m'en sortir, mais si j'ai un problème j'en ferais part. Tu peux aparement trouver des trucs incroyables, car moi j'avais pas réussi (j'ai pas bien chercher apparement).
Encore merci.
0
cs_jonathann Messages postés 5 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 8 novembre 2006
7 nov. 2006 à 20:56
Bon, j'ai réussi a convertir le programme C++ en VB.NET, ca donne ca :
       
        Dim searcher As ManagementObjectSearcher
        searcher = New ManagementObjectSearcher("SELECT * FROM Win32_Printer")
        For Each printer As ManagementObject In searcher.Get
            Dim printername As String = Convert.ToString(printer.Item("Name"))
            Dim printerstatus As UInt16 = Convert.ToUInt16(printer.Item("PrinterStatus"))
            Dim printerAvailability As UInt16 = Convert.ToUInt16(printer.Item("Availability"))
            MsgBox("Nom : " + printername)
            MsgBox("statut : " + printerstatus.ToString)
            MsgBox("Availability : " + printerAvailability.ToString)
        Next printer

Par contre, il m'indique constamment "0" pour la propriété Availability, que l'imprimante soit allumée ou étteinte donc je suis pas plus avancé. Faut-il faire une manip spéciale pour qu'il mette a jour la propriété Availability?
0
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
7 nov. 2006 à 23:23
salut,

il semblerait que malgrès sa description la propriété WorkOffline représente en quelque sorte la disponibilité de l'imprimante...cependant effectivement, on peut modifier l'état de cette variable par le panneau de config...dans PRINTER_INFO2 c'est aussi le cas...

ShareVB
0
cs_jonathann Messages postés 5 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 8 novembre 2006
8 nov. 2006 à 11:13
Salut,

Oui je te confirme que c'est bien la propriété WorkOffline. Je ne l'avais pas tester a cause de sa définition qui ne m'avais pas paru etre ce que je cherchais mais en regardant de plus près sur les liens que tu m'avais fillé, je me suis apercu que c'était ca. Et après les tests je peux le confirmer.
Donc pour repondre au problème que j'ai poser, voici un code récupérant l'état d'une imprimante:
        Dim searcher As ManagementObjectSearcher
        searcher = New ManagementObjectSearcher("SELECT * FROM Win32_Printer")
        For Each printer As ManagementObject In searcher.Get
            Dim printername As String= Convert.ToString(printer.Item("Name"))
            Dim printerstatus As Boolean = printer.Item("WorkOffline")
            MsgBox("Nom : " + printername)
            MsgBox("statut : " + printerstatus)
        Next printer
(NB : il faut intégrer la dll system.management.dll au projet situé dans le dossier c:/windows/microsoft.NET/framwork/'version la plus récent'/)

Je vous remerci de l'aide que vous m'avez apporté.
0
elmj3our Messages postés 2 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 29 avril 2008
29 avril 2008 à 23:58
bon soir dans ce stade j'ai un poramme qui gére les impression et j'ai besion du recuperer message d'erreur c'est le cas et l'envoyez a l'utilisateur
0
Rejoignez-nous