2012-10-05 60 views
0

我有一台桌面应用程序,列表视图在本地计算机上装有已安装的打印机。这是一个简单的打印机管理,所以我想要能够右键单击一个项目,然后删除该特定的打印机。我怎样才能做到这一点?删除本地打印机

这里是我列出的打印机

Public Sub listInstalledPrinters() 
     Dim i As Integer 
     Dim pkInstalledPrinters As String 

     For i = 0 To printersettings.InstalledPrinters.Count - 1 
      pkInstalledPrinters = PrinterSettings.InstalledPrinters.Item(i) 
      listViewLocal.Items.Add(pkInstalledPrinters, nIndex) 
     Next 

    End Sub 

但我怎么能删除其中之一吗?有没有内置的方法来做到这一点?

回答

3

如果通过System.Management.ManagementScope查询打印机,可以使用ManagementObject类的Delete方法轻松删除它们。

Dim scope = New ManagementScope(ManagementPath.DefaultPath) 
scope.Connect() 
Dim printers = New ManagementObjectSearcher(scope, new SelectQuery("select * from Win32_Printer")).[Get]() 
For Each printer As ManagementObject In printers 
    Dim nameOfPrinter = printer("Name").ToString() 

    If nameOfPrinter = "ThePrinterYouWantToDelete" Then 
     printer.Delete() 
    End If 
Next 
+0

差不多工作!除了错误消息'delete'不是'System.Management.ManagementBaseObject'的成员。 ManagementObjectSearcher有问题吗? –

+0

看我的编辑。尝试'对于每个打印机作为ManagementObject In'而不是'For Each printer In' – sloth

相关问题