C#枚举系统安装的所有打印机

打印

最近在论坛中不少网友问"如何把Windows安装的所有打印机列出来",在下面的程序中我们将把系统中所安装的打印机用列表框列出来,同时为默认打印机设置缺省值。

  在下面的程序中我们用到了两个主要的类,把所有的打印机列表出来用到了PrinterSettings 类,获取系统默认打印机用到了PrintDocument 类,下面我们就动手实践一下吧。

  先新建一个windows form的工程,然后加入一个lable和一个comBox,就行啦,关键在下面啦,我们如何获得默认打印机,就得用下面的语句。

PrintDocument prtdoc = new PrintDocument();
string strDefaultPrinter = prtdoc.PrinterSettings.PrinterName;//获取默认的打印机名

  有了默认的打印机,我们再把所有的打印机列出来。

  PrinterSettings类有一个InstalledPrinters的属性,不知是做什么的吧,查MSDN如下解释:
PrinterSettings.InstalledPrinters 获取安装在计算机上所有打印机的名称。

  在C#中如下定义:

[C#]
[Serializable]
[ComVisible(false)]
public static PrinterSettings.StringCollection InstalledPrinters
{get;}

  属性值

  PrinterSettings.StringCollection,它表示安装在计算机上所有打印机的名称。

  异常

异常类型 条件
Win32Exception 未能枚举可用的打印机

  备注

  可以使用已安装的打印机名称的集合向用户提供要打印到的打印机选择。

  下面的示例用已安装的打印机填充 comboInstalledPrinters 组合框,并且还在选择更改时使用 PrinterName 属性设置用于打印的打印机。PopulateInstalledPrintersCombo 例程在窗体初始化时被调用。该示例假定存在名为 printDoc 的 PrintDocument 变量,并且存在特定的组合框。

[C#]
//下面括号内的自己翻译添加进去的
private void PopulateInstalledPrintersCombo()
{
// Add list of installed printers found to the combo box.(将系统中所有的打机加入列表框)
// The pkInstalledPrinters string will be used to provide the display string.(列表框中显示的字串由pkInstalledPrinters提供)
foreach(String pkInstalledPrinters in
PrinterSettings.InstalledPrinters)
{
comboInstalledPrinters.Items.Add(pkInstalledPrinters);
}
}

private void comboInstalledPrinters_SelectionChanged(object sender, System.EventArgs e)
{

// Set the printer to a printer in the combo box when the selection changes.(当列表框改变时设置选择的打印机)

if (comboInstalledPrinters.SelectedIndex != -1)
{
// The combo box's Text property returns the selected item's text, which is the printer name.(将选择的打印机名在列表框中显示)
printDoc.PrinterSettings.PrinterName= comboInstalledPrinters.Text;
}

}

  看了MSDN的说明,懂多了吧,下面是我写练习完整代码.

//程序说明:将系统中的所有打印机在列表框中列出
//程序变量: PrintDocument prtdoc、string strDefaultPrinter
//编写人:蚕蛹(sillnet@163.net)
//日期:2003-03-20
using System;
using System.Drawing;
using System.Drawing.Printing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

namespace PrinterList
{
 ///
 /// Form1 的摘要说明。
 ///
 public class Form1 : System.Windows.Forms.Form
 {
  private System.Windows.Forms.Label label1;
  private System.Windows.Forms.ComboBox printerList;
  ///
  /// 必需的设计器变量。
  ///
  private System.ComponentModel.Container components = null;

  public Form1()
  {
   //
   // Windows 窗体设计器支持所必需的
   //
   InitializeComponent();
   PrintDocument prtdoc = new PrintDocument();
   string strDefaultPrinter = prtdoc.PrinterSettings.PrinterName;//获取默认的打印机名
   foreach(String strPrinter in PrinterSettings.InstalledPrinters)
   //在列表框中列出所有的打印机,
   { 
    printerList.Items.Add(strPrinter);
    if (strPrinter == strDefaultPrinter)//把默认打印机设为缺省值
    {
     printerList.SelectedIndex = printerList.Items.IndexOf(strPrinter);
    }
   }
   //
   // TODO: 在 InitializeComponent 调用后添加任何构造函数代码
   //
  }

  ///
  /// 清理所有正在使用的资源。
  ///
  protected override void Dispose( bool disposing )
  {
   if( disposing )
   {
    if (components != null)
    {
     components.Dispose();
    }
   }
   base.Dispose( disposing );
  }

  #region Windows Form Designer generated code
  ///
  /// 设计器支持所需的方法 - 不要使用代码编辑器修改
  /// 此方法的内容。
  ///
  private void InitializeComponent()
  {
   this.label1 = new System.Windows.Forms.Label();
   this.printerList = new System.Windows.Forms.ComboBox();
   this.SuspendLayout();
  //
  // label1
   //
   this.label1.Location = new System.Drawing.Point(8, 24);
   this.label1.Name = "label1";
   this.label1.Size = new System.Drawing.Size(72, 16);
   this.label1.TabIndex = 0;
   this.label1.Text = "选择打印机:";
   //
   // printerList
   //
   this.printerList.Location = new System.Drawing.Point(88, 22);
   this.printerList.Name = "printerList";
   this.printerList.Size = new System.Drawing.Size(192, 21);
   this.printerList.TabIndex = 1;
   this.printerList.Text = "当前系统未装打印机";
   //
   // Form1
   //
   this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
   this.ClientSize = new System.Drawing.Size(288, 61);
   this.Controls.AddRange(new System.Windows.Forms.Control[] {
      this.printerList,
      this.label1});
   this.Name = "Form1";
   this.Text = "打印机列表";
   this.ResumeLayout(false);

  }
  #endregion

  ///
  /// 应用程序的主入口点。
  ///
  [STAThread]
  static void Main()
  {
   Application.Run(new Form1());
  }

 }
}

以上代码在windows xp + vc.net 下测试通过,编译后在Windows98上测试通过

时间: 2024-10-15 01:47:55

C#枚举系统安装的所有打印机的相关文章

Delphi实现检测并枚举系统安装的打印机的方法_Delphi

本文以实例说明Delphi打印程序的实现方法.该实例可以检测系统中安装的所有打印机,枚举出这些打印机,主要功能代码非常简单,便于大家阅读与理解. 主要功能代码如下: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,Printers, XPMan; type TForm1 = class(TForm) But

打印机实用技巧13条

无论是激光打印机还是喷墨打印机,在普通操作者面前总是略显"娇气",在操作过程中,要是稍微不注意的话,就可能出现这样或者那样的故障问题,这为我们高效使用打印机带来了不小的麻烦.我们只要注意一些细节,就能化解打印故障给我们带来的烦恼:此外,适当掌握一些操作也能大大提高打印效率. 1.调整后台设置 在使用喷打的过程中,我们有时会发现打印机的输出速度明显比以前减慢了很多:在排除打印机本身没有故障的情况下,出现这种速度突然减慢的现象,很有可能是打印机的后台设置被无意修改了:此时我们不妨在系统的开

打印机实用使用技巧

无论是激光打印机还是喷墨打印机,在普通操作者面前总是略显"娇气",在操作过程中,要是稍微不注意的话,就可能出现这样或者那样的故障问题, 这为我们高效使用打印机带来了不小的麻烦.我们只要注意一些细节,就能化解打印故障给我们带来的烦恼:此外,适当掌握一些操作也能大大提高打印效率. 1.调整后台设置 在使用喷打的过程中,我们有时会发现打印机的输出速度明显比以前减慢了很 多:在排除打印机本身没有故障的情况下,出现这种速度突然减慢的现象,很有可能是打印机的后台设置被无意修改了:此时我们不妨在系统

关于C#中枚举打印机

打印  引言前段时间为客户开发一套打印机配套的软件,对C#中调用打印机做了些研究. --------------------------------------------- 问题.Net Framework 1.1给我们提供了一个PrinterSettings类,以提供指定有关文档打印方式的信息,其中包括打印文档的打印机.其中的静态属性InstalledPrinters可以使我们获取安装在计算机上所有打印机的名称.但是可惜的是,该属性仅仅能够提供已安装的打印机的名称.对于获取该打印机的相关信息

Win7系统安装打印机图文教程

打印机作为目前企业办公必用设备,很多上班族都会接触点,对于不少小白朋友来说,可能觉得打印机安装很复杂,其实不然.打印机安装其实和安装其他一些电脑外设一样,只要熟悉都可以轻松入手,菜鸟朋友只要了解步骤,也就轻松学会了.接下来小编小编格子就来与大家分享下Win7如何安装打印机,对于其他的XP或者Win8系统均类似,有兴趣的朋友不妨一起来学习下. Win7怎么安装打印机 Win7系统安装打印机图文教程 打印机的安装主要分为两步,一是打印机与电脑的连接,而是在电脑中设置安装打印机驱动,一切顺利的话,即可

服务器-CIFS协议如何枚举网络上的资源(共享文件夹/打印机)

问题描述 CIFS协议如何枚举网络上的资源(共享文件夹/打印机) 最近在学习CIFS协议,用WireShark拦截SMB包发现客户端在连接ipc$之后直接就开始查询服务器端共享目录的信息了,但是没看到服务器端返回的共享目录信息,请问这些信息是怎么发送给客户端的? 谢谢 解决方案 图库了徒劳咯的吗?咯模拟

win10系统安装打印机驱动的图文教程

先小编说一下其实打印机驱动程序安装非常的简单与其它版本的系统安装方法是一样的我们这里为各位简单的介绍一下.   win10系统怎么安装打印机驱动   1.请确保打印机已打开并连接到你的电脑.   2.如果仍然无法工作,请尝试运行 "打印疑难解答".   3.如果仍然有问题,你的打印机可能需要新的驱动程序.   4.打开 "开始"菜单, 输入 "设备和打印机", 从结果列表中选择它,然后选择你的打印机.然后在屏幕顶部选择 "删除设备&qu

Win8操作系统安装打印机的步骤

  现在在 Windows 中打印更轻松. 当你将打印机连接到电脑或向家庭网络中添加新的打印机时,可以立即开始打印. 对大多数人而言,这就是它包含的所有内容.打印更简单,原因是 Windows 支持大部分打印机,不需要使用下载内容或 CD. 通过Windows 更新甚至可联机获取更多打印机支持.如果不具备所需的所有打印功能,则 Windows更新会提供帮助. 若要了解更多信息并获取打印机最新软件,访问制造商的网站也是一个不错的选择.在安装新打印机之前,请检查打印机随附的说明. 设置打印机的步骤

win10系统安装打印机驱动的方法

  在今天的win10系统使用教程中,我们将一起来学习一下安装了打印机的win10系统电脑的一些使用故障,比如说:打印机无法打印.那么,win10系统打印机无法打印该怎么办?小编分析:如果打印机本身没有故障,就说明是电脑的驱动或者设置出现了问题.我们可以通过更新驱动来修复.具体的方法请看下文. 设备与打印机 Win10系统打印机无法打印的解决方法步骤: 1.请确保打印机已打开并连接到你的电脑. 2.如果仍然无法工作,请尝试运行 "打印疑难解答". 3.如果仍然有问题,你的打印机可能需要