Jump to content

Add Printers


Vaeb
 Share

Recommended Posts

Hello everybody!

I have a directory with shortcuts to printers inside.

I need to install all of the printers automatic.

Can any1 help me, please?

I really need to do that.

Greets

Vaeb

Link to comment
Share on other sites

There are several options open to you. The first method is to use command line. Take a look at this site:

http://www.robvanderwoude.com/2kprintcontrol.html

A second option is you can use this script. It will work for a windows print server, not novell. It will install printers on a machine level, so no matter who logs in, they can print. You run it from the PC you want to install the printers.

#include <GuiConstants.au3>
#include <Process.au3>
#include <Array.au3>
$g_szVersion = "PrintInst.exe"
If WinExists($g_szVersion) Then Exit
Opt("TrayIconDebug", 1) ;debug is on

Dim $hService, _
        $data, _
        $sPrinter, _
        $sPrinterList, _
        $font = "Comic Sans MS", _
        $Input[12], $Combo[7], $radio[7], _
        $check[11], $Button[6]

Global Enum Step + 25 _
        $CON_POS_1 = 25, _
        $CON_POS_2, _
        $CON_POS_3, _
        $CON_POS_4, _
        $CON_POS_5, _
        $CON_POS_6, _
        $CON_POS_7, _
        $CON_POS_8, _
        $CON_POS_9, _
        $CON_POS_10, _
        $CON_POS_11

GUICreate("", 600, 290, -1, -1, BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS))
GUICtrlCreateLabel("\\", 20, 54, 10, 20)
$iniread_1 = IniRead(@ScriptDir & "/npu.ini", "SERVER", "SERVER", "")
$iniread_2 = IniRead(@ScriptDir & "/npu.ini", "Printers", "PLIST", "")
iniwrite(@ScriptDir & "/npu.ini", "Printers", "LOCAL", "")
$iniread_3 = IniRead(@ScriptDir & "/npu.ini", "Printers", "LOCAL", "")
$LocalPrinters = StringSplit($iniread_3, "|")
If $LocalPrinters[0] > 10 Then
    ReDim $LocalPrinters[11]
EndIf

$Input[1] = GUICtrlCreateInput($iniread_1, 35, 50, 100, 20)

For $i = 2 To 11
    $Input[$i] = GUICtrlCreateInput("", 270, Eval("CON_POS_" & $i - 1), 270, 21)
    If ($i - 1) <= $LocalPrinters[0]Then
        GUICtrlSetData(-1, $LocalPrinters[$i - 1])
    EndIf
Next

For $i = 1 To 6
    $Combo[$i] = GUICtrlCreateCombo("", 20, Eval("CON_POS_" & $i + 2), 170, 21)
    GUICtrlSetData(-1, $iniread_2)
    $radio[$i] = GUICtrlCreateRadio("", 210, Eval("CON_POS_" & $i + 2), 15, 21)
Next

For $i = 1 To 10
    $check[$i] = GUICtrlCreateCheckbox("", 550, Eval("CON_POS_" & $i), 20, 20)
Next

GUICtrlCreateLabel("Currently install printers", 270, 3, 200, 21)
GUICtrlCreateLabel("Delete", 550, 7, 100, 21)
GUICtrlCreateGroup("Default", 200, 62, 50, 160)

$Button[1] = GUICtrlCreateButton("Run", 20, 225, 35, 30)
$Button[2] = GUICtrlCreateButton("Exit", 65, 225, 35, 30)
$Button[3] = GUICtrlCreateButton("Find", 146, 50, 43, 20)
$Button[4] = GUICtrlCreateButton("Find", 498, 3, 43, 20)
$Button[5] = GUICtrlCreateButton("Restart Spooler", 110, 225, 80, 30)

$Label_1 = GUICtrlCreateLabel("   Network Printer Utility" & @CRLF & "for Windows Print Servers", 20, 0, 240, 50)
GUICtrlSetFont(-1, 10, 400, "", $font)
$Label_2 = GUICtrlCreateLabel("2006 CTS Scripting Team", 40, 270, 130, 25)
$_dummy = GUICtrlCreateDummy()

GUISetState()

While 1
    $msg = GUIGetMsg()
    Switch $msg
        Case $GUI_EVENT_CLOSE
            ExitLoop
        Case $Button[1]
            _Rprinter()            
            _instprint()
            MsgBox(0, "", "Done!", 3)
        Case $Button[2]
            ExitLoop
        Case $Button[3]
            $data = GUICtrlRead($Input[1], 0)
            _netprint1()
        Case $Button[4]
            _getinstalledPrinters()
        Case $Button[5] 
            _restart()
        Case Else
            ;;;
    EndSwitch
