web-dev-qa-db-ja.com

C#でWindowsのデフォルトプリンターを設定するにはどうすればよいですか?

C#.NETでWindowsのデフォルトプリンターを設定するにはどうすればよいですか?

22
jms

SetDefaultPrinter WindowsAPIを使用します。

これをpInvokeする方法は次のとおりです。

16
rein
using System;
using System.Drawing.Printing;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {

        private void listAllPrinters()
        {
            foreach (var item in PrinterSettings.InstalledPrinters)
            {    
                this.listBox1.Items.Add(item.ToString());
            }
        }

        private void listBox1_SelectedValueChanged(object sender, EventArgs e)
        {
            string pname = this.listBox1.SelectedItem.ToString();
            myPrinters.SetDefaultPrinter(pname);
        }


        public Form1()
        {
            InitializeComponent();
            listAllPrinters();
        }
    }

    public static class myPrinters
    {
        [DllImport("winspool.drv", CharSet = CharSet.Auto, SetLastError = true)]
        public static extern bool SetDefaultPrinter(string Name);

    }
}
30
Johan

ステップ1:次のコードを.csファイルの任意の場所に貼り付けます

  public static class PrinterClass
    {
        [DllImport("winspool.drv", CharSet = CharSet.Auto, SetLastError = true)]
        public static extern bool SetDefaultPrinter(string Printer);
    }

ステップ2:必要な名前空間を追加します。

using System.Runtime.InteropServices;

手順3:次の機能を使用して、目的のプリンターをデフォルトのプリンターとして設定します。

 PrinterClass.SetDefaultPrinter("Paste your desired Printer Name here");

ステップ4:PCに接続されているすべてのプリンターのリストを取得するには、このコードを使用できます。

  private void FillListBox()
    {
        foreach (var p in PrinterSettings.InstalledPrinters)
        {
            cmbdefaultPrinter.Properties.Items.Add(p);
        }
    } 
//Here cmbdefaultPrinter is a combobox, you can fill the values into a list.

上記のコードに必要な名前空間は次のとおりです。

using System.Drawing.Printing;
using System.Runtime.InteropServices;
1
Muhammad Abbas