zoukankan      html  css  js  c++  java
  • C#获取本地打印机列表,并将指定打印机设置为默认打印机

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Data;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Imaging;
    using System.Windows.Navigation;
    using System.Windows.Shapes;
    
    namespace Printers
    {
        /// <summary>
        /// Interaction logic for Window1.xaml
        /// </summary>
        public partial class Window1 : Window
        {
            public Window1()
            {
                InitializeComponent();
                InitprinterComboBox(); //初始化打印机下拉列表选项
            }
            private void InitprinterComboBox()
            {
                List<String> list = LocalPrinter.GetLocalPrinters(); //获得系统中的打印机列表
                foreach (String s in list)
                {
                    printerComboBox.Items.Add(s); //将打印机名称添加到下拉框中
                }
            }
    
            private void printButton_Click(object sender, RoutedEventArgs e)
            {
                if (printerComboBox.SelectedItem != null) //判断是否有选中值
                {
                    if (Externs.SetDefaultPrinter(printerComboBox.SelectedItem.ToString())) //设置默认打印机
                    {
                        MessageBox.Show(printerComboBox.SelectedItem.ToString() + "设置为默认打印机成功!");
                    }
                    else
                    {
                        MessageBox.Show(printerComboBox.SelectedItem.ToString() + "设置为默认打印机失败!");
                    }
                }
            }
        }
    }

    LocalPrinter.cs

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Drawing.Printing;
    using System.Runtime.InteropServices;
    
    namespace Printers
    {
        class LocalPrinter
        {
            private static PrintDocument fPrintDocument = new PrintDocument();
            //获取本机默认打印机名称
            public static String DefaultPrinter()
            {
                return fPrintDocument.PrinterSettings.PrinterName;
            }
            public static List<String> GetLocalPrinters()
            {
                List<String> fPrinters = new List<String>();
                fPrinters.Add(DefaultPrinter()); //默认打印机始终出现在列表的第一项
                foreach (String fPrinterName in PrinterSettings.InstalledPrinters)
                {
                    if (!fPrinters.Contains(fPrinterName))
                    {
                        fPrinters.Add(fPrinterName);
                    }
                }
                return fPrinters;
            }
        }
    }

    Externs.cs

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Runtime.InteropServices;
    
    namespace Printers
    {
        class Externs
        {
            [DllImport("winspool.drv")]
            public static extern bool SetDefaultPrinter(String Name); //调用win api将指定名称的打印机设置为默认打印机
        }
    }
  • 相关阅读:
    java FileI(O)nputStream为什么比BufferedI(O)utputStream慢?
    JDBC 关于大文本数据
    JDBC 关于Date格式
    JDBC 增删改查代码 过滤查询语句
    JavaBean与JSP
    配置tomcat映射jsp
    【Xamarin挖墙脚系列:Xamarin.IOS机制原理剖析】
    【Xamarin挖墙脚系列:多窗口之间的导航】
    【Xamarin挖墙脚系列:Xamarin.IOS的程序的结构】
    【Xamarin挖墙脚系列:在VMware11中安装Mac10.11 EI Captain后的vmware tools】
  • 原文地址:https://www.cnblogs.com/zeroone/p/3306179.html
Copyright © 2011-2022 走看看