Hvordan indstiller jeg Windows-standardprinteren i C #?

Indlæg af Hanne Mølgaard Plasc

Problem



Hvordan indstiller jeg Windows-standardprinteren i C # .NET?

Bedste reference


Brug af SetDefaultPrinter Windows API.


Her kan du indføje det. [3]

Andre referencer 1


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);

    }
}

Andre referencer 2


Sådan kan det gøres med C # .NET uden at bruge Win32API inden for rammerne af en .NET-applikation. Win32API-tilgangen bevarer standardprinteren Når programmet er lukket.


using System.Drawing.Printing;

namespace MyNamespace
{
  public class MyPrintManager
  {
    public static PrinterSettings MyPrinterSettings = new PrinterSettings();

    public static string Default\_PrinterName
    {
      get
      {
        return MyPrinterSettings.PrinterName;
      }
      set
      {
        MyPrinterSettings.DefaultPageSettings.PrinterSettings.PrinterName = value;
        MyPrinterSettings.PrinterName = value;
      }
    }
  }
}

Andre referencer 3


Du kan også bruge WMI.

http://cheeso.members.winisp.net/srcview.aspx?file=printer.cs[4]