Im Dateianhang seht ihr worauf ich gerne zugreifen möchte.
Ich würde gerne in einer Funktion die PHYSISCHEN (realen) Drucker herausfinden, sprich Microsofts Document Writer, Postscript-Drucker oder pdf-Drucker á la "FreePDF" herausfiltern.
Eine Lösung habe ich über biegen und brechen zwar am laufen, diese gefällt mir aber nicht und ist auch nicht 100% konsistent.
Die einfachste Möglichkeit wäre (glaube ich) die Strings in den Druckereingeschaften auszulesen und auszuwerten, hierzu würde sowohl das Feld "Anschlüsse" als auch das Feld "Beschreibung" mir weiterhelfen.
Gibt es eine Möglichkeit an diese Informationen zu kommen?
Gibt es andere Lösungsansätze?
Hallo!
Sie dir mal die Klasse PrinterSettings an, da findest du alles, was du brauchst.
Nobody is perfect. I'm sad, i'm not nobody 🙁
Erstmal mit
foreach (string printerName in PrinterSettings.InstalledPrinters)
{
}
die Drucker durchlaufen, aber wie rufe ich diese Funktion für den einzelnen Drucker auf?
//
// Zusammenfassung:
// Ruft einen Wert ab, der angibt, ob die Druckausgabe nicht an einen Druckeranschluss,
// sondern an eine Datei gesendet wird.
//
// Rückgabewerte:
// true, wenn die Druckausgabe an eine Datei gesendet wird, andernfalls false.
// Der Standardwert ist false.
public bool PrintToFile { get; set; }
Dies funktioniert nicht:
PrinterSettings test = new PrinterSettings();
test.PrinterName = @"FreePDF XP";
if (test.PrintToFile)
MessageBox.Show("to file");
else
MessageBox.Show("not to file");
Ich denke, mit .NET-Mitteln wirst du nicht an die internen Daten herankommen, sondern du mußt dann schon die Win-API benutzen:
Hier gibt es eine Liste aller Printer-Strukturen:
http://msdn2.microsoft.com/de-de/library/ms535665(en-us,VS.85).aspx
Wie greife ich denn auf diese einzelnen Strukturen zu?
Welche DLL muss ich da einbinden und wie lege ich fest, von welchem Drucker ich eines der Strukturen abrufen möchte?
Kann damit nicht wirklich viel anfangen, tut mir leid. 🙁
Hrm, um am Effektivsten mit der Windowsdokumentation zu arbeiten wie sie dir Th69für die winspool.drv gegeben hat. Klickst die jeweiligen Links der Druckerinformationen an. Wenn also z.B. den Link für PORT_INFO_1 anklickst, siehst dann oberhalb die erklärung und unterhalb davon ein "See Also: Printing and Print Spooler Overview, Printing and Print Spooler Structures, EnumPorts " wenn du diesen Link folgst oder teilweise diese Linknamen kopierst und auf www.pinvoke.net suchst bekommst du bereits die vorgefertigten Dll Imports + Beispiel wie man es verwendet.
Bei dir wäre das z.B. um die Ports auszulesen folgender Link.
Die Microsoftseiten sind übrigens alle so aufgebaut das unter "See Also" eigentlich immer den DLL Importnamen oder das Stichwort für den DLL Import findest. Somit braucht man theoretisch nichtmal die Dokumentation durchlesen, sondern gelangt sofort auf ein Codebeispiel(e) 🙂
Wie vernichtet stand Andreas unter den flammenden Augen seiner Kunden.
Ihm war's, als stünde des Schicksals dunkle Wetterwolke über seinem Haupte X(