Home All Groups Group Topic Archive Search About

Standarddrucker mit .Net ermitteln

Author
8 May 2006 7:21 PM
mreisi
Hallo Leute,

ich versuche seit langem eine Lösung für das Auslesen des
Standarddruckers zu finden. WMI, API,
System.Drawing.Printing.PrinterSettings habe ich alles schon versucht,
leider nicht zurfrieden stellend. Hat jemand eine saubere Lösung ffür
VB.Net oder C#???
Mit der Win-API habe ich z.B. versucht GetDefaultPrinter aufzurufen,
jedoch erscheint dann immer die Meldung "Es wurde versucht, im
geschützten Speicher zu lesen oder zu schreiben. Dies ist häufig ein
Hinweis darauf, dass anderer Speicher beschädigt ist." Was soll das?
Eine Lösung für dieses Problem habe ich noch nicht gefunden.
Code:
Das kann frusten :-((

  Declare Function GetDefaultPrinter Lib "winspool.drv" Alias
"GetDefaultPrinterA" (ByRef pszBuffer As String, ByRef dwLen As
Integer) As Integer

Na ja wäre jedenfalls nett, wenn jemand einen Tip hätte.

Vielen  Dank

Author
9 May 2006 1:16 PM
Göran_Andersson
From what I gather, if you create a PrintSettings object it will
contain the settings for the default printer. Use the PrinterName
property to get the name of the default printer.

mreisi wrote:
Show quoteHide quote
> Hallo Leute,
>
> ich versuche seit langem eine Lösung für das Auslesen des
> Standarddruckers zu finden. WMI, API,
> System.Drawing.Printing.PrinterSettings habe ich alles schon versucht,
> leider nicht zurfrieden stellend. Hat jemand eine saubere Lösung ffür
> VB.Net oder C#???
> Mit der Win-API habe ich z.B. versucht GetDefaultPrinter aufzurufen,
> jedoch erscheint dann immer die Meldung "Es wurde versucht, im
> geschützten Speicher zu lesen oder zu schreiben. Dies ist häufig ein
> Hinweis darauf, dass anderer Speicher beschädigt ist." Was soll das?
> Eine Lösung für dieses Problem habe ich noch nicht gefunden.
> Code:
> Das kann frusten :-((
>
>   Declare Function GetDefaultPrinter Lib "winspool.drv" Alias
> "GetDefaultPrinterA" (ByRef pszBuffer As String, ByRef dwLen As
> Integer) As Integer
>
> Na ja wäre jedenfalls nett, wenn jemand einen Tip hätte.
>
> Vielen  Dank
>
Author
9 May 2006 2:14 PM
Herfried K. Wagner [MVP]
"Göran Andersson" <gu***@guffa.com> schrieb:
> From what I gather, if you create a PrintSettings object it will contain
> the settings for the default printer. Use the PrinterName property to get
> the name of the default printer.

In addition, check out 'PrinterSettings.IsDefaultPrinter'.

--
M S   Herfried K. Wagner
M V P  <URL:http://dotnet.mvps.org/>
V B   <URL:http://classicvb.org/petition/>
Author
9 May 2006 8:24 PM
mreisi
Ja das habe ich auch schon ausprobiert, jedoch funktioniert das leider
nicht, wenn man den Standarddrucker kurz zuvor gewechselt hat. Trotzdem
Danke für den Tipp. Die MSDN sagt dazu folgendes:
"Ruft einen Wert ab, der angibt, ob die PrinterName-Eigenschaft immer
dann den Standarddrucker festlegt, wenn der Benutzer PrinterName nicht
explizit festlegt."
Das ist leider nicht wirklich die Lösung.
Author
9 May 2006 8:28 PM
mreisi
Ja das habe ich auch schon ausprobiert, jedoch funktioniert das leider
nicht, wenn man den Standarddrucker kurz zuvor gewechselt hat. Trotzdem
Danke für den Tipp. Die MSDN sagt dazu folgendes:
"Ruft einen Wert ab, der angibt, ob die PrinterName-Eigenschaft immer
dann den Standarddrucker festlegt, wenn der Benutzer PrinterName nicht
explizit festlegt."
Das ist leider nicht wirklich die Lösung.