ERLEDIGT
JA
JA
ANTWORTEN
23
23
ZUGRIFFE
4430
4430
EMPFEHLEN
-
Wieso schaust dir nicht den Link zu CodeGuru an, den ich gepostet hab? Der wird dir sicher weiterhelfen.
-
Das Prog soll auf jedem Rechner, auf dem es augeführt wird, die Informationen
holen. Geht das mit deinem Link?
-
Geht unter XP und 2000 (vermutlich auch 2003).
Nur warum such ich eigentlich für dich und poste einen Link, wenn du dir das nicht einmal ansiehst?
-
Ich hab mir das schon angesehen, aber bin da nicht weitergekommen.
Hab da auch keinen Code gesehen.
Bin schon wie gesagt ein Anfänger.
Weiß jetzt auch nicht wie ich den Link auf mein Programm umsetzen kann.
-
Was is so schwierig daran? Probier das halt aus, was geschrieben steht.
zB bekommst mit
rundll32 printui.dll,PrintUIEntry /f "results.txt" /Xg /n\\nightwish\Laserjet
die Druckereigenschaften in die Datei results.txt geschrieben. Damit kannst du unter anderem Treiber installieren, deinstallieren und dir die Informationen besorgen.
-
Und wohin soll ich das scheiben, wenn ich es in OnButtonClick Ereignis schreibe bekomm ich Compilerfehler.
-
Code :
1
System.Diagnostics.Process.Start( "rundll32 printui.dll,PrintUIEntry /f "results.txt" /Xg /n\\nightwish\Laserjet" );
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...
-
Ich hab mal in der WMI weitergesucht.
Laut Win32_PnPSignedDriver hat der Druckertreiber folgende Version:
"2:4.00,2:500,2:5.1"
So, wenn ich aber über "Drucker und Faxgeräte" über Eigenschaften nach der
Treiberversion suche, finde ich als Version "1.56".
Über die WMI ist es relativ einfach an die Informationen zu kommen, aber leider
haben die Versionen andere Werte.
Auf MSDN finde ich keine Management Klasse, in der die "Treiberversion" noch steht.
Kennt vllt jemand ne Klasse in der die richtige Treiberversion steht?
MfG
Alex
-
Servus Leute,
also ich hab mich weiterhin mit meinem Problem geschäftig und hab endlich ne Lösung gefunden.
Ich benutze jetzt die WMI um die installierten Drucker auszulesen und ihnen den Pfad zu ihren Treibern zuzuordnen.
Das Problem war: In Win32_Printer stehen die Namen der Drucker, die momentan bei "Drucker und Faxgeräte" angezeigt werden. Und in Win32_PrinterDriver stehen anscheinend die Namen der Drucker, die schonmal installiert waren.
Also habe ich über Win32_Printer ein array erstellt in dem alle Drucker aus "Drucker und Faxgeräte" stehen. Dann habe ich noch 2 arrays über Win32_PrinterDriver, in denen einmal alle Namen und dann alle Pfade aus Win32_PrinterDriver stehen. Dann werden die Namen aus Win32_Printer mit denen aus Win32_PrinterDriver verglichen und bei Übereinstimmung wird den Namen aus Win32_Printer ein Treiberpfad zugeordnet.
Jetzt da ick zu jedem Drucker aus "Drucker und Faxgeräte" einen Treiberpfad habe, kann ich einfach aus jeder *.dll die FileVersion auslesen uns somit die Treiberversion. Die wird dann auch noch in ein array gepackt und dann können alle Infos ins ListView eingetragen werden.
Es muss ein Verweis zu System.Managemt.dll hinzugefügt werden!
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 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105
using System.Management; using System.Diagnostics; #region holt drucker informationen private void Printer() { #region anzahl der drucker holen ManagementClass anzahlMC = new ManagementClass("Win32_Printer"); ManagementObjectCollection anzahlMOC = anzahlMC.GetInstances(); int ianzahl = anzahlMOC.Count; #endregion #region anzahl der druckertreiber holen ManagementClass treiberanzahlMC = new ManagementClass("Win32_PrinterDriver"); ManagementObjectCollection treiberanzahlMOC = treiberanzahlMC.GetInstances(); int itreiberanzahl = treiberanzahlMOC.Count; #endregion #region druckernamen in array packen string[] druckername = new string [ianzahl]; ManagementClass namenMC = new ManagementClass("Win32_Printer"); ManagementObjectCollection namenMOC = namenMC.GetInstances(); int inamen = 0; foreach ( ManagementObject namenMO in namenMOC) { druckername [inamen] = namenMO["DriverName"].ToString(); inamen++; } #endregion #region treibername und -pfad in arrays packen string [] treibername = new string[itreiberanzahl]; string [] treiberpfad = new string[itreiberanzahl]; string strtrenner = ","; char [] trenner = strtrenner.ToCharArray(); ManagementClass treiberMC = new ManagementClass("Win32_PrinterDriver"); ManagementObjectCollection treiberMOC = treiberMC.GetInstances(); int ipfad = 0; foreach ( ManagementObject treiberMO in treiberMOC) { string vollername = treiberMO["Name"].ToString(); string [] split = vollername.Split(trenner,2); split [1] = treiberMO["DriverPath"].ToString(); treibername[ipfad] = split[0].ToString(); treiberpfad[ipfad] = split[1].ToString(); ipfad++; } #endregion #region jedem drucker treiberpfad zuordnen string[] druckerpfad = new string [druckername.Length]; for (int i1=0; i1<druckername.Length; i1++) { for (int i2=0; i2<treibername.Length; i2++) { if (druckername[i1].Equals(treibername[i2])) { druckerpfad[i1] = treiberpfad[i2]; } } } #endregion #region treiberversion in array packen string[] treiberversion = new string[druckername.Length]; for(int i=0; i<druckername.Length; i++) { FileVersionInfo tversion = FileVersionInfo.GetVersionInfo(druckerpfad[i]); treiberversion[i] = tversion.FileVersion; } #endregion #region infos ins listview packen ListViewItem item0 = new ListViewItem("Drucker"); hwlistview.Items.Add(item0); ManagementClass fertigMC = new ManagementClass("Win32_Printer"); ManagementObjectCollection fertigMOC = fertigMC.GetInstances(); int lvi = 0; foreach ( ManagementObject fertigMO in fertigMOC) { ListViewItem item1 = new ListViewItem(" Drucker",0); try {item1.SubItems.Add(druckername[lvi].ToString());} catch {} ListViewItem item2 = new ListViewItem(" Modell",0); try {item2.SubItems.Add(fertigMO["DriverName"].ToString());} catch {} ListViewItem item3 = new ListViewItem(" Treiberversion",0); try {item3.SubItems.Add(treiberversion[lvi].ToString());} catch{} ListViewItem item4 = new ListViewItem(" Port",0); try {item4.SubItems.Add(fertigMO["PortName"].ToString());} catch {} hwlistview.Items.AddRange(new ListViewItem[]{item1, item2,item3, item4}); lvi++; UpdatehwProgressBar(false); } #endregion } #endregion
So ich hoffe das wird einigen weiterhelfen, die das selbe Prob haben.
MfG
Alex
Ä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





