druckertreiber version auslesen

coolazid

Grünschnabel
Tach Leute,

ich bin gerade dabei ein Programm zu schreiben, welches mir die Namen der installierten Drucker anzeigt. Das hat auch soweit geklappt. Hab die Daten mittels WMI rausgesucht. Doch jetzt will ich noch die Treiberversion von den Druckern raussuchen. Bin leider in der WMI nicht fündig geworden. Und in der Registrierung sind die Daten so verstreut. Ich wollte das Programm auch auf anderen Rechnern laufen lassen und wenn die Daten in der Registrierung so zerstreut sind, komme ich über fixe Angaben wohl nicht weiter. Hat hier jemand ne Ahnung, wie man dynamisch an die Druckertreiber Version kommt und das Programm auch auf anderen Rechnern die Versionen anzeigt?

Danke im voraus.
MfG
coolazid
 

Christian Kusmanow

Erfahrenes Mitglied
Hallo coolazid!

Hast Du mal die Suche des Forums angestengt?
[thread=200669]Dieser Thread[/thread] sollte Dir weiterhelfen. ;)
Mit dem Beispielprogramm kannst Du dir alle WMI verzeichnisse ausgeben lassen. :)

MfG, cosmo
 

coolazid

Grünschnabel
Hallo cosmochaosmaker,

ich habe die Suchfunktion benutzt und zu meinem Problem nichts gefunden.
Wie ich in meinem ersten Post geschrieben haben, habe ich bereits über die WMI
die Drucker gefunden. Jetzt ist mein Problem, dass ich zu jedem Drucker die passende
Treiberversion haben will. Ich habe über msdn keine Klasse gefunden, die mir die
Druckertreiber Version ausspuckt. Jetzt hoffe ich, dass mir jemand sagen kann, wo
ich suchen muss.

MfG
 

coolazid

Grünschnabel
Hallo,

hab mal weiter im Netz nach einer Lösung für mein Problem gefunden.
Leider hab ich nichts gefunden was direkt zur Lösung beitragen könnte.
Aber auf einer Seite hat jemand geschrieben, dass er über System.Drawing
an die Druckertreiber herangekommen ist (er wollte den Standart-Drucker mit
einem C# Prog ändern).
Jetzt meine Frage: Hat jemand ne Ahnung wie man über System.Drawing
an die Druckertreiber kommt und ob man so auch die Treiberversionen heraus-
finden kann.

MfG
Alex
 

Christian Kusmanow

Erfahrenes Mitglied
So, im Namespace Drawing hab ich nichts bezüglich der Druckerversion gefunden.
Aber ich hab mal gegoogelt und das hier gefunden.
Ich schätze mal das Du davon blos das brauchst:
Code:
using System.Runtime.InteropServices;

public static short DRIVERVERSION = 0; // Device driver version

/// <summary>
/// Call the GetDeviceCaps Win32 method
/// </summary>
[DllImport("gdi32.dll")]
public static extern Int16 GetDeviceCaps(
[In] [MarshalAs (UnmanagedType.U4)] int hDc,
[In] [MarshalAs (UnmanagedType.U2)] Int16 funct );

// hDc ist das Handle;
object o = GetDeviceCaps( hDc, DRIVERVERSION );
Hab's aber nicht getestet.
Das mit dem Handle und dem Rückgabewert ist jetzt dein Part.
Kannst ja mal den kompletten Code posten wenndes hinbekommen hast. :)

Hoffe mal das Dich das weiterbringt.

MfG, cosmo
 

Norbert Eder

Erfahrenes Mitglied
CodeProject is eh nix drinnen. Aber über die DruckerSettings sieht man auch wie man zu den Informationen kommt. Das sollte als Ansatzpunkt eigentlich reichen. Der Weg sollte damit zu finden sein.
 

coolazid

Grünschnabel
Hallo,

erstmal danke für eure Hilfe.

Ich komme aber mit dem Codeschnipsel nicht weiter. Bin auch nicht gerade ein
Programmier-Genie. Ich mache gerade Praktikum bei einer Softwarefirma und
da hab ich die Aufgabe bekommen, ein Programm mit C# zu schreiben, welches
die installieren Drucker anzeigt und halt deren Treiberversion.

Ich habe vorher noch nie mit C# programmiert und in der Schule nur ein bisschen
Delphi, hab also nicht viel Erfahrung.

Die Drucker habe ich über die WMI ausgelesen, im i-net waren viele gute Berichte,
aber mit den Treiber komme ich überhaupt nicht weiter.

Kann mir vllt jemand ein Beispiel programmieren?

MfG
Alex
 

Norbert Eder

Erfahrenes Mitglied
Nimms mir nicht übel, aber Programmieren musst schon selber. Du kannst hier Tipps und Tricks erwarten, aber sicher keine fertige Lösungen. Immerhin ist es DEINE Aufgabe eine Lösung zu finden.

Aber vielleicht hilft dir dieser Link weiter.
 
Zuletzt bearbeitet: