J'ai besoin d'obtenir la liste de toutes les imprimantes qui se connectent à l'ordinateur ?
Comment puis-je le faire en C#, WinForms ?
J'ai besoin d'obtenir la liste de toutes les imprimantes qui se connectent à l'ordinateur ?
Comment puis-je le faire en C#, WinForms ?
Si vous avez besoin de plus d'informations que le simple nom de l'imprimante, vous pouvez utiliser la fonction System.Management
pour les interroger :
var printerQuery = new ManagementObjectSearcher("SELECT * from Win32_Printer");
foreach (var printer in printerQuery.Get())
{
var name = printer.GetPropertyValue("Name");
var status = printer.GetPropertyValue("Status");
var isDefault = printer.GetPropertyValue("Default");
var isNetworkPrinter = printer.GetPropertyValue("Network");
Console.WriteLine("{0} (Status: {1}, Default: {2}, Network: {3}",
name, status, isDefault, isNetworkPrinter);
}
Regardez les statiques System.Drawing.Printing.PrinterSettings.InstalledPrinters (Imprimantes installées) propriété.
Il s'agit d'une liste des noms de toutes les imprimantes installées sur le système.
Vous pouvez également utiliser la classe LocalPrintServer. Voir : Serveur d'impression local (System.Printing.LocalPrintServer)
public List<string> InstalledPrinters
{
get
{
return (from PrintQueue printer in new LocalPrintServer().GetPrintQueues(new[] { EnumeratedPrintQueueTypes.Local,
EnumeratedPrintQueueTypes.Connections }).ToList()
select printer.Name).ToList();
}
}
Comme indiqué dans les docs : Les classes de l'espace de noms System.Printing ne peuvent pas être utilisées dans un service Windows ou une application ou un service ASP.NET.
C'est une réponse très intéressante. Si vous n'avez besoin que des noms, la réponse acceptée est correcte. Si vous avez besoin d'autres données, l'utilisation de la requête à win32_Printer est beaucoup plus lente que l'appel suivant
Obtenir la liste des imprimantes réseau et locales en ASP.NET
Cette méthode utilise l'instrumentation de gestion Windows ou l'interface WMI. Il s'agit d'une technologie utilisée pour obtenir des informations sur divers systèmes (matériel) fonctionnant sur un système d'exploitation Windows.
private void GetAllPrinterList()
{
ManagementScope objScope = new ManagementScope(ManagementPath.DefaultPath); //For the local Access
objScope.Connect();
SelectQuery selectQuery = new SelectQuery();
selectQuery.QueryString = "Select * from win32_Printer";
ManagementObjectSearcher MOS = new ManagementObjectSearcher(objScope, selectQuery);
ManagementObjectCollection MOC = MOS.Get();
foreach (ManagementObject mo in MOC)
{
lstPrinterList.Items.Add(mo["Name"].ToString());
}
}
Cliquez ici pour télécharger la source et la démo de l'application
Démonstration de l'application qui répertorie les imprimantes réseau et locales
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.