当前位置: 首页 > 编程日记 > 正文

如何把Windows安装的所有打印机列出来

[转]最近在论坛中不少网友问"如何把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上测试通过

转载于:https://www.cnblogs.com/shanghaif/archive/2007/03/06/665019.html

相关文章:

今晚直播 | 谷歌资深工程师手把手教你使用TensorFlow最新API构建学习模型

目前,深度学习的研究和应用大受追捧,各种开源的深度学习框架层出不穷。TensorFlow 作为目前最受欢迎的深度学习框架,已经在 GitHub 上获得了 112194 个 star,受欢迎程序可见一斑。但如何学习 TensorFlow,以及如何通过 …

澳洲计算机学,2020年澳洲计算机科学专业工作好找吗

就业前景:本专业毕业生就业前景十分良好。在完成学业后可以凭借其良好扎实的专业技能自主创业,或者进一步学习获得硕士或博士学位,也可进入计算机科学领域求职,如对先进计算机进行研发、编程、游戏设计、多媒体设计、网页设计、信…

AngularJS如何在filter中相互调用filter

调用方式如下: app.filter(filter2, function( $filter ) {return function( input) {return $filter(filter1)( input );}});本文转自黄聪博客园博客,原文链接:http://www.cnblogs.com/huangcong/p/6800107.html,如需转载请自行联…

腾讯AI Lab开源业内最大规模多标签图像数据集(附下载地址)

今日(10 月 18 日),腾讯AI Lab宣布正式开源“Tencent ML-Images”项目。该项目由多标签图像数据集 ML-Images,以及业内目前同类深度学习模型中精度最高的深度残差网络 ResNet-101 构成。 该开源项目的主要内容包括: 1、…

two years in cnblogs.com

时间过得太快了,几乎还没什么感觉就在博客园扎寨两年了。回头瞄瞄这两年来的随笔觉得自己留下的都是毛皮,自己一直在调船头,几乎没有在哪一个专业中找到精髓,有点遗憾!在博客园这两年最要感谢的人是dudu,他…

自动驾驶公司Momenta完成超2亿美元融资,估值超10亿美元

参加 2018 AI开发者大会,请点击 ↑↑↑10 月 17 日,自动驾驶公司 Momenta 对外公布完成新一轮融资,本轮融资主要来自行业领先的战略投资者和国资背景的投资者。本轮战略投资者包括腾讯等多家机构,国资背景投资者则包括招商局创投…

shell版俄罗斯方块

#!/bin/bash # Tetris Game # 10.21.2003 xhchen #颜色定义 cRed1 cGreen2 cYellow3 cBlue4 cFuchsia5 cCyan6 cWhite7 colorTable($cRed $cGreen $cYellow $cBlue $cFuchsia $cCyan $cWhite) #位置和大小 iLeft3 iTop2 ((iTrayLeft iLeft 2)) ((iTrayTop iTop 1)) ((iTray…

利用计算机进行机械设计属于什么,计算机技术机械设计应用

【摘要】近几年计算机技术的飞速发展使得它在各个领域中的地位越来越显著,应用越来越广泛,在机械设计过程中也逐渐地引入了计算机技术。在计算机技术中有一种单独的辅助设计技术用来辅助各种设计工作,计算机辅助设计技术使得机械设计更加简单…

linux carry php Soap 扩展

前言今天又出现下问题了需要解决如下:报错信息是没有soap这个扩展!解决问题如图所示:cd php-5.6.2/ext/soap//usr/local/php5/bin/phpize # 进入phpize开始编译安装 ./configure -with-php-config/usr/local/php5/bin/php-config -enable-so…

html使用highcharts绘制饼图,html js highcharts绘制圆饼图表

