C#.NETでWindowsのデフォルトプリンターを設定するにはどうすればよいですか?
SetDefaultPrinter WindowsAPIを使用します。
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);
}
}
ステップ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;