Windows 11 Drucker auslesen

Deutschsprachiges X#-Forum – German language forum

Moderator: wriedmann

FFF
Posts: 1743
Joined: Fri Sep 25, 2015 4:52 pm
Location: Germany

Re: Windows 11 Drucker auslesen

Post by FFF »

Ich denke, Du bist mit XIDE unterwegs?
Dann zB im Source "PrinterSettings" markieren, F1 - öffnet die MS docu für Printersettings
(sonst: https://learn.microsoft.com/en-us/dotne ... esktop-9.0)

Schaust Du unter Links unter Properties scheint es keine "Installed Printer" zu geben, aber "IsDefaultPrinter" gibt es, also machst Du eine Schleife über die Rückgabe vom alten Code und kriegst es so raus. Wenn man das öfter braucht, kann man das natürlich auch in eine kleine Funktion, meinehalben "GetDefaultPrinter" packen und so verstecken..
Regards
Karl
(on Win8.1/64, Xide32 2.20, X#2.20.0.3)
Tudorf
Posts: 50
Joined: Wed Feb 08, 2023 3:43 pm

Re: Windows 11 Drucker auslesen

Post by Tudorf »

Hallo

Stimmt ich bin mit XIDE unterwegs. Allerdings nur für mein eigenes altes Programm. Deshalb habe ich auch große Probleme mit den Neuerungen.

IsDefaultPrinter ist nicht bekannt. Sie sollte aber lt Hilfe vorhanden sein.

// IF PrinterSettings.IsDefaultPrinter{ x }
// IF (PrinterSettings.IsDefaultPrinter) {PrinterSettings.PrinterName}
IF (PrinterSettings.IsDefaultPrinter) {x}

error XS0426: The type name 'IsDefaultPrinter' does not exist in the type 'System.Drawing.Printing.PrinterSettings'

Danke Martin
ic2
Posts: 1987
Joined: Sun Feb 28, 2016 11:30 pm
Location: Holland

Re: Windows 11 Drucker auslesen

Post by ic2 »

Hello Martin,
Tudorf wrote: Fri May 16, 2025 7:29 am Wie kann ich ein Bild hochladen. Ich hatte den link https://ibb.co/spSXSjc3 zwischen img und /img eingefügt. Sehe aber kein Bild.
Unter der Nachricht: Attachments, Add Files, Place inline

Sieht so aus: Dateiname zwischen 'attachment' tags.
XS20250516.jpg
Dick
User avatar
Chris
Posts: 5630
Joined: Thu Oct 08, 2015 7:48 am
Location: Greece

Re: Windows 11 Drucker auslesen

Post by Chris »

Hi Martin,

It's very strange how this particular thing has been implemented in .Net, but this code should give the name of the default printer:

Code: Select all

USING System.Drawing.Printing
....

LOCAL oPS AS PrinterSettings
oPS := PrinterSettings{}
? oPS:IsDefaultPrinter // should return TRUE
? oPS:PrinterName // name of default printer
Chris Pyrgas

XSharp Development Team
chris(at)xsharp.eu
Tudorf
Posts: 50
Joined: Wed Feb 08, 2023 3:43 pm

Re: Windows 11 Drucker auslesen

Post by Tudorf »

Hallo an alle

Danke für die Hilfe. Es läuft.

Martin
Tudorf
Posts: 50
Joined: Wed Feb 08, 2023 3:43 pm

Re: Windows 11 Drucker auslesen

Post by Tudorf »

Hallo

Könnte mir noch jemand sagen wie ich das setup bzw. PrinterSettings() vom Drucker aufrufe.

_aktPrinter: PrinterSettings() akzeptiert X# nicht.

Ich habe keine Ahnung was Mircrosoft mir mit den Infos sagen will.

Danke Martin
User avatar
ArneOrtlinghaus
Posts: 495
Joined: Tue Nov 10, 2015 7:48 am
Location: Italy

Re: Windows 11 Drucker auslesen

Post by ArneOrtlinghaus »

Es kann davon abhängen, für welche Komponente man die Drucker auslesen will. Windows hat mehrere (ältere) Drucker-APIs.
Wir haben noch zum Teil die Crystal Reports 9-Runtime aktiv und die benutzt eine alte Drucker-API, die noch die Druckerports benötigt.
Entsprechend können Druckernamen/Einstellungen abweichen.

Deshalb wird in unseren Programmen bei Benutzung der Crystal Reports-Runtime ein Vergleich über die Registry gemacht zwischen neueren Druckereinstellungen und älteren und eventuell eine Warnung ausgegeben, dass etwas nicht stimmt. Ansonsten druckt das Programm ins Leere ohne eine Warnung auszugeben. Bei den meisten Windows-Installationen wird beim Einloggen des Benutzers automatisch alles auf den gleichen Stand gebracht, aber es gibt manchmal Ausnahmen.

Gruß
Arne
Tudorf
Posts: 50
Joined: Wed Feb 08, 2023 3:43 pm

Re: Windows 11 Drucker auslesen

Post by Tudorf »

Hallo

Ich habe mich wahrscheinlich unglücklich ausgedrückt. Ich meine den Aufruf unter .NET für die Druckereigenschaften.
Druckereigenschaften.jpg
Unter VO hatte ich es so:

METHOD pshSetup ()
// Standard-Dialogbox des Druckerteibers anzeigen
LOCAL nPos AS WORD

nPos := oDCcmbDrucker:currentItemNo
IF nPos = 0
InfoBox { , "Achtung Hinweiß", ;
"Kein gültiger Drucker ausgewählt !" }:show ()
ELSE

PrintingDevice { _aPrinter [nPos,1]}:setup ()
ENDIF

RETURN SELF

Martin
Jamal
Posts: 360
Joined: Mon Jul 03, 2017 7:02 pm

Re: Windows 11 Drucker auslesen

Post by Jamal »

You can show a Printer Dialog or a Printer Dialog with Properties button enabled:

Code: Select all

 PRIVATE METHOD ShowPrinterDialogButton_Click(sender AS System.Object, e AS System.EventArgs) AS VOID STRICT
     LOCAL printDoc AS PrintDocument
     LOCAL printDialog AS printDialog
     LOCAL result AS DialogResult

     printDoc := PrintDocument{}
     printDialog := printDialog{}
     printDialog:Document := printDoc

     result := printDialog:ShowDialog()
     IF result == DialogResult.OK
         MessageBox.Show("Selected printer: " + printDoc:PrinterSettings:PrinterName)
         // Optional: printDoc:Print()
     ENDIF

     RETURN
 END METHOD
 PRIVATE METHOD ShowPrinterPropertiesButton_Click(sender AS System.Object, e AS System.EventArgs) AS VOID STRICT
     ShowPrinterProperties()
     RETURN
 END METHOD

 PRIVATE METHOD ShowPrinterProperties() AS VOID
     LOCAL printDialog AS printDialog
     printDialog := printDialog{}
     printDialog:UseEXDialog := TRUE  // Enables the Properties button

     IF printDialog:ShowDialog() == DialogResult.OK
         LOCAL PrinterName AS STRING
         PrinterName := printDialog:PrinterSettings:PrinterName
         MessageBox.Show("Selected Printer: " + PrinterName)
     ENDIF
     RETURN
 END METHOD
User avatar
Chris
Posts: 5630
Joined: Thu Oct 08, 2015 7:48 am
Location: Greece

Re: Windows 11 Drucker auslesen

Post by Chris »

Hi Martin,

Your code should work also in X#, I tested something similar here and I do see the printer setup dialog. Or do you mean this no longer works in Windows 11 ?
Chris Pyrgas

XSharp Development Team
chris(at)xsharp.eu
Post Reply