C# 检查打印机是否连接到电脑
我需要写一些代码,当打印机插入计算机时,提示打印机已连接,当我从计算机中拔出打印机时,也会提示打印机未连接。我还想通过组合框列出可用的打印机。如何使用Visual Studio在C中执行此操作 您应该使用 C签名:C# 检查打印机是否连接到电脑,c#,C#,我需要写一些代码,当打印机插入计算机时,提示打印机已连接,当我从计算机中拔出打印机时,也会提示打印机未连接。我还想通过组合框列出可用的打印机。如何使用Visual Studio在C中执行此操作 您应该使用 C签名: [DllImport("winspool.Drv", EntryPoint = "OpenPrinterA", SetLastError = true, CharSet = CharSet.Ansi, ExactSpelling = true, CallingConvention =
[DllImport("winspool.Drv", EntryPoint = "OpenPrinterA", SetLastError = true, CharSet = CharSet.Ansi, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
public static extern bool OpenPrinter([MarshalAs(UnmanagedType.LPStr)] string szPrinter, out IntPtr hPrinter, IntPtr pd);
编辑:
你也可以用这个
foreach (string printer in System.Drawing.Printing.PrinterSettings.InstalledPrinters)
{
//Add in combo box
}
要立即获取新打印机发现/断开连接的弹出窗口。。。你必须在后台运行一些代码,Windows服务是最好的。。使用下面的代码,您可以获得已安装的打印机,因此首先将当前已安装的打印机存储在列表中,然后在每10次或任何您想要的时间之后,如果发现差异,请再次获得已安装的打印机,并相应地发送消息 这是获取已安装打印机的代码段
private string[] GetAvailablePrinters()
{
var installedPrinters = new string[PrinterSettings.InstalledPrinters.Count];
PrinterSettings.InstalledPrinters.CopyTo(installedPrinters, 0);
var printers = new List<string>();
var printServers = new List<string>();
var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_Printer");
foreach (var printer in searcher.Get())
{
var serverName = @"\\" + printer["SystemName"].ToString().TrimStart('\\');
if (!printServers.Contains(serverName))
printServers.Add(serverName);
}
foreach (var printServer in printServers)
{
var server = new PrintServer(printServer);
try
{
var queues = server.GetPrintQueues();
printers.AddRange(queues.Select(q => q.Name));
}
catch (Exception)
{
// Handle exception correctly
}
}
return printers.ToArray();
}
您可能需要在项目中添加System.Management、System.Drawing、System.Printing引用。插入/插入似乎没问题。。但是你说的组合框是什么意思??当你想要它的时候??当时还是印刷?然后让我告诉你windows默认情况下Ctrl+P用于列出打印机并选择一台。。对于插拔,我们可以试试。。!看一看:我想把安装的打印机列表放到一个组合框中,先生。如果你不理解我的一些问题,我仍然在c很抱歉。这似乎列出了系统上有驱动程序的打印机,但是如果它们被拔下,它还能工作吗?@Eric同意你的观点。。正当我可能不会减少计数。。由于驱动程序仍在安装中。。让我试试吧,先生,嗯,我是c语言的新手,我不知道如何把这些代码放到windows窗体中。你能给我点化一下吗。这对我来说很难:我仍然不知道如何正确处理异常sir@DeepakSharma.on button click event您只需要调用上面定义的方法。。GetAvailablePrints将返回表示打印机名称的字符串数组。。