Guten Morgen liebe Community,
ich habe ein kleines - nennen wir es mal Strinrunzeln:
Was ich nun aber beobachte, ist folgendes:
Gibt es da einen Weg, dass der Standarddrucker direkt erkannt wird (Dienst neu starten, oder ähnliches) und kann sich einer erklären, wieso der grüne Haken bei den Druckern nicht ist (wobei das noch das geringste Problem ist).
Besten Dank
Toorms
Codegulasch vom Form (in Testing, auch noch kein Errorhandling drin, etc.):
Spoiler anzeigen
ich habe ein kleines - nennen wir es mal Strinrunzeln:
- Ich bin gerade dabei, dass man sich mit simpler GUI und Combobox den Standard-Drucker ändern lassen kann. Soweit so gut ...
Was ich nun aber beobachte, ist folgendes:
- Der Standarddrucker ist nicht direkt geändert sondern es brauch ein paar Minuten, bis andere Apps (meine eigene und auch notepad.exe zB) ihn auch als Standarddrucker erkennen
- In der Windows Druckerübersicht ist nirgends ein grüner Haken hinter den Druckern (bei keinem, wie man es normalerweise vermuten mag bei Default Printers)
Gibt es da einen Weg, dass der Standarddrucker direkt erkannt wird (Dienst neu starten, oder ähnliches) und kann sich einer erklären, wieso der grüne Haken bei den Druckern nicht ist (wobei das noch das geringste Problem ist).
Besten Dank
Toorms
Codegulasch vom Form (in Testing, auch noch kein Errorhandling drin, etc.):
VB.NET-Quellcode
- Imports System.Drawing.Printing
- Public Class frmMain
- Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
- Dim strInstalledPrinters As String
- Dim prntDoc As New PrintDocument
- 'check if there is installed printer
- If PrinterSettings.InstalledPrinters.Count = 0 Then
- MsgBox("No printer installed")
- Exit Sub
- End If
- 'display installed printer into combobox list item
- For Each strInstalledPrinters In PrinterSettings.InstalledPrinters
- ComboBox1.Items.Add(strInstalledPrinters)
- Next strInstalledPrinters
- 'Display current default printer on combobox texts
- ComboBox1.Text = prntDoc.PrinterSettings.PrinterName
- Button1.Text = "Set Default Printer"
- End Sub
- 'Function to set a printer as default
- Function SetDefaulPrinter(ByVal strPrinterName As String) As Boolean
- Dim strCurrPrinter As String
- Dim WsNetwork As Object
- Dim prntDoc As New PrintDocument
- strCurrPrinter = prntDoc.PrinterSettings.PrinterName
- WsNetwork = CreateObject("WScript.Network")
- Try
- WsNetwork.SetDefaultPrinter(strPrinterName)
- prntDoc.PrinterSettings.PrinterName = strPrinterName
- 'set default if selected printer name is a valid installed printer
- If prntDoc.PrinterSettings.IsValid Then
- Return True
- Else
- WsNetwork.SetDefaultPrinter(strCurrPrinter)
- Return False
- End If
- Catch ex As Exception
- WsNetwork.SetDefaultPrinter(strCurrPrinter)
- Return False
- Finally
- WsNetwork = Nothing
- prntDoc = Nothing
- End Try
- End Function
- Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
- If SetDefaulPrinter(ComboBox1.Text) = True Then
- MsgBox("Default printer changed to " & ComboBox1.Text)
- Else
- MsgBox("Printer " & ComboBox1.Text & " is not valid! Please try again or check your configuration.")
- End If
- End Sub
- End Class