Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

per VB den Standarddrucker ermitteln





Frage

Hallo kann mir jemand sagen, wie ich mit VB den Standarddrucker ermitteln kann? Und kann ich auch per VB einen anderen Drucker zum Standarddrucker machen, also ohne dass ich über die Druckereigenschaften gehe? Danke für eure Hilfe Frank

Antwort 1 von Wony

Hallo,
auf folgender Internetseite http://www.scriptinternals.de/content/4-Anwendungen/drucker/standard/stdprn0.htm findest du ein fertiges Script (VB-Script)zum Thema Standarddrucker festlegen.
Das Script listet alle Drucker im System auf und ermöglicht dann, einen neuen Standarddrucker festzulegen.
Weitere Infos findest du unter
WWW.WININFO.DE und WWW.SCRIPTINTERNALS.DE

Gruß Wony

Antwort 2 von struppi

Hallo,
Da wie hier im VBS und JS Forum sind denke ich mal das Du VBS meinst und nicht VB. In VB gibt es das Printer-Object. Damit kannst Du alles machen.
Für VBS habe ich mal eine kleine Demo einiger Varianten zusammengestellt.
Der Registryzugriff ist ein Beispiel für WIN98SE. Muß bei anderem BS angepasst werden.


on error resume next
Bsp = ""
Msgbox Printerliste

Function Printerliste()
Set shell = CreateObject("Shell.Application")
Set folder = shell.NameSpace(4)
Printerliste = "Das sind alle verfügbaren Drucker! Bitte genaue Schreibweise beachten!" & vbcrlf

           For Each item In folder.Items
            If item.Name <> "Neuer Drucker" Then
              Printerliste  = Printerliste & item.Name & vbcrlf
            Bsp = item.Name
            End If
           Next
End Function

Printerwechsel Inputbox("Welcher Drucker soll Standarddrucker werden?" & vbcrlf _
          & Printerliste,vbQuestion,Bsp) 

Function Printerwechsel(Printer)
Set shell = CreateObject("Shell.Application")
Set folder = shell.NameSpace(4)

For Each item In folder.Items
   If item.Name = Printer Then item.InvokeVerb "Als S&tandard definieren"
Next
End Function

Msgbox "Aus der Registry ausgelesener Standarddrucker : " & StandardPrinter 
Function StandardPrinter()
Set wshshell = CreateObject("Wscript.Shell")

key = "HKEY_LOCAL_MACHINE\Config\0001\System\CurrentControlSet\Control\Print\Printers\Default"

StandardAlt = wshshell.RegRead(key)
StandardPrinter = StandardAlt
End Function



Msgbox "Infos des Networkobjectes: " & vbcrlf & NetworkDrucker 


Function NetworkDrucker()
Set Netzwerk = CreateObject("Wscript.Network")
Antwort = Msgbox("Soll der Standarddrucker mal mit dem Networkobject gewechselt werden?",vbyesNo+VBQuestion)  
    if Antwort = vbyes then Netzwerk.setDefaultPrinter Inputbox("Printer-Namen eingeben! " & Printerliste,vbQuestion,Bsp)
Domaen = Netzwerk.UserDomain
UName = Netzwerk.UserName
CName = Netzwerk.ComputerName
Set ndcollection = Netzwerk.EnumPrinterConnections
For Each nd In ndcollection
ndListe = ndListe & nd & Chr(13) & Chr(10)
Next
Info = ""
Info = Info & "User-Domain:   " & Domaen & Chr(13) & Chr(10) _
            & "User-Name:     " & UName & Chr(13) & Chr(10) _
            & "Computer-Name: " & CName & Chr(13) & Chr(10) _
            & Chr(13) & Chr(10) & Chr(13) & Chr(10) _
            & "Permanente Netzwerk_Drucker Verbindungen:" & Chr(13) & Chr(10) _
            & Chr(13) & Chr(10) _
            & ndListe & Chr(13) & Chr(10)
NetworkDrucker = Info
End Function

gruß struppi

Antwort 3 von struppi

Hallo,
Da wie hier im VBS und JS Forum sind denke ich mal das Du VBS meinst und nicht VB. In VB gibt es das Printer-Object. Damit kannst Du alles machen.
Für VBS habe ich mal eine kleine Demo einiger Varianten zusammengestellt.
Der Registryzugriff ist ein Beispiel für WIN98SE. Muß bei anderem BS angepasst werden.


on error resume next
Bsp = ""
Msgbox Printerliste

Function Printerliste()
Set shell = CreateObject("Shell.Application")
Set folder = shell.NameSpace(4)
Printerliste = "Das sind alle verfügbaren Drucker! Bitte genaue Schreibweise beachten!" & vbcrlf

           For Each item In folder.Items
            If item.Name <> "Neuer Drucker" Then
              Printerliste  = Printerliste & item.Name & vbcrlf
            Bsp = item.Name
            End If
           Next
End Function

Printerwechsel Inputbox("Welcher Drucker soll Standarddrucker werden?" & vbcrlf _
          & Printerliste,vbQuestion,Bsp) 

Function Printerwechsel(Printer)
Set shell = CreateObject("Shell.Application")
Set folder = shell.NameSpace(4)

For Each item In folder.Items
   If item.Name = Printer Then item.InvokeVerb "Als S&tandard definieren"
Next
End Function

Msgbox "Aus der Registry ausgelesener Standarddrucker : " & StandardPrinter 
Function StandardPrinter()
Set wshshell = CreateObject("Wscript.Shell")

key = "HKEY_LOCAL_MACHINE\Config\0001\System\CurrentControlSet\Control\Print\Printers\Default"

StandardAlt = wshshell.RegRead(key)
StandardPrinter = StandardAlt
End Function



Msgbox "Infos des Networkobjectes: " & vbcrlf & NetworkDrucker 


Function NetworkDrucker()
Set Netzwerk = CreateObject("Wscript.Network")
Antwort = Msgbox("Soll der Standarddrucker mal mit dem Networkobject gewechselt werden?",vbyesNo+VBQuestion)  
    if Antwort = vbyes then Netzwerk.setDefaultPrinter Inputbox("Printer-Namen eingeben! " & Printerliste,vbQuestion,Bsp)
Domaen = Netzwerk.UserDomain
UName = Netzwerk.UserName
CName = Netzwerk.ComputerName
Set ndcollection = Netzwerk.EnumPrinterConnections
For Each nd In ndcollection
ndListe = ndListe & nd & Chr(13) & Chr(10)
Next
Info = ""
Info = Info & "User-Domain:   " & Domaen & Chr(13) & Chr(10) _
            & "User-Name:     " & UName & Chr(13) & Chr(10) _
            & "Computer-Name: " & CName & Chr(13) & Chr(10) _
            & Chr(13) & Chr(10) & Chr(13) & Chr(10) _
            & "Permanente Netzwerk_Drucker Verbindungen:" & Chr(13) & Chr(10) _
            & Chr(13) & Chr(10) _
            & ndListe & Chr(13) & Chr(10)
NetworkDrucker = Info
End Function

gruß struppi

Antwort 4 von FrankP

vielen Dank an alle, die hier geantwortet haben. Hat mir weiter geholfen.

Gruß
Frank


Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: