tutorials.de Buch-Aktion 05/2012
Seite 2 von 2 ErsteErste 12
ERLEDIGT
JA
ANTWORTEN
23
ZUGRIFFE
4430
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #16
    Avatar von Norbert Eder
    Norbert Eder Norbert Eder ist offline Mitglied Diamant
    Registriert seit
    Feb 2004
    Ort
    Österreich / Graz
    Beiträge
    5.137
    Blog-Einträge
    51
    Wieso schaust dir nicht den Link zu CodeGuru an, den ich gepostet hab? Der wird dir sicher weiterhelfen.
     

  2. #17
    Avatar von coolazid
    coolazid coolazid ist offline Mitglied
    Registriert seit
    Jul 2005
    Beiträge
    16
    Das Prog soll auf jedem Rechner, auf dem es augeführt wird, die Informationen
    holen. Geht das mit deinem Link?
     

  3. #18
    Avatar von Norbert Eder
    Norbert Eder Norbert Eder ist offline Mitglied Diamant
    Registriert seit
    Feb 2004
    Ort
    Österreich / Graz
    Beiträge
    5.137
    Blog-Einträge
    51
    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?
     

  4. #19
    Avatar von coolazid
    coolazid coolazid ist offline Mitglied
    Registriert seit
    Jul 2005
    Beiträge
    16
    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.
     

  5. #20
    Avatar von Norbert Eder
    Norbert Eder Norbert Eder ist offline Mitglied Diamant
    Registriert seit
    Feb 2004
    Ort
    Österreich / Graz
    Beiträge
    5.137
    Blog-Einträge
    51
    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.
     

  6. #21
    Avatar von coolazid
    coolazid coolazid ist offline Mitglied
    Registriert seit
    Jul 2005
    Beiträge
    16
    Und wohin soll ich das scheiben, wenn ich es in OnButtonClick Ereignis schreibe bekomm ich Compilerfehler.
     

  7. #22
    Avatar von Christian Kusmanow
    Christian Kusmanow Christian Kusmanow ist offline Mitglied Diamant
    Registriert seit
    Aug 2004
    Ort
    Aachen (NRW)
    Beiträge
    2.208
    Blog-Einträge
    15
    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...

  8. #23
    Avatar von coolazid
    coolazid coolazid ist offline Mitglied
    Registriert seit
    Jul 2005
    Beiträge
    16
    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
     

  9. #24
    Avatar von coolazid
    coolazid coolazid ist offline Mitglied
    Registriert seit
    Jul 2005
    Beiträge
    16
    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

  1. Java Version auslesen
    Von Ganto im Forum Java
    Antworten: 4
    Letzter Beitrag: 11.07.05, 11:38
  2. Java Version auslesen
    Von sonny1986 im Forum ASP
    Antworten: 0
    Letzter Beitrag: 11.07.05, 11:24
  3. maximale Version auslesen
    Von rogo im Forum Relationale Datenbanksysteme
    Antworten: 4
    Letzter Beitrag: 24.09.04, 22:34
  4. Version String auslesen
    Von Frarr im Forum VisualStudio & MFC
    Antworten: 1
    Letzter Beitrag: 12.03.04, 22:38
  5. Windows Version (Sprache) auslesen
    Von virtualsix im Forum ASP
    Antworten: 1
    Letzter Beitrag: 16.12.02, 09:35