Jump to content
Sign in to follow this  
pfeffis

Drucker verbinden vb.net

Recommended Posts

Hallo @all.

 

Habe folgende lächerliche Zeile zusammen bekommen:

 

Sub Main()

 

 

' alle installierten Drucker ermitteln und

' in einer ComboBox zur Auswahl anzeigen

For Each sPrinter As String In PrinterSettings.InstalledPrinters

ComboBox1.Items.Add(sPrinter)

Next

 

End Sub

 

 

Ich würde ganz gerne Drucker als Anmeldescript in der AD verbinden. Vorab habe ich diese kleine Zeile "programmiert". Irgendwie kennt er die PrinterSettings nicht (wurde nicht deklariert).

 

Jemand eine Idee?

 

PS: ES muss vb.net sein

Share this post


Link to post
Share on other sites

Moin,

 

ein Anmeldeskript in VB.NET? Wer soll das denn wie ausführen? Was ist der Hintergrund dieser ... exotischen Anforderung? (Zumal wenn du offenbar keine besonderen VB-Kenntnisse hast.)

 

Mach es doch lieber so, wie es jeder macht und wie es funktioniert, z.B. hier beschrieben:

 

Drucker per Anmelde Script zuweisen

 

Gruß, Nils

Share this post


Link to post
Share on other sites

ok, als anmeldescript war etwas unglücklich ausgedrückt.

 

Die anderen Varianten kenne ich schon, nur sind diese nicht gerade praktikabel. Bei uns melden sich bspw. Azubis an unterschiedlichen Rechnern an, welche an logischerweise unterschiedlichen Orten stehen und dann mit unterschiedliche Drucker verbunden werden müssen. Und ich dachte mir dass ich die ganze Geschichte eleganter über vb.net hinbekomme - da ganz einfach objectorientiert.

Weiß nicht was daran so falsch sein soll - ich meine 10 Zeilen VB gegen 100 dos zeilen...

 

trotzdem erstmal danke

Share this post


Link to post
Share on other sites

Von falsch hast du gesprochen, nicht ich. Ein Anmeldeskript kann nun mal nicht in VB formuliert werden, daher meine Rückfrage. Dass es dir offenbar um was anderes geht, hast du ja erst hinterher gesagt.

 

Für das standortbezogene Verbinden von Druckern findest du auf gruppenrichtlinien.de auch eine Lösung. Wenn die nicht passt, solltest du vielleicht mal deine Anforderungen kundtun.

 

Oder falls es dir tatsächlich nur um dein Fragment ging: Irgendwoher muss VB ja wissen, was für ein Objekt "PrinterSettings" sein soll, oder? Dein Fragment definiert es ja nicht.

 

Gruß, Nils

Share this post


Link to post
Share on other sites

danke. das Import musste ich dennoch manuell machen :(. Foldenden Code habe ich nun zusammen:

 

Imports System.Drawing.Printing

Imports system.io

 

Module Module1

 

Sub Main()

 

Using file As StreamWriter = New StreamWriter("c:\drucker.txt")

For Each sPrinter As String In PrinterSettings.InstalledPrinters

file.Write(sPrinter & vbCrLf)

Next

End Using

 

End Sub

 

End Module

 

Damit liest er mir nun die installierten drucker aus. fein :). Step 2 wäre jetzt für mich Drucker zu verbinden, sprich aus AD Gruppen auszulesen und dem entsprechenden User zuzuweisen.

 

Da würde ich an sowas denken:

 

Dim net As Object

 

net = CreateObject("WScript.Network")

net.AddWindowsPrinterConnection("\\server\drucker")

 

ist das zum hinzufügen korrekt oder gibt es einen einfacheren weg?

Share this post


Link to post
Share on other sites

Ich würde sagen, wenn schon VB, dann alles in VB ;)

Z.B. in der Art:

Declare Function AddPrinterConnection Lib "winspool.drv"_ Alias "AddPrinterConnectionA" (ByVal pName As String) As Long
...
dummy = AddPrinterConnection("\\server\drucker")

Share this post


Link to post
Share on other sites

Wenn "AddPrinterConnection" als Funktion aufgerufen wird, brauchts ja ne Variable für den Rückgabewert. Für Rückgabewerte, die ich nur vorübergehend oder gar nicht auswerte, verwende ich ganz gerne ne "dummy"-Variable ;)

Share this post


Link to post
Share on other sites

vielen dank cybquest. Habe nun nach viel Recherche noch dieses Schnippselchen gefunden und weiß aber so ganz ehrlich überhaupt nicht was ich damit anfangen soll :(. Was bedeuten die xml "Anweisungen"? Wieso Public shared Sub? Fragen über Fragen

 

 

Module Module1

''' <summary>

''' Adds a Network Printer to the computer

''' </summary>

''' <param name="printerName">Druckername</param>

''' <param name="networkPath">Netzwerkpfad</param>

''' <param name="useExistingDriver">Don't overwrite existing driver</param>

''' <param name="setDefaultPrinter">Set as the default printer</param>

''' <remarks></remarks>

 

 

Public Sub AddNetworkPrinter(ByRef printerName As String, ByRef networkPath As String, _

Optional ByRef useExistingDriver As Boolean = 0, Optional ByRef setDefaultPrinter As Boolean = 0)

 

Dim cmdToSend As String = "rundll32 printui.dll,PrintUIEntry /in /m " & Chr(34) & printerName & Chr(34) & " /f " & networkPath

If useExistingDriver Then cmdToSend += " /u" ' /u = use the existing printer driver if it's already installed

If setDefaultPrinter Then cmdToSend += " /y" ' /y = set printer as the default

Shell(cmdToSend, AppWinStyle.Hide) ' execute the command

 

 

' Example of how to use this subroutine:

AddNetworkPrinter("Printername", "\\server\printername", True, True)

End Sub

 

End Module

Share this post


Link to post
Share on other sites

"Von weitem" sag ich jetzt mal, die XML-Tags am Anfang sind hauptsächlich zur Erklärung der Aufrufparameter.

Public shared sub... les ich nirgends.

Public Sub, damit die Prozedur auch aus anderen Modulen aufgerufen werden kann.

Das eigentliche Druckermapping in diesem Code besteht auch nur aus einem CMD-Shell-Aufruf der rundll32.

Der "Example"-Teil am Ende gehört eigentlich nicht mehr in die Sub mit rein! Würde sich ja sonst endlos selbst aufrufen...

Share this post


Link to post
Share on other sites

also nochmal vielen Dank. Habe hier eine Menge Arbeit vor mir (vb.net). Hänge gerade an den Gruppenabfragen fest.

 

System.DirectoryServices.ActiveDirectory

 

Nur irgendwie beiß ich mir hier gerade die Zähne aus. Wollt "nur" Abfragen welche Gruppe welche User beinhaltet.

Mhh...

So, nun bin ich etwas weiter:

 

Sub Main()

 

 

Dim sPath As String = "LDAP://ou=computer,ou=xyz,dc=net-xy,dc=local"

Dim local As New DirectoryEntry(sPath)

Dim searcher As New DirectorySearcher(local)

Dim results As SearchResultCollection

Dim result As SearchResult

 

searcher.Filter = "(objectClass=group)"

results = searcher.FindAll()

 

For Each result In results

Dim name As ResultPropertyValueCollection = result.Properties( _

"name")

MsgBox("name")

 

Next result

 

 

End Sub

 

 

Leider bekomme ich bis jetzt kein ergebnis raus.

Share this post


Link to post
Share on other sites
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte überlege Dir, ob es nicht sinnvoller ist ein neues Thema zu erstellen.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

Werbepartner:



×
×
  • Create New...