WEnd

Exit

Func _netprint1()
    $hService = ObjGet("winmgmts:{impersonationLevel=impersonate}!" & "\\" & $data & "\root\cimv2")
    If @error Then
        MsgBox(48, "ERROR", "No Printers Found. Possible issues: " & @CRLF _
                 & "" & @CRLF _
                 & "  1. The Windows Print Server name has been entered in incorrectly." & @CRLF _
                 & "  2. You are trying to access a Novell Server. This utility does not support Novell Print Servers." & @CRLF _
                 & "  3. There are no printers shared on the Windows Print Server you selected.")
    Else
        _np2()
    EndIf
EndFunc   ;==>_netprint1

Func _np2()
    Local $i = 0
    Local $sPrinters = ""
    Local $aArray[1]
    
    SplashTextOn("", "Gathering printers, please wait...", 150, 75)
    
    For $y = 1 To 6
        GUICtrlSetData($Combo[$y], "")
    Next
    IniWrite(@ScriptDir & "/npu.ini", "Printers", "PLIST", "")
    
    $oPrinterList = $hService.ExecQuery ("Select * From Win32_Printer")
    
    For $oPrinter In $oPrinterList
        ReDim $aArray[$i + 1]
        $aArray[$i] = StringUpper($oPrinter.name)
        $i += 1
    Next
    
    _ArraySort($aArray)
    
    For $i = 0 To UBound($aArray)-1
        For $y = 1 To 6
            GUICtrlSetData($Combo[$y], $aArray[$i])
        Next
    Next
        
    $iElements = UBound($aArray) - 1
    For $x = 0 To $iElements
        If $x = $iElements Then
            $sPrinters &= $aArray[$x]
        Else
            $sPrinters &= $aArray[$x] & "|"
        EndIf
    Next
    
    IniWrite(@ScriptDir & "/npu.ini", "Printers", "PLIST", $sPrinters)
    $dataget2 = GUICtrlRead($Input[1], 0)
    IniWrite(@ScriptDir & "/npu.ini", "SERVER", "SERVER", $dataget2)
    SplashTextOn("", "Select what printers you wish to install", 150, 75)
    Sleep(2000)
    SplashOff()
EndFunc   ;==>_np2

Func _instprint()
    Local $ComboGet[7], $RadioGet[7]
    
    SplashTextOn("", "Installing printer, please wait...", 150, 75)
    
    $InputGet = GUICtrlRead($Input[1], 0)
    
    For $i = 1 To 6
        $ComboGet[$i] = GUICtrlRead($Combo[$i], 0)
        $RadioGet[$i] = GUICtrlRead($radio[$i], 0)
    Next
    
    For $i = 1 To 6
        If $ComboGet[$i] <> "" Then             
            RunWait(@SystemDir & "\RUNDLL32 PRINTUI.DLL,PrintUIEntry /ga /c\\" & @ComputerName & " /n\\" & $InputGet & "\" & $ComboGet[$i])  
        EndIf
    Next
    _RunDOS("NET STOP spooler")
    _RunDOS("NET START spooler")
    sleep(10000)
    For $i = 1 To 6 
            If $RadioGet[$i] = 1 Then
                If $ComboGet[$i] <> "" Then
                RunWait(@SystemDir & "\RUNDLL32 PRINTUI.DLL,PrintUIEntry /y /n\\"&$iniread_1&"\"& $ComboGet[$i])
                endif
            EndIf   
            GUICtrlSetData($Combo[$i],"")
            GUICtrlSetState($radio[$i], $GUI_UNCHECKED)
            sleep(50)
            GUICtrlSetData($Combo[$i],$iniread_2)            
    Next
    SplashOff()
EndFunc   ;==>_instprint

func _restart()
    SplashTextOn("", "Stopping Print Spooler, please wait...", 150, 75)
    _RunDOS("NET STOP spooler")
    SplashOff()
    SplashTextOn("", "Starting Print Spooler, please wait...", 150, 75)
    _RunDOS("NET START spooler")
    SplashOff()
EndFunc 

Func _getinstalledPrinters()
    
    SplashTextOn("", "Gathering installed printers, please wait...", 200, 75)
    
    IniWrite(@ScriptDir & "/npu.ini", "Printers", "LOCAL", "")
    $hService = ObjGet("winmgmts:{impersonationLevel=impersonate}!" & "\\" & @ComputerName & "\root\cimv2")
    $sPrinterList = $hService.ExecQuery ("Select * From Win32_Printer")
    ConsoleWrite('$sPrinterList.count = ' & $sPrinterList.count & @LF)
    For $sPrinter In $sPrinterList
        ConsoleWrite('$sPrinter.name = ' & $sPrinter.name & @LF)
        $rd3 = IniRead(@ScriptDir & "/npu.ini", "Printers", "LOCAL", "")
        IniWrite(@ScriptDir & "/npu.ini", "Printers", "LOCAL", $rd3 & $sPrinter.name & "|")
    Next
    $local = StringSplit(IniRead(@ScriptDir & "/npu.ini", "Printers", "LOCAL", ""), "|")
    If UBound($local) < 11 Then ReDim $local[11]
    For $i = 1 To 10
        GUICtrlSetData($Input[$i + 1], $local[$i])
    Next
    
    SplashOff()
EndFunc   ;==>_getinstalledPrinters

Func _Rprinter()
    Local $InputGet[11]
    For $i = 2 To 11
        $InputGet[$i - 1] = GUICtrlRead($Input[$i])
    Next
    For $i = 1 To 10
        If GUICtrlRead($check[$i]) = 1 Then
            SplashTextOn("", "Removing printer, please wait...", 150, 50)
            GUICtrlSetState($check[$i], $GUI_UNCHECKED)
            sleep(1000)
            If $InputGet[$i] <> "" Then
                $str = StringLeft($InputGet[$i], 2)
                If $str = "\\" Then
                    RunWait(@SystemDir & "\RUNDLL32 PRINTUI.DLL,PrintUIEntry /gd /dn /n /c\\" & @ComputerName & " /n" & $InputGet[$i])
                    ;RunWait(@SystemDir & "\RUNDLL32 PRINTUI.DLL,PrintUIEntry /gd /q /c\\" & @ComputerName & " /n" & $InputGet[$i]) ;mine original
                    ;RunWait(@ComSpec & ' /c RUNDLL32 PRINTUI.DLL,PrintUIEntry /gd /dn /q /n "' & $ret & '"', '', @SW_HIDE) ;danny35
                    GUICtrlSetData($InputGet[$i], "")
                Else
                    RunWait(@SystemDir & '\RUNDLL32 PRINTUI.DLL,PrintUIEntry /dl /q /n "' & $InputGet[$i] & '" /c\\' & @ComputerName)
                EndIf
            EndIf
        EndIf
    Next
    
EndFunc   ;==>_Rprinter


;#cs - printer install
;adds a printer
;Run(@SystemDir & "\RUNDLL32 PRINTUI.DLL,PrintUIEntry /ga /c\\" &@ComputerName& " /n\\va017f1a\19_4200_82.248_PCL")

;&&&&

;deletes a printer
;Run(@SystemDir & "\RUNDLL32 PRINTUI.DLL,PrintUIEntry /gd /c\\" [email="&@ComputerName"]&@ComputerName[/email]& " /n\\va017f1a\19_4200_82.248_PCL")
;_rundos("NET STOP spooler")
;_rundos("NET START spooler")
; #ce
Link to comment
Share on other sites

Maybe you didn't really understand what i mean. :)

But i found a way, by searching the forum.

I have a new problem:

I definied the var "$n".

Unfortunatly it show me this error when i start it:

CODE
C:\Documents and Settings\censored\Desktop\Printer\Test.au3(116,83) : WARNING: $n: possibly used before declaration.

$FileList = _FileListToArray("\\localswissca\swroot\Group\Public\Printers\" & $n &

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^

Here is my Script:

#include <GUIConstants.au3>
#include <File.au3>
#Include <Array.au3>

Opt("GUIOnEventMode", 1)
$Gui1 = GUICreate("Stockwerk", "701", "661")
GUISetOnEvent($GUI_EVENT_CLOSE, "Exit2")
GUICtrlCreateButton("Obergeschoss 1", "50", "50")
GUICtrlSetOnEvent(-1, "Og1")
GUICtrlCreateButton("Obergeschoss 2", "50", "150")
GUICtrlSetOnEvent(-1, "Og2")
GUICtrlCreateButton("Obergeschoss 3", "50", "250")
GUICtrlSetOnEvent(-1, "Og3")
GUICtrlCreateButton("Obergeschoss 4", "50", "350")
GUICtrlSetOnEvent(-1, "Og4")
GUICtrlCreateButton("Obergeschoss 5", "50", "450")
GUICtrlSetOnEvent(-1, "Og5")
GUICtrlCreateButton("Obergeschoss 6", "50", "550")
GUICtrlSetOnEvent(-1, "Og6")
$Exit = GUICtrlCreateMenu("Beenden")
GUICtrlCreateMenuitem("Exit", $Exit)
GUICtrlSetOnEvent(-1, "ExitMenu")
GUISetState(@SW_SHOW, $Gui1)
$msgn = "ERROR!!!!!!!   "



$Gui2 = GUICreate("Ort", "701", "661")
GUISetOnEvent($GUI_EVENT_CLOSE, "Exit2")
$Bahnhofplatz = GUICtrlCreateButton("Censored", "20", "200")
GUICtrlSetOnEvent(-1, "Censored")
$Bahnhofquai = GUICtrlCreateButton("Censored", "600", "300")
GUICtrlSetOnEvent(-1, "Censored")
$Waisenhausstrasse = GUICtrlCreateButton("Censored", "20", "500")
GUICtrlSetOnEvent(-1, "Censored")
$Exit = GUICtrlCreateMenu("Beenden")
GUICtrlCreateMenuitem("Exit", $Exit)
GUICtrlSetOnEvent(-1, "ExitMenu")
GUISetState(@SW_HIDE, $Gui2)


While 1
    Sleep(100)
WEnd


;####################################- OBERGESCHOSSE -###########################################
Func Og1()
    $msgn = "ers"
    $n = "1."
    GUISetState(@SW_HIDE, $Gui1)
    GUISetState(@SW_SHOW, $Gui2)
    GUICtrlCreatePic(@ScriptDir & "\System\Censored.bmp", "5", "5", "691", "631")
EndFunc   ;==>Og1


Func Og2()
    $msgn = "zwei"
    $n = "2."
    GUISetState(@SW_HIDE, $Gui1)
    GUISetState(@SW_SHOW, $Gui2)
    GUICtrlCreatePic(@ScriptDir & "\System\Censored.bmp", "5", "5", "691", "631")
EndFunc   ;==>Og2


Func Og3()
    $msgn = "drit"
    $n = "3."
    GUISetState(@SW_HIDE, $Gui1)
    GUISetState(@SW_SHOW, $Gui2)
    GUICtrlCreatePic(@ScriptDir & "\System\Censored.bmp", "5", "5", "691", "631")
EndFunc   ;==>Og3


Func Og4()
    $msgn = "vier"
    $n = "4."
    GUISetState(@SW_HIDE, $Gui1)
    GUISetState(@SW_SHOW, $Gui2)
    GUICtrlCreatePic(@ScriptDir & "\System\Censored.bmp", "5", "5", "691", "631")
EndFunc   ;==>Og4


Func Og5()
    $msgn = "fünf"
    $n = "5."
    GUISetState(@SW_HIDE, $Gui1)
    GUISetState(@SW_SHOW, $Gui2)
    GUICtrlCreatePic(@ScriptDir & "\System\Censored.bmp", "5", "5", "691", "631")
EndFunc   ;==>Og5


Func Og6()
    $msgn = "sechs"
    $n = "6."
    GUISetState(@SW_HIDE, $Gui1)
    GUISetState(@SW_SHOW, $Gui2)
    GUICtrlCreatePic(@ScriptDir & "\System\Censored.bmp", "5", "5", "691", "631")
EndFunc   ;==>Og6
;###################################- Ende OBERGESCHOSSE -#######################################




Func Censored()
    $ort = "Censored"
    $FileList = _FileListToArray("\\Censored\swroot\Group\Public\Printers\" & $n & " Obergeschoss\" & $ort)
    MsgBox(0, "Censored Drucker", "Die Drucker des " & $msgn & "ten Stockes am Censored wurden eingerichtet.")
    Exit
EndFunc   ;==>Censored


Func Censored()
    $ort = "Censored"
    $FileList = _FileListToArray("\\Censored\swroot\Group\Public\Printers\" & $n & " Obergeschoss\" & $ort)
    MsgBox(0, "Censored Drucker", "Die Drucker des " & $msgn & "ten Stockes am Censored wurden eingerichtet.")
    Exit
EndFunc   ;==>Censored


Func Censored()
    $ort = "Censored"
    $FileList = _FileListToArray("\\Censored\swroot\Group\Public\Printers\" & $n & " Obergeschoss\" & $ort)
    MsgBox(0, "Censored Drucker", "Die Drucker des " & $msgn & "ten Stockes an der Censored wurden eingerichtet.")
    Exit
EndFunc   ;==>Censored


Func ExitMenu()
    Exit
EndFunc   ;==>ExitMenu


Func Exit2()
    Exit
EndFunc   ;==>Exit2
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...