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将指定名称的打印机设置为默认打印机
        }
    }
  • 相关阅读:
    题解 SP27102/UVA1747 【Swap Space】
    题解 P1453 【城市环路】
    题解 P5587 【打字练习】
    题解 P5594 【【XR-4】模拟赛】
    git add 的一点说明
    理解 Git 的基本概念 ( Merging Collaborating Rebasing)
    windows 上 Python 通过 SCP 连接linux server
    Neo4j CQL | WITH用法
    Neo4j CQL |create &merge
    Item 4: Prefer Interpolated F-Strings Over C-style Format Strings and str.format(请使用f-string格式化字符串)
  • 原文地址:https://www.cnblogs.com/zeroone/p/3306179.html
Copyright © 2011-2022 走看看