ERLEDIGT
JA
JA
ANTWORTEN
23
23
ZUGRIFFE
4430
4430
EMPFEHLEN
-
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
-
Hallo coolazid!
Hast Du mal die Suche des Forums angestengt?
Dieser Thread sollte Dir weiterhelfen.
Mit dem Beispielprogramm kannst Du dir alle WMI verzeichnisse ausgeben lassen.
MfG, cosmoMfG,
Christian
Wer sein Problem definiert, hat es schon halb gelöst!
Bitte markiert eure Themen als erledigt. Sonst macht so ein Forum als Nachschlagewerk keinen Sinn.
The Code Project! - C# Programming | C# / VB.NET Pendants
Regeln + Netiquette
Liebe FIAEs, verlasst euch nicht auf das was in der Berufsschule "vermittelt" wird
und vor allem nicht auf das, was euch die IHK dazu erzählt!
Die haben so viel Ahnung von dem Gewerk, wie der Bundestag vom Haushalt...
-
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
-
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
-
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:
Hab's aber nicht getestet.Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14
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 );
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, cosmoMfG,
Christian
Wer sein Problem definiert, hat es schon halb gelöst!
Bitte markiert eure Themen als erledigt. Sonst macht so ein Forum als Nachschlagewerk keinen Sinn.
The Code Project! - C# Programming | C# / VB.NET Pendants
Regeln + Netiquette
Liebe FIAEs, verlasst euch nicht auf das was in der Berufsschule "vermittelt" wird
und vor allem nicht auf das, was euch die IHK dazu erzählt!
Die haben so viel Ahnung von dem Gewerk, wie der Bundestag vom Haushalt...
-
Man findet halt nicht alles, wenn man nur auf Deutsch sucht.
http://www.developersdex.com/vb/mess...P15.phx.gbl%3E
http://www.codeproject.com/dotnet/NE...er_Library.asp
http://www.ondotnet.com/pub/a/dotnet...html?page=last
-
Wie wahr....
Zitat von Norbert Eder

Auf dem Beispiel von TheCodeProject hab ich aber anfangs nichts
bezüglich der DriverVersion gefunden. Muss das wohl übersehen haben. *peinlich*MfG,
Christian
Wer sein Problem definiert, hat es schon halb gelöst!
Bitte markiert eure Themen als erledigt. Sonst macht so ein Forum als Nachschlagewerk keinen Sinn.
The Code Project! - C# Programming | C# / VB.NET Pendants
Regeln + Netiquette
Liebe FIAEs, verlasst euch nicht auf das was in der Berufsschule "vermittelt" wird
und vor allem nicht auf das, was euch die IHK dazu erzählt!
Die haben so viel Ahnung von dem Gewerk, wie der Bundestag vom Haushalt...
-
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.
-
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
-
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.Geändert von Norbert Eder (11.07.05 um 11:28 Uhr)
-
Stimmt schon, dass es meine Aufgabe ist, aber wenn ich keine Ahnung habe
wie ich an die Treiberversion komme, dann kann ich die Aufgabe auch nicht lösen.
Ich verstehe nicht wie man auf die Infos zugreift und wie man sie ausgibt.
Natürlich kann ich nicht erwarten, dass andere für mich die Arbeit machen, aber
ein paar Lösungsansätze wären nicht schlecht.
-
Ich hab dir einen Lösungsansatz geliefert
-
Das stimmt, nur leider kann ich nicht wirklich viel damit anfangen.

