Impostazione della stampante predefinita per Windows usando c #

Voglio impostare una stampante predefinita per Windows / Impostazioni di sistema su un clic del pulsante. Voglio fare clic su un pulsante e desidero che venga visualizzato un dialogo di Windows che chiede all’utente di impostare una stampante predefinita. In questo momento sto usando PrintDialog per questo, ma cambia la stampante ogni volta che clicco sul pulsante. Voglio impostare la stampante selezionata come predefinita che dovrebbe rimanere la stessa anche se chiudo l’applicazione.

private void PrintSettingsBtn_Click(object sender, EventArgs e) { PrintDialog PrintDialog = new PrintDialog(); PrintDialog.ShowDialog(); PrinterName = PrintDialog.PrinterSettings.PrinterName; } 

Prova la funzione API Windows di SetDefaultPrinter

  using System.Runtime.InteropServices; ... [DllImport("winspool.drv", CharSet = CharSet.Auto, SetLastError = true)] [return: MarshalAs(UnmanagedType.Bool)] public static extern Boolean SetDefaultPrinter(String name); ... SetDefaultPrinter(PrinterName); 

vedere

http://msdn.microsoft.com/en-us/library/windows/desktop/dd162971(v=vs.85).aspx http://www.pinvoke.net/default.aspx/winspool/SetDefaultPrinter.html? diff = y

Fare clic con il tasto destro del mouse sul progetto in Esplora soluzioni, selezionare Proprietà. Seleziona la scheda Impostazioni, aggiungi l’impostazione PrinterName.

Nel codice usa l’impostazione:

 string PrinterName { get { return (string)Properties.Settings.Default["PrinterName"]; } set { Properties.Settings.Default["PrinterName"] = value; Properties.Settings.Default.Save(); } } private void print_Click(object sender, EventArgs e) { PrintDialog pd = new PrintDialog(); if (PrinterName != "") pd.PrinterSettings.PrinterName = PrinterName; if (pd.ShowDialog() == System.Windows.Forms.DialogResult.OK) { // Print PrinterName = pd.PrinterSettings.PrinterName; } }