cs_jonathann
Messages postés5Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention 8 novembre 2006
-
5 nov. 2006 à 20:26
elmj3our
Messages postés2Date d'inscriptionmardi 8 avril 2008StatutMembreDernière intervention29 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é.
cboulas
Messages postés2641Date d'inscriptionmercredi 2 juin 2004StatutMembreDernière intervention 8 janvier 201416 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.
cs_jonathann
Messages postés5Date d'inscriptionlundi 25 avril 2005StatutMembreDerniè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
cs_jonathann
Messages postés5Date d'inscriptionlundi 25 avril 2005StatutMembreDerniè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.
cs_jonathann
Messages postés5Date d'inscriptionlundi 25 avril 2005StatutMembreDerniè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?
ShareVB
Messages postés2676Date d'inscriptionvendredi 28 juin 2002StatutMembreDernière intervention13 janvier 201626 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...
cs_jonathann
Messages postés5Date d'inscriptionlundi 25 avril 2005StatutMembreDerniè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é.