標籤:pac cti local ring obj 手動 etl 獲得 get
開發中經常會遇到需要用到印表機的問題,那麼我們現在來一個Demo修改系統預設印表機。先看運行效果吧。(主要為了展示代碼和功能,介面就隨便拖拉了一個,比較醜,不要介意。)
介面構建非常簡單,首先建立一個Form表單,拉一個comboBox控制項和一個Button然後就可以了。
接下來我們看下代碼。
首先是載入本機印表機的類LocalPrinter
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Drawing.Printing;namespace WindowsFormsApplication1{ public 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; } }}
然後是調用windows 印表機操作api的類Externs
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Runtime.InteropServices; //必須引入這個命名空間namespace WindowsFormsApplication1{ public class Externs { [DllImport("winspool.drv")] public static extern bool SetDefaultPrinter(String Name); //調用win api將指定名稱的印表機設定為預設印表機 }}
然後就是表單的Form的代碼了,其實就是一個按鈕點擊事件和初始化的操作
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace WindowsFormsApplication1{ public partial class Form1 : Form { public Form1() { InitializeComponent(); InitprinterComboBox(); //載入資料 } /// <summary> /// 初始化ComboBox資料 /// </summary> private void InitprinterComboBox() { List<String> list = LocalPrinter.GetLocalPrinters(); //獲得系統中的印表機列表 foreach (String s in list) { printerComboBox.Items.Add(s); //將印表機名稱添加到下拉框中 } } private void button1_Click(object sender, EventArgs e) { if (printerComboBox.SelectedItem != null) //判斷是否有選中值 { if (Externs.SetDefaultPrinter(printerComboBox.SelectedItem.ToString())) //設定預設印表機 { MessageBox.Show(printerComboBox.SelectedItem.ToString() + "設定為預設印表機成功!"); } else { MessageBox.Show(printerComboBox.SelectedItem.ToString() + "設定為預設印表機失敗!"); } } } }}
這樣,運行就可以設定預設印表機了。
那麼,如何測試是否成功呢?很簡單,開啟控制台,在開啟印表機的介面,然後運行程式,設定預設印表機,看看是否會改變即可。筆者測試的結果是可以得,但是如果電腦本身沒有設定預設印表機,那麼設定也會成功,但是那個綠色的預設鉤沒有顯示出來。這時候可以手動設定一下預設,然後再 通過軟體修改就會顯示那個綠色的預設鉤了。
C#設定預設印表機