Jump to content
Sign in to follow this  
Vaeb

Add Printers

Recommended Posts

Vaeb

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

Share this post


Link to post
Share on other sites
Bert

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

Share this post


Link to post
Share on other sites
Vaeb

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

Share this post


Link to post
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
Sign in to follow this  

×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.