Edit:
Der Code z. B. funktioniert, aber ich hab keine Ahnung wie ich auf die da was
ausgeben soll, wenn der Code überhaupt irgendwelche Infos bekommt.
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
public static short HORZSIZE = 4; // Horizontal size in millimeters public static short VERTSIZE = 6; // Vertical size in millimeters public static short HORZRES = 8; // Horizontal width in pixels public static short VERTRES = 10; // Vertical height in pixels public static short PHYSICALOFFSETX = 112; // Physical Printable Area x public static short PHYSICALOFFSETY = 113; // Physical Printable Area y /// <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); /// <summary> /// Return the device 'hard' margins for the passed in /// Device Context handle. Return data in 1/100ths inch /// </summary> /// <param name="hDc">Input handle</param> /// <param name="left">output left margin in 1/100ths inch</param> /// <param name="top">output top margin in 1/100ths inch</param> /// <param name="right">output right margin in 1/100ths inch</param> /// <param name="bottom">output bottom margin in 1/100ths inch</param> public void GetHardMargins(int hDc, ref float left, ref float top, ref float right, ref float bottom) { float offx = Convert.ToSingle(GetDeviceCaps(hDc, PHYSICALOFFSETX)); float offy = Convert.ToSingle(GetDeviceCaps(hDc, PHYSICALOFFSETY));; float resx = Convert.ToSingle(GetDeviceCaps(hDc, HORZRES)); float resy = Convert.ToSingle(GetDeviceCaps(hDc, VERTRES)); float hsz = Convert.ToSingle(GetDeviceCaps(hDc, HORZSIZE))/25.4f; // screen float vsz = Convert.ToSingle(GetDeviceCaps(hDc, VERTSIZE))/25.4f; // screen float ppix = resx/hsz; float ppiy = resy/vsz; left = (offx/ppix) * 100.0f; top = (offy/ppix) * 100.0f; bottom = top + (vsz * 100.0f); right = left + (hsz * 100.0f); }Geändert von coolazid (11.07.05 um 12:14 Uhr)
-
Ok, kann ich verstehen. Als Anfänger ist vor allem der Quellcode von TheCodeProject
non understandable.
Das Beispiel von TheCodeProject baut die Struktur nach,
mit der das System anscheinend Drückerinformationen speichert.Das Beispiel aus dem Codeguru Forum beschreibt einen WorkArround via OS.Code :1 2 3
struct DEVMODE{ [...] } DEVMODE dm = (DEVMODE)Marshal.PtrToStructure(yDevModeData, typeof(DEVMODE)); MessageBox.Show( dm.dmDriverVersion.ToString() );
Da kann man sich eine Datei mit den Druckerinformationen irgendwo abspeichern
und man braucht seine Infos dann einfach nur auslesen.
MfG, cosmoMfG,
Christian
Wer sein Problem definiert, hat es schon halb gelöst!
Bitte markiert eure Themen als erledigt. Sonst macht so ein Forum als Nachschlagewerk keinen Sinn.
The Code Project! - C# Programming | C# / VB.NET Pendants
Regeln + Netiquette
Liebe FIAEs, verlasst euch nicht auf das was in der Berufsschule "vermittelt" wird
und vor allem nicht auf das, was euch die IHK dazu erzählt!
Die haben so viel Ahnung von dem Gewerk, wie der Bundestag vom Haushalt...
-
Ich bin total überfordert mit den Druckertreibern. Über die WMI hat es so gut
geklappt. Und jetzt versteh ich überhaupt nichts mehr.
Stehen die Infos ganz sicher nirgends in der WMI?
Ähnliche Themen
-
Java Version auslesen
Von Ganto im Forum JavaAntworten: 4Letzter Beitrag: 11.07.05, 11:38 -
Java Version auslesen
Von sonny1986 im Forum ASPAntworten: 0Letzter Beitrag: 11.07.05, 11:24 -
maximale Version auslesen
Von rogo im Forum Relationale DatenbanksystemeAntworten: 4Letzter Beitrag: 24.09.04, 22:34 -
Version String auslesen
Von Frarr im Forum VisualStudio & MFCAntworten: 1Letzter Beitrag: 12.03.04, 22:38 -
Windows Version (Sprache) auslesen
Von virtualsix im Forum ASPAntworten: 1Letzter Beitrag: 16.12.02, 09:35





Zitieren
Login