jquery实现饼状图效果 - 站长素材var chart;$(function () {var totalMoney999var zccw178var sycw821$(document).ready(function() {chart new Highcharts.Chart({chart: {renderTo: pie_chart,plotBackgroundColor: white,//背景颜色plotBorderWidth: 0,plotShadow: false}…

pycharm的安装配置和简单使用

1.pycharm的安装和配置1)下载地址https://www.jetbrains.com/pycharm/download/#sectionwindows各位可以选择Community版本进行安装学习,土豪可以选择Professional版本下载安装包后默认安装2)基本设置file-setting-project-project interpret…

港中大、商汤开源目标检测工具包mmdetection,对比Detectron如何?

近日,香港中文大学-商汤联合实验室开源了基于 PyTorch 的检测库——mmdetection。上个月,商汤和港中大组成的团队在 COCO 比赛的物体检测(Detection)项目中夺得冠军,而 mmdetection 正是基于 COCO 比赛时的 codebase 重…

关注中国的房地产市场

美国房贷呆账持续恶化引发道指大跌 亚洲股市应声猛泻中国的房地产,现在热得不得了,很多人贷款买房,买房子的人多了,房价也就上涨很多,投机商也囤积居奇。更促使房价迅猛上升。当中国房价不断上涨的势头减缓的时候&…

冠军揭晓!京东Alpha开发者大赛Pick谁上了C位

近期,京东Alpha开发者大赛圆满结束。遍布全国的AI开发爱好者,对本次大赛展现出了超乎想象的激情与热爱,开发出了很多优质、好玩的技能作品。家中有叮咚的朋友们也纷纷表示更喜欢撩音箱了,因为男女朋友、赚钱、娱乐游戏、学习……通…

大白话讲解Promise(二)理解Promise规范

上一篇我们讲解了ES6中Promise的用法,但是知道了用法还远远不够,作为一名专业的前端工程师,还必须通晓原理。所以,为了补全我们关于Promise的知识树,有必要理解Promise/A规范,理解了它你才能知道Promise内部…

量子计算机人类意识云,意识上传-人类距离永生还要多久(大脑的工作原理很有可能与量子计算机一致)...

事情的引子是最近的科幻电影《炭变》, 300年后,人类意识上传到数字植入物(称为“堆栈”)中,并且富人还可以不停的升级,并基本上永远活着。虽说这只是部科幻电影,但也会让很多人流口水,毕竟如果有可能实现永…

Alpha混合

Direct3D计算Alpha混合的颜色公式:Color ( SrcRGB * SrcK ) ( DestRGB * DestK )SrcRGB表示源颜色值,即将要绘制的颜色值。SrcK表示源混合系数,通常赋值为D3DBLEND_SRCALPHA,即当前绘制像素的Alpha值DestRGB表示目标颜色值&…

考研计算机专业课怎么复习,2016考研计算机专业课如何复习?

2016考研计算机专业课如何复习??基础复习阶段以指定参考书为主,兼顾笔记,进行专业课的第一轮复习。看书要以理解为主,不必纠缠于细节,并在不懂的知识点处做上标记。第一步,选择一本难度适宜、内容全面、与…

Linux 学习手记(1):命令行BASH的基本操作

1. Shell 是什么 Shell(壳)是用户与操作系统底层(通常是内核)之间交互的中介程序,负责将用户指令、操作传递给操作系统底层。 Shell一般分为:图形化Shell(GUI)、命令行Shell&#xf…

为了智能驾驶,李彦宏要改造城市道路了!

10 月 18 日,在世界智能网联汽车大会上,百度 CEO 李彦宏提到:当汽车变得越来越智能,道路的基础设施也必须跟着变,必须进行改造。 李彦宏在发言中表示,“很多自动驾驶汽车都是需要依赖极其昂贵的激光雷达来…

LoadRunner Winsock 10053错误的真正原因

最近使用LoadRunner进行Winsock协议的性能测试时,测试的WebServer是JBoss,经常出现10053错误,现象如下:当我用lrs_create_socket创建连接之后,当这个socket连接的请求次数达到100次后,这个连接就不可用了&a…

dsp和通用计算机的区别,dsp芯片是什么_dsp芯片和通用微处理器有什么区别

对于dsp芯片很多人都会比较陌生,它主要运用在信号处理、图像处理、声音语言等多个场所。那么dsp芯片到底是什么呢?它和通用微处理器有什么不同。接下来小编就简单的给大家介绍一下dsp芯片是什么及dsp芯片和通用微处理器有什么区别。一、dsp芯片是什么1、…

百度大脑发布企业服务解决方案,将 AI 技术落实到细分领域

人工智能竞争之势愈演愈烈,AI与场景应用的深度结合将成为各家企业的取胜关键。10月18日,百度大脑行业创新论坛在北京正式拉开帷幕,届时将走进全国6个城市举办7场以企业服务、信息服务和零售等为主题的专题活动,展示人工智能与不同…

图片上传(加水印、缩略图、远程保存)的简单例子

图片上传(加水印、缩略图、远程保存)的简单例子(应用于51aspx.com)该源码下载地址:http://51aspx.com/CV/ImageUpload今天看到xiongeee发的文章使用使用FileUpload控件上传图片并自动生成缩略图、自动生成带文字和图片的水印图 …

wp实例开发精品文章源码推荐

qianqianlianmengwp实例开发精品文章源码推荐 WP8 启动媒体应用 这个示例演示了如何选择正确的msAudioCategory类别的音像(AV)流来配置它作为一个音频播放流。具体地说,这个示例执行以下操作:启动一个媒体应用与“媒体”msA……资源地址: http://www.apkbus.…

98级计算机应用教材,西安外事学院98级计算机应用9806班毕业二十年校友返校

7月28日,计算机应用9806班的校友们赴二十年之约,相聚于西安外事学院工学院。出席此次会议的有工学院党总支书记、副院长任国良、计算机应用9806班当年的老师赵培华、张凤琴、刘可、刘挺以及计算机应用9806班的学生。会议之前,校友们参观了学校…

js:appendChild、insertBefore和insertAfter

web/Win8开发中经常要在js中动态增加一些element,就需要用到下面的一些方法: appendChild: target.appendChild(newChild) newChild作为target的子节点插入最后的一子节点之后 insertBefore: target.insertBefore(newChild,existi…

来呀!AI喊你斗地主——首个搞定斗地主的深度神经网络

参加 2018 AI开发者大会,请点击 ↑↑↑ 作者 | Anonymous authors 译者 | 蔡志兴 编辑 | Jane 出品 | AI科技大本营 【导读】近年来,从围棋到 Dota 团战赛,深度神经网络应用在各种游戏竞赛中不断取得突破。这一次,有人把这种方…

在 Django 的 View 中利用 function decorator 可实现一定程度的代码重用

在 Django 中,假设有几个 view, 他们都接受类似的参数,做类似的处理,最后又输出类似的变量到模板中配合显示,唯一不同的就是模板路径。 最普通的写法可能是这样: defview_a(request, some_id): some_obj SomeClass.…

Linux---管理网络

一、ip基础知识1.ipv42进制32位-----10进制 172.25.0.10/255.255.255.0172.25.0.10:ip地址255.255.255.0:子网掩码子网掩码255位对应的ip位为网络位子网掩码0对应的ip位为主机位二、主机联网主机有两块网卡:有线和无线;&#xff0…