Page 1 of 2 12>
Topic Options
#168667 - 2006-09-30 07:26 AM Script to setup printers
jeremyschubert Offline
Getting the hang of it

Registered: 2005-09-17
Posts: 89
I'm writing a script to setup printers at a school that doesn't have a server on site.
The printers are networked and I don't want to share them out from a workstation because I don't want to worry
about the 10 user connection limit and whether or not the workstation is powered up.
And, anyway, if the printer has an ethernet connection, it should be put to use.

So far I've come up with the script below. I still have to figure out the best way to get the users to input
Options 1 - 5. I'm sure I'll find that in the manual or on this site. And I know I'll have to adjust the
positioning and dimensions of list boxes etc. What I'd like to know is if I have the functions laid out well.
Am I using a good strategy to complete the job.

Thanks for any and all input.

Code:
 

Break On
$System = CreateObject("Kixtart.System")

$Form = $System.Form()
$Form.Text = "St. Matthew School Computer Network - Admin Side Printer Install"
$Form.Width = 600
$Form.Height = 600
$Form.BackColor = $Form.RGB(255,255,0)

$panel = $form.Controls.Panel()
$panel.Dock = "top" ;resize for your needs
$panel.BackgroundImage = "\\s096-a0290-01\sch030$\printers\matthew.jpg"

$Instructions = $Form.Controls.Button()
$Instructions.Height = 31
$Instructions.Left = 10
$Instructions.Text = "Please wait while I determine which printers you are already connected to..."
$Instructions.Top = 135
$Instructions.Width 531

$listbox = $form.Controls.listbox()
$listbox.Height = 150
$listbox.Left = 280
$Listbox.Top = 175
$Listbox.Width = 250

$Exit = $Form.Controls.Button()
$Exit.Cancel = "True"
$Exit.Default = "True"
$Exit.Height = 31
$Exit.Left = 10
$Exit.Text = "Click Here To Close This Window"
$Exit.Top = 495
$Exit.Width = 531
$Exit.OnClick = "ExitButton()"

$Form.Center

$Form.Show

While $Form.Visible
$ = Execute($Form.DoEvents())
Loop
Exit 1

GetDefaultPrinter()
EnumPrinters()

;Use X as variable for printer choice
Dim X
Get $x
SelectAPrinter()

Function GetDefaultPrinter()
;FUNCTION GetDefaultPrinter()
;
;AUTHOR Jochen Polster (jochenDOTpolsterATgmxDOTnet)
;
;VERSION 1.0
;
;VERSION HISTORY 1.0 2004/04/28 Initial release
;
;ACTION Retrieves the current default Printer
;
;SYNTAX GetDefaultPrinter()
;
;PARAMETERS none
;
;REMARKS won't work with 9x OS
;
;RETURNS The current Users default Printer
;
;DEPENDENCIES None !
;
;EXAMPLES $default = GetDefaultPrinter

$GetDefaultPrinter =
Join(Split(ReadValue("HKEY_USERS\"+@sid+"\Software\Microsoft\Windows NT\CurrentVersion\Windows","Device"),',',1),'')
$listbox2.additem("Default Printer = "+$GetDefaultPrinter)
;Create blank space between default printer listing and the listing of all printers.
$listbox2.additem("")
EndFunction

Function EnumPrinters()

;Writes all printer to a file.
;$array=printerlist()
;$rc = Open (1, "c:\installedprinters.txt", 5)
;For Each $printer in $array
; $rc = WriteLine (1, $printer + " is installed on: " + @WKSTA + @CRLF)
;Next
;$rc = Close(1)

;DISPLAY LOCAL AND NETWORKED PRINTERS

;shows the printers on your screen.
$array=printerlist()
For Each $printer in $array
$listbox2.additem("Printer = "+$printer)
Next

EndFunction

Function PrinterList(optional $remotepc, optional $displaymode)
;Function:
; PrinterList()
;
;Author:
; Allen Powell (Al_Po)
;
;Version:
; 1.3.1 (2006/05/10 fixed error detecting Print Servers sharing IP Printers)
;
;Revisions
; 1.3.0 (2005/10/21 added options to distinguish local or remote printers)
; 1.2.0 (2005/07/19 optimized code)
; 1.1.0 (2004/08/09 undimmed variable fix)
; 1.0.0 (2003/06/26 Original)
;
;Action:
; Creates an array/list of Printers, and optionally their ports installed, on a local or remote computer.
;
;Syntax:
; Printerlist(optional $remotepc,optional $displaymode)
;
;Parameters:
; $RemotePC: (Optional)
; Remote Computer. If omitted defaults to localpc.
; $DisplayMode (Optional)
; 0 - show all printers, don't display port info (Default)
; 1 - show all printers, display port info
; 2 - show local printers, don't display port info
; 3 - show local printers, display port info
; 4 - show remote printers, don't display port info
; 5 - show remote printers, display port info
;Returns:
; Array of Printers
;
;Dependencies:
; WMI
;
;Example:
;
;break on
;$RC=Setoption("WrapAtEOL","on")
;
;$array=printerlist()
;for each $printer in $array
; ? $printer
;next
;
;Source:
;
Dim $service,$printer,$printers,$printerdesc[0],$counter,$portname,$printername
If $remotepc=""
$remotepc="."
EndIf
$Service = GetObject("winmgmts:\\" + $remotepc + "\root\cimv2")
If @error
Exit @error
EndIf
$Printers=$service.execquery ('select * from Win32_Printer')
For Each $printer in $printers
ReDim preserve $printerdesc[$counter]
If $displaymode & 1
$portname = "," + $printer.portname
EndIf
Select
Case $displaymode & 4 ;remote printers
If Left($printer.portname,2)="\\" Or Left($printer.name,2)=="\\"
$printername=$printer.name
EndIf
Case $displaymode & 2 ;local printers
If Left($printer.portname,2)<>"\\" And Left($printer.name,2)<>"\\"
$printername=$printer.name
EndIf
Case 1 ; all printers
$printername=$printer.name
EndSelect
If $printername<>""
$printerdesc[$counter]=$printername + $portname
$counter=$counter + 1
$printername=""
EndIf
Next
$PrinterList=$printerdesc
EndFunction

Function ExitButton()
Quit()
EndFunction


AddPrinter() - Add IP,LPT, Or COM Printers


--------------------------------------------------------------------------------

;Function:
; AddPrinter()
;
;Author:
; Allen Powell (Al_Po)
;
;Version:
; 1.0
;
;Action:
; Add IP,LPT, or COM Printers locally or remotely. Also, add PrintServer connections locally.
;
;Syntax:
; AddPrinter($Port,$PrinterType,optional $DriverInf,optional $PrinterDesc,optional $remotepc,optional $Default)
;
;Parameters:
; $Port: (required)
; IPAddress (xxx.xxx.xxx.xxx)
; LPT (LPT1:)
; COM (COM1:)
; PrintServer (\\server\printer)
; $PrinterType: (required)
; Descriptor of Printer within INF file
; Note: If using a PrintServer, $PrinterType value is ignored.
; $DriverInf: (Optional)
; Location and name of INF file containing print drivers
; Note: If omitted, attempts to use default Windows Print Drivers
; $PrinterDesc: (Optional)
; Description of Printer
; Note: If ommitted, $PrinterDesc = PrinterType
; $RemotePC: (Optional)
; PC to install Printer/Drivers on. If omitted defaults to localpc.
; Note: Ignored if $Port is a PrintServer
; $Default: (Optional)
; 0 = Do not Set as Default Printer (Default)
; 1 = Set as Default Printer
;
;Returns:
; 1 - Successful
; 0 - Failed
; If Failed sets @error to
; -4 - Error connecting to RemotePC
; -3 - Could not open/find INF file
; -2 - Could not find $PrinterType in INF file
; -1 - Unrecognized Port
;
;Dependencies:
; Windows 2000 Professional and up
; rundll32 printui.dll,PrintUIEntry
;
;Examples:
;$=AddPrinter("192.168.1.1","Xerox DocumentCenter 555 PCL6","\\Server\PrinterDrives\Xerox\dc555pcl\dc555x.inf","Xerox" +
" Document Centre 55 5 PCL6 in Office",REMOTEPC,1)
;$=Addprinter("LPT1","HP LaserJet 8100 Series PS",,"HP8100 in IS(test)")
;$=AddPrinter("192.168.1.1","HP LaserJet 8100 Series PS",,"HP8100 in IS(test)",,1)
;$=AddPrinter('\\server\printer','_')
;Source:

Function AddPrinter($Port,$PrinterType,optional $DriverInf,optional $PrinterDesc,optional $remotepc,optional $Default)
Dim $quitloop,$IPPrinterKey,$PrinterCMD
$AddPrinter=0
If Not Left($Port,2)="\\"
If $Driverinf=""
$DriverInf="%windir%\inf\ntprint.inf"
EndIf
If Not Exist($DriverInf)
Exit -3
EndIf
Shell '%comspec% /c type "$driverinf">%temp%\addprinter.txt'
If Open(3,"%temp%\addprinter.txt",0)=0
$quitloop=0
While @error=0 And $quitloop=0
$line=ReadLine(3)
$quitloop=InStr($line,$PrinterType)
Loop
$=Close(3)
If $quitloop=0
Exit -2
EndIf
Else
Exit -3
EndIf
EndIf
If $PrinterDesc=""
$PrinterDesc=$PrinterType
EndIf
If $remotepc=""
$remotepc='\\'+ @wksta
Else
If Not Left($remotepc,2)="\\"
$remotepc='\\' + $remotepc
EndIf
EndIf

Select
Case Left($Port,2)="\\"
$printserver=1
$printerdesc=$port
Case InStr($Port,".")
$IPPrinterKey = '$remotepc\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Monitors'+
'\Standard TCP/IP Port\Ports\IP_' +$Port
If Not KeyExist($IPPrinterKey)
$=AddKey($IPPrinterKey)
$=WriteValue($IPPrinterKey,"Protocol","00000001","REG_DWORD")
$=WriteValue($IPPrinterKey,"Version","00000001","REG_DWORD")
$=WriteValue($IPPrinterKey,"HostName","", "REG_SZ")
$=WriteValue($IPPrinterKey,"IPAddress","$Port","REG_SZ")
$=WriteValue($IPPrinterKey,"HWAddress","","REG_SZ")
$=WriteValue($IPPrinterKey,"PortNumber","00009100","REG_DWORD")
$=WriteValue($IPPrinterKey,"SNMP Community","public","REG_SZ")
$=WriteValue($IPPrinterKey,"SNMP Enabled","00000001","REG_DWORD")
$=WriteValue($IPPrinterKey,"SNMP Index","00000001","REG_DWORD")
EndIf
$objects=GetObject("winmgmts:{impersonationLevel=impersonate}!"+$remotepc+"\root\cimv2")
If Not @error=0
Exit -4
EndIf
$services=$objects.ExecQuery('Select * from Win32_Service WHERE Name = "Spooler"')
For Each $spooler in $services
$=Execute('$$=$$spooler.stopservice()')
Next
Sleep 1
For Each $spooler in $services
$=Execute('$$=$$spooler.startservice()')
Next
$port='IP_$port'
Case UCase(Left($Port,3))="LPT" Or UCase(Left($Port,3))="COM"
If Not Right($port,1)=":"
$Port=$port+":"
EndIf
If Not Val(Left(Right($port,2),1))>=1
Exit -1
EndIf
Case UCase(Left($Port,4))="FILE"
If Not Right($port,1)=":"
$Port=$port+":"
EndIf
Case 1
Exit -1
EndSelect
If Not $Printserver=1
$printercmd='rundll32 printui.dll,PrintUIEntry /if /b "$printerdesc" /c "$remotepc" ' +
'/f "$driverinf" /r "$port" /m "$Printertype" /z /u '
Shell $printercmd
Else
If Not AddPrinterConnection($port)=0
Exit @error
EndIf
EndIf
If $default=1
If Not SetDefaultPrinter($PrinterDesc)=0
Exit @error
EndIf
EndIf
$AddPrinter=1
EndFunction
Function SelectAPrinter()

Select

Case x=1
Function AddPrinter("10.48.18.1","Lexmark T640","\\s096-a290-01\sch030$\printers\t640.inf","Library Printer",0)

Case x=2
Function AddPrinter("10.48.18.1","Lexmark T640","\\s096-a290-01\sch030$\printers\t640.inf","Library Printer",1)

Case x=3
Function AddPrinter("10.48.18.2","Lexmark T640","\\s096-a290-01\sch030$\printers\t640.inf","Computer Lab Printer",0)

Case x=4
Function AddPrinter("10.48.18.2","Lexmark T640","\\s096-a290-01\sch030$\printers\t640.inf","Computer Lab Printer",1)

Case x=5 Function
Function AddPrinter("10.48.18.3","Lexmark T640","\\s096-a290-01\sch030$\printers\t640.inf","Library Printer",1)

EndSelect
EndFunction



[Long lines removed by NTDOC]


Edited by NTDOC (2006-10-01 04:35 AM)

Top
#168668 - 2006-09-30 01:31 PM Re: Script to setup printers
Sealeopard Offline
KiX Master
*****

Registered: 2001-04-25
Posts: 11164
Loc: Boston, MA, USA
An alternative woudl be to set up a Linux print server together with Samba. You basically do a one-time install of Linux, connect to the printers, install Samba, and the Windows machines can connect to the print server, incl. pullling down the printer drivers. See for example http://www.linuxforums.org/servers/howto:_fileserver_with_samba_and_printserver_with_cups.html
_________________________
There are two types of vessels, submarines and targets.

Top
#168669 - 2006-09-30 03:23 PM Re: Script to setup printers
jeremyschubert Offline
Getting the hang of it

Registered: 2005-09-17
Posts: 89
Thanks for the suggestion Jens. What you say is true. However, then I have to learn how to use another operating system. I have to provide excellent documentation in case I go on leave or I leave the job. I have to find a computer for the job and I have to make sure the computer is always up and running. And since the ethernet is already connected to the printer, I think adding one more piece of hardware to the chain is just another link in the chain that could break down. I think it would be more worth my while to spend two hours touching each computer.

But thanks anyway...
_________________________
---
Bishop Grandin Technology Department
'Either we're on time, or we're late'

Top
#168670 - 2006-09-30 05:18 PM Re: Script to setup printers
Benny69 Offline
Moderator
*****

Registered: 2003-10-29
Posts: 1036
Loc: Lincoln, Ne
Hi jeremy,
I have added an error check to validate the installation and functionality of KiXforms with these lines:
Code:

If Not $System
$nul= MessageBox("KiXforms Not Initiated. This Script Will Now Close.","Error",16)
Quit()
EndIf



I moved the function calls before the While Loop, if they were after the While Loop they would not be called until
after the form closed.

I modified the ‘SelectAPrinter’ function, the only time you use the word ‘Funtion’ is to define a function.
Code:

Function SelectAPrinter()

Select
Case x=1
AddPrinter("10.48.18.1","Lexmark T640","\\s096-a290-01\sch030$\printers\t640.inf","Library Printer",0)
Case x=2
AddPrinter("10.48.18.1","Lexmark T640","\\s096-a290-01\sch030$\printers\t640.inf","Library Printer",1)
Case x=3
AddPrinter("10.48.18.2","Lexmark T640","\\s096-a290-01\sch030$\printers\t640.inf","Computer Lab Printer",0)
Case x=4
AddPrinter("10.48.18.2","Lexmark T640","\\s096-a290-01\sch030$\printers\t640.inf","Computer Lab Printer",1)
Case x=5
AddPrinter("10.48.18.3","Lexmark T640","\\s096-a290-01\sch030$\printers\t640.inf","Library Printer",1)
EndSelect

EndFunction



Here is you updated code:
Code:

Break On
$System = CreateObject("Kixtart.System")
If Not $System
$nul= MessageBox("KiXforms Not Initiated. This Script Will Now Close.","Error",16)
Quit()
EndIf

$Form = $System.Form()
$Form.Text = "St. Matthew School Computer Network - Admin Side Printer Install"
$Form.Width = 600
$Form.Height = 600
$Form.BackColor = $Form.RGB(255,255,0)

$panel = $form.Controls.Panel()
$panel.Dock = "top" ;resize for your needs
$panel.BackgroundImage = "\\s096-a0290-01\sch030$\printers\matthew.jpg"

$Instructions = $Form.Controls.Button()
$Instructions.Height = 31
$Instructions.Left = 10
$Instructions.Text = "Please wait while I determine which printers you are already connected to..."
$Instructions.Top = 135
$Instructions.Width 531

$listbox = $form.Controls.listbox()
$listbox.Height = 150
$listbox.Left = 280
$Listbox.Top = 175
$Listbox.Width = 250

$Exit = $Form.Controls.Button()
$Exit.Cancel = "True"
$Exit.Default = "True"
$Exit.Height = 31
$Exit.Left = 10
$Exit.Text = "Click Here To Close This Window"
$Exit.Top = 495
$Exit.Width = 531
$Exit.OnClick = "ExitButton()"

$Form.Center

$Form.Show

GetDefaultPrinter()
EnumPrinters()

Use X as variable For printer choice
Dim X
Get $x

SelectAPrinter()

While $Form.Visible
$ = Execute($Form.DoEvents())
Loop
Exit 1

Function GetDefaultPrinter()

;FUNCTION GetDefaultPrinter()
;
;AUTHOR Jochen Polster (jochenDOTpolsterATgmxDOTnet)
;
;VERSION 1.0
;
;VERSION HISTORY 1.0 2004/04/28 Initial release
;
;ACTION Retrieves the current default Printer
;
;SYNTAX GetDefaultPrinter()
;
;PARAMETERS none
;
;REMARKS won't work with 9x OS
;
;RETURNS The current Users default Printer
;
;DEPENDENCIES None !
;
;EXAMPLES $default = GetDefaultPrinter

$GetDefaultPrinter =
Join(Split(ReadValue("HKEY_USERS\"+@sid+"\Software\Microsoft\Windows NT\CurrentVersion\Windows","Device"),',',1),'')
$listbox2.additem("Default Printer = "+$GetDefaultPrinter)
;Create blank space between default printer listing and the listing of all printers.
$listbox2.additem("")

EndFunction

Function EnumPrinters()

;Writes all printer to a file.
;$array=printerlist()
;$rc = Open (1, "c:\installedprinters.txt", 5)
;For Each $printer in $array
; $rc = WriteLine (1, $printer + " is installed on: " + @WKSTA + @CRLF)
;Next
;$rc = Close(1)

;DISPLAY LOCAL AND NETWORKED PRINTERS

;shows the printers on your screen.
$array=printerlist()
For Each $printer in $array
$listbox2.additem("Printer = "+$printer)
Next

EndFunction

Function PrinterList(optional $remotepc, optional $displaymode)

;Function:
; PrinterList()
;
;Author:
; Allen Powell (Al_Po)
;
;Version:
; 1.3.1 (2006/05/10 fixed error detecting Print Servers sharing IP Printers)
;
;Revisions
; 1.3.0 (2005/10/21 added options to distinguish local or remote printers)
; 1.2.0 (2005/07/19 optimized code)
; 1.1.0 (2004/08/09 undimmed variable fix)
; 1.0.0 (2003/06/26 Original)
;
;Action:
; Creates an array/list of Printers, and optionally their ports installed, on a local or remote computer.&n bsp;
;
;Syntax:
; Printerlist(optional $remotepc,optional $displaymode)
;
;Parameters:
; $RemotePC: (Optional)
; Remote Computer. If omitted defaults to localpc.
; $DisplayMode (Optional)
; 0 - show all printers, don't display port info (Default)
; 1 - show all printers, display port info
; 2 - show local printers, don't display port info
; 3 - show local printers, display port info
; 4 - show remote printers, don't display port info
; 5 - show remote printers, display port info
;Returns:
; Array of Printers
;
;Dependencies:
; WMI
;
;Example:
;
;break on
;$RC=Setoption("WrapAtEOL","on")
;
;$array=printerlist()
;for each $printer in $array
; ? $printer
;next
;
;Source:
Dim $service,$printer,$printers,$printerdesc[0],$counter,$portname,$printername
If $remotepc=""
$remotepc="."
EndIf
$Service = GetObject("winmgmts:\\" + $remotepc + "\root\cimv2")
If @error
Exit @error
EndIf
$Printers=$service.execquery ('select * from Win32_Printer')
For Each $printer in $printers
ReDim preserve $printerdesc[$counter]
If $displaymode & 1
$portname = "," + $printer.portname
EndIf
Select
Case $displaymode & 4 ;remote printers
If Left($printer.portname,2)="\\" Or Left($printer.name,2)=="\\"
$printername=$printer.name
EndIf
Case $displaymode & 2 ;local printers
If Left($printer.portname,2)<>"\\" And Left($printer.name,2)<>"\\"
$printername=$printer.name
EndIf
Case 1 ; all printers
$printername=$printer.name
EndSelect
If $printername<>""
$printerdesc[$counter]=$printername + $portname
$counter=$counter + 1
$printername=""
EndIf
Next
$PrinterList=$printerdesc

EndFunction

Function ExitButton()
Quit()
EndFunction

Function AddPrinter($Port,$PrinterType,optional $DriverInf,optional $PrinterDesc,optional $remotepc,optional $Default)
;Function:
; AddPrinter()
;
;Author:
; Allen Powell (Al_Po)
;
;Version:
; 1.0
;
;Action:
; Add IP,LPT, Or COM Printers locally Or remotely. Also, add PrintServer connections locally.
;
;Syntax:
; AddPrinter($Port,$PrinterType,optional $DriverInf,optional $PrinterDesc,optional $remotepc,optional $Default)
;
;Parameters:
; $Port: (required)
; IPAddress (xxx.xxx.xxx.xxx)
; LPT (LPT1:)
; COM (COM1:)
; PrintServer (\\server\printer)
; $PrinterType: (required)
; Descriptor of Printer within INF file
; Note: If using a PrintServer, $PrinterType value is ignored.
; $DriverInf: (Optional)
; Location And name of INF file containing print drivers
; Note: If omitted, attempts to Use default Windows Print Drivers
; $PrinterDesc: (Optional)
; Description of Printer
; Note: If ommitted, $PrinterDesc = PrinterType
; $RemotePC: (Optional)
; PC to install Printer/Drivers on. If omitted defaults to localpc.
; Note: Ignored If $Port is a PrintServer
; $Default: (Optional)
; 0 = Do Not Set as Default Printer (Default)
; 1 = Set as Default Printer
;
;Returns:
; 1 - Successful
; 0 - Failed
; If Failed sets @error to
; -4 - Error connecting to RemotePC
; -3 - Could Not Open/find INF file
; -2 - Could Not find $PrinterType in INF file
; -1 - Unrecognized Port
;
;Dependencies:
; Windows 2000 Professional And up
; rundll32 printui.dll,PrintUIEntry
;
;Examples:
;$=AddPrinter("192.168.1.1","Xerox DocumentCenter 555 PCL6","\\Server\PrinterDrives\Xerox\dc555pcl\dc555x.inf","Xerox Document" +
" Centre 55 5 PCL6 in Office",REMOTEPC,1)
;$=Addprinter("LPT1","HP LaserJet 8100 Series PS",,"HP8100 in IS(test)")
;$=AddPrinter("192.168.1.1","HP LaserJet 8100 Series PS",,"HP8100 in IS(test)",,1)
;$=AddPrinter('\\server\printer','_')
;Source:

Dim $quitloop,$IPPrinterKey,$PrinterCMD
$AddPrinter=0
If Not Left($Port,2)="\\"
If $Driverinf=""
$DriverInf="%windir%\inf\ntprint.inf"
EndIf
If Not Exist($DriverInf)
Exit -3
EndIf
Shell '%comspec% /c type "$driverinf">%temp%\addprinter.txt'
If Open(3,"%temp%\addprinter.txt",0)=0
$quitloop=0
While @error=0 And $quitloop=0
$line=ReadLine(3)
$quitloop=InStr($line,$PrinterType)
Loop
$=Close(3)
If $quitloop=0
Exit -2
EndIf
Else
Exit -3
EndIf
EndIf
If $PrinterDesc=""
$PrinterDesc=$PrinterType
EndIf
If $remotepc=""
$remotepc='\\'+ @wksta
Else
If Not Left($remotepc,2)="\\"
$remotepc='\\' + $remotepc
EndIf
EndIf

Select
Case Left($Port,2)="\\"
$printserver=1
$printerdesc=$port
Case InStr($Port,".")
$IPPrinterKey = '$remotepc\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Monitors\Standard TCP/IP Port\Ports\IP_' +$Port
If Not KeyExist($IPPrinterKey)
$=AddKey($IPPrinterKey)
$=WriteValue($IPPrinterKey,"Protocol","00000001","REG_DWORD")
$=WriteValue($IPPrinterKey,"Version","00000001","REG_DWORD")
$=WriteValue($IPPrinterKey,"HostName","", "REG_SZ")
$=WriteValue($IPPrinterKey,"IPAddress","$Port","REG_SZ")
$=WriteValue($IPPrinterKey,"HWAddress","","REG_SZ")
$=WriteValue($IPPrinterKey,"PortNumber","00009100","REG_DWORD")
$=WriteValue($IPPrinterKey,"SNMP Community","public","REG_SZ")
$=WriteValue($IPPrinterKey,"SNMP Enabled","00000001","REG_DWORD")
$=WriteValue($IPPrinterKey,"SNMP Index","00000001","REG_DWORD")
EndIf
$objects=GetObject("winmgmts:{impersonationLevel=impersonate}!"+$remotepc+"\root\cimv2")
If Not @error=0
Exit -4
EndIf
$services=$objects.ExecQuery('Select * from Win32_Service WHERE Name = "Spooler"')
For Each $spooler in $services
$=Execute('$$=$$spooler.stopservice()')
Next
Sleep 1
For Each $spooler in $services
$=Execute('$$=$$spooler.startservice()')
Next
$port='IP_$port'
Case UCase(Left($Port,3))="LPT" Or UCase(Left($Port,3))="COM"
If Not Right($port,1)=":"
$Port=$port+":"
EndIf
If Not Val(Left(Right($port,2),1))>=1
Exit -1
EndIf
Case UCase(Left($Port,4))="FILE"
If Not Right($port,1)=":"
$Port=$port+":"
EndIf
Case 1
Exit -1
EndSelect
If Not $Printserver=1
$printercmd='rundll32 printui.dll,PrintUIEntry /if /b "$printerdesc" /c "$remotepc" ' +
'/f "$driverinf" /r "$port" /m "$Printertype" /z /u '
Shell $printercmd
Else
If Not AddPrinterConnection($port)=0
Exit @error
EndIf
EndIf
If $default=1
If Not SetDefaultPrinter($PrinterDesc)=0
Exit @error
EndIf
EndIf
$AddPrinter=1
EndFunction

Function SelectAPrinter()

Select
Case x=1
AddPrinter("10.48.18.1","Lexmark T640","\\s096-a290-01\sch030$\printers\t640.inf","Library Printer",0)
Case x=2
AddPrinter("10.48.18.1","Lexmark T640","\\s096-a290-01\sch030$\printers\t640.inf","Library Printer",1)
Case x=3
AddPrinter("10.48.18.2","Lexmark T640","\\s096-a290-01\sch030$\printers\t640.inf","Computer Lab Printer",0)
Case x=4
AddPrinter("10.48.18.2","Lexmark T640","\\s096-a290-01\sch030$\printers\t640.inf","Computer Lab Printer",1)
Case x=5
AddPrinter("10.48.18.3","Lexmark T640","\\s096-a290-01\sch030$\printers\t640.inf","Library Printer",1)
EndSelect

EndFunction



You could select the printer(s) to install by the IP of the workstation with a select case and an IP range of the 4th Octet with something like this:
Code:

Function SelectAPrinter()

Dim $FourthOctet

$Octets = Split(@IPADDRESS0,'.')

$FourthOctet = Val($Octets[3])

Select
Case ($FourthOctet >= 1 And $FourthOctet <= 31) ; 10.48.18.1 10.48.18.31
AddPrinter("10.48.18.1","Lexmark T640","\\s096-a290-01\sch030$\printers\t640.inf","Library Printer",0)
Case ($FourthOctet >= 32 And $FourthOctet <= 63) ; 10.48.18.32 10.48.18.63
AddPrinter("10.48.18.1","Lexmark T640","\\s096-a290-01\sch030$\printers\t640.inf","Library Printer",1)
Case ($FourthOctet >= 64 And $FourthOctet <= 127) ; 10.48.18.64 10.48.18.127
AddPrinter("10.48.18.2","Lexmark T640","\\s096-a290-01\sch030$\printers\t640.inf","Computer Lab Printer",0)
Case ($FourthOctet >= 128 And $FourthOctet <= 191) ;10.48.18.128 10.48.18.191
AddPrinter("10.48.18.2","Lexmark T640","\\s096-a290-01\sch030$\printers\t640.inf","Computer Lab Printer",1)
Case ($FourthOctet >= 192 And $FourthOctet <= 223) ;10.48.18.192 10.48.18.223
AddPrinter("10.48.18.3","Lexmark T640","\\s096-a290-01\sch030$\printers\t640.inf","Library Printer",1)
EndSelect

EndFunction


You would have to modify the IP range of course, but it should give you the idea.

[Long lines removed by NTDOC]


Edited by NTDOC (2006-10-01 04:32 AM)

Top
#168671 - 2006-10-01 02:36 AM Re: Script to setup printers
jeremyschubert Offline
Getting the hang of it

Registered: 2005-09-17
Posts: 89
Thanks for the advice Benny. In your example of SelectAPrinter, your using the workstations ip address to determine which printer to hook up to? Thanks, but that's not quite how I'm going to work it. There are three printers. Teachers are allowed to choose either the library or computer lab to be their default printer. They can add the office printer but it's not allowed to be their default printer. So I'm planning on just inserting a message box that says:

Enter 1 to have the Library printer be your default printer
Enter 2 to have the Library printer as just a printer
Enter 3 to have the Computer Lab printer be your default printer
Enter 4 to have the Computer Lab printer as just a printer
Enter 5 to have the Office printer as just a printer.

Thanks for your other suggestions though. (And if you have any ideas for improving the language of the lines that say 'just a printer', that would be welcome too).

Jeremy

Top
#168672 - 2006-10-01 03:05 AM Re: Script to setup printers
Gargoyle Offline
MM club member
*****

Registered: 2004-03-09
Posts: 1597
Loc: Valley of the Sun (Arizona, US...
Why not have two drop down list boxes. One for the default printer and one for all others. Make the default printer list non multi select, and the other can be multi select so that can set up multiple printers in one shot.

You would of course want to build in some checks to make it so that they can not select the same printer in both lists.

Top
#168673 - 2006-10-01 04:17 AM Re: Script to setup printers
jeremyschubert Offline
Getting the hang of it

Registered: 2005-09-17
Posts: 89
That's an interesting idea Gargoyle. Thanks. But before I do that, I need to ask for some help with my code again.
I removed the section displaying what printers are already set up and which is the default.
I figure the user should already know that info. But now I'm having trouble showing my 'Choose Printer' text box.
I looked at the kixforms on line help and saw that I could add multiline and scroll bar elements to my properties.
But obviously I'm not doing it right. Can someone please provide some direction?

Code:
  
;region Script Settings
;kix32.exe
;
;%TEMP%
;C:\Documents and Settings\Jeremy Schubert\My Documents\AdminScriptEditor
;
;True
;
;True
;
;False
;True
;True
;False
;
;
;True
;
;
;1.0.0.1
;
;
;
;
;

;

;
;endregion

; **************** Variable Settings **************
Break On
$System = CreateObject("Kixtart.System")
If Not $System
$nul= MessageBox("KiXforms Not Initiated. This Script Will Now Close.","Error",16)
Quit()
EndIf

$Form = $System.Form()
$Form.Text = "St. Matthew School Computer Network - Admin Side Printer Install"
$Form.Width = 600
$Form.Height = 600
$Form.BackColor = $Form.RGB(255,255,0)

$panel = $form.Controls.Panel()
$panel.Dock = "top" ;resize for your needs
$panel.BackgroundImage = "\\s096-a0290-01\sch030$\printers\matthew.jpg"

$PrinterChoices = $Form.Controls.Button()
$PrinterChoices.Height = 450
$PrinterChoices.Left = 10
$PrinterChoices.Multiline = True
$PrinterChoices.Text = "Please enter a printer selection" + Chr(13) + Chr(10) +
"Enter 1 to setup the Library Printer" + Chr(13) + Chr(10) +
"Enter 2 to setup the Library Printer as your default printer" + Chr(13) + Chr(10) +
"Enter 3 to setup the Computer Lab Printer" + Chr(13) + Chr(10) +
"Enter 4 to setup the Computer Lab Printer as your default printer" + Chr(13) + Chr(10) +
"Enter 5 to setup the Office computer","Printer Choice"
$PrinterChoices.Top = 25
$PrinterChoices.Width 400

$Exit = $Form.Controls.Button()
$Exit.Cancel = "True"
$Exit.Default = "True"
$Exit.Height = 31
$Exit.Left = 10
$Exit.Text = "Click Here To Close This Window"
$Exit.Top = 495
$Exit.Width = 531
$Exit.OnClick = "ExitButton()"

$Form.Center

$Form.Show

;x is the variable that represents the user's choice of printer

Dim $X
Get $x

SelectAPrinter()

While $Form.Visible
$ = Execute($Form.DoEvents())
Loop
Exit 1

Function SelectAPrinter()

Select
Case x=1
AddPrinter("10.48.18.1","Lexmark T640","\\s096-a290-01\sch030$\printers\t640.inf","Library Printer",0)
Case x=2
AddPrinter("10.48.18.1","Lexmark T640","\\s096-a290-01\sch030$\printers\t640.inf","Library Printer",1)
Case x=3
AddPrinter("10.48.18.2","Lexmark T640","\\s096-a290-01\sch030$\printers\t640.inf","Computer Lab Printer",0)
Case x=4
AddPrinter("10.48.18.2","Lexmark T640","\\s096-a290-01\sch030$\printers\t640.inf","Computer Lab Printer",1)
Case x=5
AddPrinter("10.48.18.3","Lexmark T640","\\s096-a290-01\sch030$\printers\t640.inf","Library Printer",1)
EndSelect

EndFunction




[Long lines removed by NTDOC]


Edited by NTDOC (2006-10-01 04:30 AM)

Top
#168674 - 2006-10-01 08:49 AM Re: Script to setup printers
Witto Offline
MM club member
*****

Registered: 2004-09-29
Posts: 1828
Loc: Belgium
Why do you ask for input via a command window when you are using a KiXforms graphic interface?
Code:

;x is the variable that represents the user's choice of printer
Dim $X
Get $x


I presume you want to change this:
Code:

$PrinterChoices.Width = 400


You get the background image and the driver from the same computer I presume. I think there is a typo.
But I also presume this is a workstation. Doesn't the 10 computer limit also goes for this one?
Code:

$panel.BackgroundImage = "\\s096-a0290-01\sch030$\printers\matthew.jpg"
...
AddPrinter("10.48.18.1","Lexmark T640","\\s096-a290-01\sch030$\printers\t640.inf","Library Printer",0)


Top
#168675 - 2006-10-01 09:18 AM Re: Script to setup printers
Gargoyle Offline
MM club member
*****

Registered: 2004-03-09
Posts: 1597
Loc: Valley of the Sun (Arizona, US...
Well to begin with, you have your "text" box defined as a button ...
Code:

$PrinterChoices = $Form.Controls.Button()


You really should take a step back and begin the form all over, it seems you have lost track of where you are trying to go with it...

Here is an example of a form that I would use (note this is KiXforms.net)
Code:

Break On
$System = CreateObject("Kixforms.System")
If Not $System
$nul= MessageBox("KiXforms.Net Not Initiated. This Script Will Now Close.","Error",16)
Quit()
EndIf

$Form3 = $System.Form()
$Form3.Left = 325
$Form3.StartPosition = 0 ;FormStartPosition_Manual
$Form3.Size = $System.Size(323,161) ;(Width,Height)
$Form3.Text = "Printer Setup"
$Form3.Top = 75

$Label1 = $System.Label()
$Label1.BorderStyle = 1 ;FixedSingle
$Label1.Left = 9
$Label1.Text = "Select Default Printer"
$Label1.Top = 9
$Label1.Width = 123
$nul = $Form3.Controls.Add($Label1)

$Label2 = $System.Label()
$Label2.BorderStyle = 1 ;FixedSingle
$Label2.Left = 162
$Label2.Text = "Select other printers"
$Label2.Top = 8
$Label2.Width = 111
$nul = $Form3.Controls.Add($Label2)

$ComboBox1 = $System.ComboBox()
$ComboBox1.Left = 8
$ComboBox1.Text = "ComboBox1"
$ComboBox1.Top = 38
$nul = $Form3.Controls.Add($ComboBox1)

$ComboBox1Item0 = $ComboBox1.Items.Add("Line1")
$ComboBox1Item1 = $ComboBox1.Items.Add("Line2")
$ComboBox1Item2 = $ComboBox1.Items.Add("Line3")

$ComboBox2 = $System.ComboBox()
$ComboBox2.Left = 160
$ComboBox2.Text = "ComboBox2"
$ComboBox2.Top = 39
$nul = $Form3.Controls.Add($ComboBox2)

$ComboBox2Item0 = $ComboBox2.Items.Add("Line1")
$ComboBox2Item1 = $ComboBox2.Items.Add("Line2")
$ComboBox2Item2 = $ComboBox2.Items.Add("Line3")

$Button1 = $System.Button()
$Button1.Left = 8
$Button1.Text = "Set Printers"
$Button1.Top = 84
$nul = $Form3.Controls.Add($Button1)

$Button2 = $System.Button()
$Button2.Left = 109
$Button2.Text = "Clear"
$Button2.Top = 84
$nul = $Form3.Controls.Add($Button2)

$Button3 = $System.Button()
$Button3.Left = 210
$Button3.Text = "Exit"
$Button3.Top = 84
$nul = $Form3.Controls.Add($Button3)

$Form3.Show ;Displays the Form

While $Form3.Visible
$Nul = Execute($Form3.DoEvents())
Loop
Exit 0


Please note this is nowhere near a working script. Just an idea of what your form should look like.

Top
#168676 - 2006-10-01 03:36 PM Re: Script to setup printers
jeremyschubert Offline
Getting the hang of it

Registered: 2005-09-17
Posts: 89
Thanks for the advice Gargoyle and Witto. I have a lot to learn!
Witto - The jpg and inf files are actually hosted on a downtown server so I don't have to worry about the 10 user limit.
Gargoyle - I'm examining your code to see how I would write similar for my needs.

Thanks again to you both,
Jeremy

Top
#168677 - 2006-10-01 05:35 PM Re: Script to setup printers
Benny69 Offline
Moderator
*****

Registered: 2003-10-29
Posts: 1036
Loc: Lincoln, Ne
Hi Jeremy,
I have made several changes;

There are 2 ‘RadioButtons':
‘Use Current Printer Settings’ – Select this one and no printer settings will be changed
‘Modify Printer Settings’ – Select this one and selections in the ‘GroupBox’ will be appied.

Inside the ‘GroupBox’;
Select the ‘RadioButton’ to the left of the Computer Lab Printer and it will be set as the default printer.

Select the ‘RadioButton’ to the left of the Library Printer and it will be set as the default printer.

Place a check next to each printer you want to install.

Click the ‘Click Here To Close This Window’ and the chosen printer settings will be applied.

Here is your modified code:
Code:

Break On
$System = CreateObject("Kixtart.System")
If Not $System
$nul= MessageBox("KiXforms Not Initiated. This Script Will Now Close.","Error",16)
Quit()
EndIf

$Form = $System.Form()
$Form.Text = "St. Matthew School Computer Network - Admin Site Printer Install"
$Form.Width = 600
$Form.Height = 600
$Form.BackColor = $Form.RGB(255,255,0)

$Panel = $Form.Controls.Add("Panel")
$Panel.Dock = "top" ;resize for your needs
$Panel.BackgroundImage = "\\s096-a0290-01\sch030$\printers\matthew.jpg"

$Instructions = $Form.Controls.Add("Label")
$Instructions.Height = 31
$Instructions.Left = 10
$Instructions.TextAlign = 32 ;Center Text in Label
$Instructions.Text = "Please wait while I determine which printers you are already connected to..."
$Instructions.Top = 135
$Instructions.Width = $Form.ClientWidth-20

$Listbox = $Form.Controls.Add("Listbox")
$Listbox.Height = 150
$Listbox.Left = 280
$Listbox.Top = 175
$Listbox.Width = 250

$DefPrintersRadioButton = $Form.Controls.Add("RadioButton")
$DefPrintersRadioButton.Left = 10
$DefPrintersRadioButton.Top = $Listbox.Bottom+10
$DefPrintersRadioButton.Text = "Use Current Printer Settings"
$DefPrintersRadioButton.Width = 150
$DefPrintersRadioButton.Checked = "True"
$DefPrintersRadioButton.OnClick = "CheckPrinterRadioButtons()"

$ModPrintersRadioButton = $Form.Controls.Add("RadioButton")
$ModPrintersRadioButton.Left = 10
$ModPrintersRadioButton.Top = $DefPrintersRadioButton.Bottom+10
$ModPrintersRadioButton.Text = "Modify Printer Settings"
$ModPrintersRadioButton.Width = 150
$ModPrintersRadioButton.OnClick = "CheckPrinterRadioButtons()"

$PrintersGroupBox = $Form.Controls.Add("GroupBox")
$PrintersGroupBox.Left = $ModPrintersRadioButton.Right+10
$PrintersGroupBox.Top = $ModPrintersRadioButton.Top
$PrintersGroupBox.Height = 85
$PrintersGroupBox.Width = $Form.ClientWidth-180
$PrintersGroupBox.Text = "Default Install Printer"

$ComputerLabRadioButton = $PrintersGroupBox.Controls.Add("RadioButton")
$ComputerLabRadioButton.Left = 20
$ComputerLabRadioButton.Top = 20
$ComputerLabRadioButton.Height = 20
$ComputerLabRadioButton.Width = 20
$ComputerLabRadioButton.Enabled = "False"
$ComputerLabRadioButton.OnClick = "CheckComputerLabRadioButton()"

$ComputerLabCheckBox = $PrintersGroupBox.Controls.Add("CheckBox")
$ComputerLabCheckBox.Left = $ComputerLabRadioButton.Right+20
$ComputerLabCheckBox.Top = $ComputerLabRadioButton.Top
$ComputerLabCheckBox.Height = 20
$ComputerLabCheckBox.Width = $PrintersGroupBox.Width-$ComputerLabCheckBox.Left-10
$ComputerLabCheckBox.Text = "Computer Lab Printer"
$ComputerLabCheckBox.Enabled = "False"
$ComputerLabCheckBox.OnClick = "CheckComputerLabCheckBox()"

$LibraryPrinterRadioButton = $PrintersGroupBox.Controls.Add("RadioButton")
$LibraryPrinterRadioButton.Left = 20
$LibraryPrinterRadioButton.Top = $ComputerLabRadioButton.Bottom
$LibraryPrinterRadioButton.Height = 20
$LibraryPrinterRadioButton.Width = 20
$LibraryPrinterRadioButton.Enabled = "False"
$LibraryPrinterRadioButton.OnClick = "CheckLibraryPrinterRadioButton()"

$LibraryPrinterCheckBox = $PrintersGroupBox.Controls.Add("CheckBox")
$LibraryPrinterCheckBox.Left = $LibraryPrinterRadioButton.Right+20
$LibraryPrinterCheckBox.Top = $LibraryPrinterRadioButton.Top
$LibraryPrinterCheckBox.Height = 20
$LibraryPrinterCheckBox.Width = $PrintersGroupBox.Width-$LibraryPrinterCheckBox.Left-10
$LibraryPrinterCheckBox.Text = "Library Printer"
$LibraryPrinterCheckBox.Enabled = "False"
$LibraryPrinterCheckBox.OnClick = "CheckLibraryPrinterCheckBox()"

$OfficePrinterCheckBox = $PrintersGroupBox.Controls.Add("CheckBox")
$OfficePrinterCheckBox.Left = $LibraryPrinterRadioButton.Right+20
$OfficePrinterCheckBox.Top = $LibraryPrinterCheckBox.Bottom
$OfficePrinterCheckBox.Height = 20
$OfficePrinterCheckBox.Width = $PrintersGroupBox.Width-$OfficePrinterCheckBox.Left-10
$OfficePrinterCheckBox.Text = "Office Printer"
$OfficePrinterCheckBox.Enabled = "False"

$Exit = $Form.Controls.Add("Button")
$Exit.Cancel = "True"
$Exit.Default = "True"
$Exit.Height = 31
$Exit.Left = 10
$Exit.Text = "Click Here To Close This Window"
$Exit.Top = $PrintersGroupBox.Bottom+10
$Exit.Width = $Form.ClientWidth-20
$Exit.OnClick = "ExitButton()"

$Form.Center
$Form.Show

GetDefaultPrinter()
EnumPrinters()

While $Form.Visible
$nul = Execute($Form.DoEvents)
Loop
Exit 1

Function GetDefaultPrinter()

;FUNCTION GetDefaultPrinter()
;
;AUTHOR Jochen Polster (jochenDOTpolsterATgmxDOTnet)
;
;VERSION 1.0
;
;VERSION HISTORY 1.0 2004/04/28 Initial release
;
;ACTION Retrieves the current default Printer
;
;SYNTAX GetDefaultPrinter()
;
;PARAMETERS none
;
;REMARKS won't work with 9x OS
;
;RETURNS The current Users default Printer
;
;DEPENDENCIES None !
;
;EXAMPLES $default = GetDefaultPrinter

$GetDefaultPrinter = Join(Split(ReadValue("HKEY_USERS\"+@sid+"\Software\Microsoft\Windows NT\CurrentVersion\Windows","Device"),',',1),'')
$Listbox2.additem("Default Printer = "+$GetDefaultPrinter)
;Create blank space between default printer listing and the listing of all printers.
$Listbox2.additem("")

EndFunction

Function EnumPrinters()

;Writes all printer to a file.
;$array=printerlist()
;$rc = Open (1, "c:\installedprinters.txt", 5)
;For Each $printer in $array
; $rc = WriteLine (1, $printer + " is installed on: " + @WKSTA + @CRLF)
;Next
;$rc = Close(1)

;DISPLAY LOCAL AND NETWORKED PRINTERS

;shows the printers on your screen.
$array=printerlist()
For Each $printer in $array
$Listbox2.additem("Printer = "+$printer)
Next

EndFunction

Function PrinterList(optional $remotepc, optional $displaymode)

;Function:
; PrinterList()
;
;Author:
; Allen Powell (Al_Po)
;
;Version:
; 1.3.1 (2006/05/10 fixed error detecting Print Servers sharing IP Printers)
;
;Revisions
; 1.3.0 (2005/10/21 added options to distinguish local or remote printers)
; 1.2.0 (2005/07/19 optimized code)
; 1.1.0 (2004/08/09 undimmed variable fix)
; 1.0.0 (2003/06/26 Original)
;
;Action:
; Creates an array/list of Printers, and optionally their ports installed, on a local or remote computer.&n bsp;
;
;Syntax:
; Printerlist(optional $remotepc,optional $displaymode)
;
;Parameters:
; $RemotePC: (Optional)
; Remote Computer. If omitted defaults to localpc.
; $DisplayMode (Optional)
; 0 - show all printers, don't display port info (Default)
; 1 - show all printers, display port info
; 2 - show local printers, don't display port info
; 3 - show local printers, display port info
; 4 - show remote printers, don't display port info
; 5 - show remote printers, display port info
;Returns:
; Array of Printers
;
;Dependencies:
; WMI
;
;Example:
;
;break on
;$RC=Setoption("WrapAtEOL","on")
;
;$array=printerlist()
;for each $printer in $array
; ? $printer
;next
;
;Source:
Dim $service,$printer,$printers,$printerdesc[0],$counter,$portname,$printername
If $remotepc=""
$remotepc="."
EndIf
$Service = GetObject("winmgmts:\\" + $remotepc + "\root\cimv2")
If @error
Exit @error
EndIf
$Printers=$service.execquery ('select * from Win32_Printer')
For Each $printer in $printers
ReDim preserve $printerdesc[$counter]
If $displaymode & 1
$portname = "," + $printer.portname
EndIf
Select
Case $displaymode & 4 ;remote printers
If Left($printer.portname,2)="\\" Or Left($printer.name,2)=="\\"
$printername=$printer.name
EndIf
Case $displaymode & 2 ;local printers
If Left($printer.portname,2)<>"\\" And Left($printer.name,2)<>"\\"
$printername=$printer.name
EndIf
Case 1 ; all printers
$printername=$printer.name
EndSelect
If $printername<>""
$printerdesc[$counter]=$printername + $portname
$counter=$counter + 1
$printername=""
EndIf
Next
$PrinterList=$printerdesc

EndFunction

Function ExitButton()
SelectAPrinter()
Quit()
EndFunction

Function AddPrinter($Port,$PrinterType,optional $DriverInf,optional $PrinterDesc,optional $remotepc,optional $Default)
;Function:
; AddPrinter()
;
;Author:
; Allen Powell (Al_Po)
;
;Version:
; 1.0
;
;Action:
; Add IP,LPT, Or COM Printers locally Or remotely. Also, add PrintServer connections locally.
;
;Syntax:
; AddPrinter($Port,$PrinterType,optional $DriverInf,optional $PrinterDesc,optional $remotepc,optional $Default)
;
;Parameters:
; $Port: (required)
; IPAddress (xxx.xxx.xxx.xxx)
; LPT (LPT1:)
; COM (COM1:)
; PrintServer (\\server\printer)
; $PrinterType: (required)
; Descriptor of Printer within INF file
; Note: If using a PrintServer, $PrinterType value is ignored.
; $DriverInf: (Optional)
; Location And name of INF file containing print drivers
; Note: If omitted, attempts to Use default Windows Print Drivers
; $PrinterDesc: (Optional)
; Description of Printer
; Note: If ommitted, $PrinterDesc = PrinterType
; $RemotePC: (Optional)
; PC to install Printer/Drivers on. If omitted defaults to localpc.
; Note: Ignored If $Port is a PrintServer
; $Default: (Optional)
; 0 = Do Not Set as Default Printer (Default)
; 1 = Set as Default Printer
;
;Returns:
; 1 - Successful
; 0 - Failed
; If Failed sets @error to
; -4 - Error connecting to RemotePC
; -3 - Could Not Open/find INF file
; -2 - Could Not find $PrinterType in INF file
; -1 - Unrecognized Port
;
;Dependencies:
; Windows 2000 Professional And up
; rundll32 printui.dll,PrintUIEntry
;
;Examples:
;$=AddPrinter("192.168.1.1","Xerox DocumentCenter 555 PCL6","\\Server\PrinterDrives\Xerox\dc555pcl\dc555x.inf","Xerox Document Centre 55 5 PCL6 in Office",REMOTEPC,1)
;$=Addprinter("LPT1","HP LaserJet 8100 Series PS",,"HP8100 in IS(test)")
;$=AddPrinter("192.168.1.1","HP LaserJet 8100 Series PS",,"HP8100 in IS(test)",,1)
;$=AddPrinter('\\server\printer','_')
;Source:

Dim $quitloop,$IPPrinterKey,$PrinterCMD
$AddPrinter=0
If Not Left($Port,2)="\\"
If $Driverinf=""
$DriverInf="%windir%\inf\ntprint.inf"
EndIf
If Not Exist($DriverInf)
Exit -3
EndIf
Shell '%comspec% /c type "$driverinf">%temp%\addprinter.txt'
If Open(3,"%temp%\addprinter.txt",0)=0
$quitloop=0
While @error=0 And $quitloop=0
$line=ReadLine(3)
$quitloop=InStr($line,$PrinterType)
Loop
$=Close(3)
If $quitloop=0
Exit -2
EndIf
Else
Exit -3
EndIf
EndIf
If $PrinterDesc=""
$PrinterDesc=$PrinterType
EndIf
If $remotepc=""
$remotepc='\\'+ @wksta
Else
If Not Left($remotepc,2)="\\"
$remotepc='\\' + $remotepc
EndIf
EndIf

Select
Case Left($Port,2)="\\"
$printserver=1
$printerdesc=$port
Case InStr($Port,".")
$IPPrinterKey = '$remotepc\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Monitors\Standard TCP/IP Port\Ports\IP_' +$Port
If Not KeyExist($IPPrinterKey)
$=AddKey($IPPrinterKey)
$=WriteValue($IPPrinterKey,"Protocol","00000001","REG_DWORD")
$=WriteValue($IPPrinterKey,"Version","00000001","REG_DWORD")
$=WriteValue($IPPrinterKey,"HostName","", "REG_SZ")
$=WriteValue($IPPrinterKey,"IPAddress","$Port","REG_SZ")
$=WriteValue($IPPrinterKey,"HWAddress","","REG_SZ")
$=WriteValue($IPPrinterKey,"PortNumber","00009100","REG_DWORD")
$=WriteValue($IPPrinterKey,"SNMP Community","public","REG_SZ")
$=WriteValue($IPPrinterKey,"SNMP Enabled","00000001","REG_DWORD")
$=WriteValue($IPPrinterKey,"SNMP Index","00000001","REG_DWORD")
EndIf
$objects=GetObject("winmgmts:{impersonationLevel=impersonate}!"+$remotepc+"\root\cimv2")
If Not @error=0
Exit -4
EndIf
$services=$objects.ExecQuery('Select * from Win32_Service WHERE Name = "Spooler"')
For Each $spooler in $services
$=Execute('$$=$$spooler.stopservice()')
Next
Sleep 1
For Each $spooler in $services
$=Execute('$$=$$spooler.startservice()')
Next
$port='IP_$port'
Case UCase(Left($Port,3))="LPT" Or UCase(Left($Port,3))="COM"
If Not Right($port,1)=":"
$Port=$port+":"
EndIf
If Not Val(Left(Right($port,2),1))>=1
Exit -1
EndIf
Case UCase(Left($Port,4))="FILE"
If Not Right($port,1)=":"
$Port=$port+":"
EndIf
Case 1
Exit -1
EndSelect
If Not $Printserver=1
$printercmd='rundll32 printui.dll,PrintUIEntry /if /b "$printerdesc" /c "$remotepc" ' +
'/f "$driverinf" /r "$port" /m "$Printertype" /z /u '
Shell $printercmd
Else
If Not AddPrinterConnection($port)=0
Exit @error
EndIf
EndIf
If $default=1
If Not SetDefaultPrinter($PrinterDesc)=0
Exit @error
EndIf
EndIf
$AddPrinter=1
EndFunction

Function SelectAPrinter()

If $ModPrintersRadioButton.Checked = "True"
Select
Case ($LibraryPrinterRadioButton.Checked = "False") And ($LibraryPrinterCheckBox.CheckState = -1)
AddPrinter("10.48.18.1","Lexmark T640","\\s096-a290-01\sch030$\printers\t640.inf","Library Printer",0)
Case ($LibraryPrinterRadioButton.Checked = "True") And ($LibraryPrinterCheckBox.CheckState = -1)
AddPrinter("10.48.18.1","Lexmark T640","\\s096-a290-01\sch030$\printers\t640.inf","Library Printer",1)
Case ($ComputerLabRadioButton.Checked = "False") And ($ComputerLabCheckBox.CheckState = -1)
AddPrinter("10.48.18.2","Lexmark T640","\\s096-a290-01\sch030$\printers\t640.inf","Computer Lab Printer",0)
Case ($ComputerLabRadioButton.Checked = "True") And ($ComputerLabCheckBox.CheckState = -1)
AddPrinter("10.48.18.2","Lexmark T640","\\s096-a290-01\sch030$\printers\t640.inf","Computer Lab Printer",1)
Case $OfficePrinterCheckBox.CheckState = -1
AddPrinter("10.48.18.3","Lexmark T640","\\s096-a290-01\sch030$\printers\t640.inf","Office Printer",0)
EndSelect
EndIf

EndFunction

Function CheckPrinterRadioButtons()

If $DefPrintersRadioButton.Checked = "True"
$ComputerLabRadioButton.Enabled = "True"
$LibraryPrinterRadioButton.Enabled = "True"
$ComputerLabCheckBox.Enabled = "True"
$LibraryPrinterCheckBox.Enabled = "True"
$OfficePrinterCheckBox.Enabled = "True"

$ComputerLabRadioButton.Checked = "True"
Else
$ComputerLabRadioButton.Enabled = "False"
$LibraryPrinterRadioButton.Enabled = "False"
$ComputerLabCheckBox.Enabled = "False"
$LibraryPrinterCheckBox.Enabled = "False"
$OfficePrinterCheckBox.Enabled = "False"

$ComputerLabRadioButton.Checked = "False"
$LibraryPrinterRadioButton.Checked = "False"

$ComputerLabCheckBox.CheckState = 0
$LibraryPrinterCheckBox.CheckState = 0
$OfficePrinterCheckBox.CheckState = 0
EndIf

EndFunction

Function CheckComputerLabRadioButton()

$LibraryPrinterRadioButton.Checked = "False"
$ComputerLabCheckBox.Checked = "True"

EndFunction

Function CheckLibraryPrinterRadioButton()

$ComputerLabRadioButton.Checked = "False"
$LibraryPrinterCheckBox.Checked = "True"

EndFunction

Function CheckComputerLabCheckBox()

If $LibraryPrinterRadioButton.Checked = "True"
$ComputerLabCheckBox.Checked = "True"
EndIf

EndFunction

Function CheckLibraryPrinterCheckBox()

If $ComputerLabRadioButton.Checked = "True"
$LibraryPrinterCheckBox.Checked = "True"
EndIf

EndFunction

_________________________
Wait don't order yet,... get KiXforms Designer .NET 2.0 (Beta)
KiXforms Designer .NET 2.0 (Beta)

Top
#168678 - 2006-10-01 11:52 PM Re: Script to setup printers
Witto Offline
MM club member
*****

Registered: 2004-09-29
Posts: 1828
Loc: Belgium
That is quite a change.
Could I suggest some changes?
Maybe an indication to the user when the listbox is populated.
Also silence the screenoutput for GetDefaultPrinter().
Code:

$Form.Center
$Form.Show

$RC = GetDefaultPrinter()
EnumPrinters()

$Instructions.Text = "Your printers are listed. Now you can add extra printers and change the default."

While $Form.Visible
$nul = Execute($Form.DoEvents)
Loop
Exit 1


The ListBox does not get populated because $Listbox2 is being referenced.
Code:

$GetDefaultPrinter = Join(Split(ReadValue("HKEY_USERS\"+@sid+"\Software\Microsoft\Windows NT\CurrentVersion\Windows","Device"),',',1),'')
$Listbox2.additem("Default Printer = "+$GetDefaultPrinter)
;Create blank space between default printer listing and the listing of all printers.
$Listbox2.additem("")
...
$Listbox2.additem("Printer = "+$printer)


Top
#168679 - 2006-10-02 12:23 AM Re: Script to setup printers
Benny69 Offline
Moderator
*****

Registered: 2003-10-29
Posts: 1036
Loc: Lincoln, Ne
good points witto,
here is the modified code:
Code:

Break On
$System = CreateObject("Kixtart.System")
If Not $System
$nul= MessageBox("KiXforms Not Initiated. This Script Will Now Close.","Error",16)
Quit()
EndIf

$Form = $System.Form()
$Form.Text = "St. Matthew School Computer Network - Admin Site Printer Install"
$Form.Width = 600
$Form.Height = 600
$Form.BackColor = $Form.RGB(255,255,0)

$Panel = $Form.Controls.Add("Panel")
$Panel.Dock = "top" ;resize for your needs
$Panel.BackgroundImage = "\\s096-a0290-01\sch030$\printers\matthew.jpg"

$Instructions = $Form.Controls.Add("Label")
$Instructions.Height = 31
$Instructions.Left = 10
$Instructions.TextAlign = 32 ;Center Text in Label
$Instructions.Text = "Please wait while I determine which printers you are already connected to..."
$Instructions.Top = 135
$Instructions.Width = $Form.ClientWidth-20

$Listbox = $Form.Controls.Add("Listbox")
$Listbox.Height = 150
$Listbox.Left = 280
$Listbox.Top = 175
$Listbox.Width = 250

$DefPrintersRadioButton = $Form.Controls.Add("RadioButton")
$DefPrintersRadioButton.Left = 10
$DefPrintersRadioButton.Top = $Listbox.Bottom+10
$DefPrintersRadioButton.Text = "Use Current Printer Settings"
$DefPrintersRadioButton.Width = 150
$DefPrintersRadioButton.Checked = "True"
$DefPrintersRadioButton.OnClick = "CheckPrinterRadioButtons()"

$ModPrintersRadioButton = $Form.Controls.Add("RadioButton")
$ModPrintersRadioButton.Left = 10
$ModPrintersRadioButton.Top = $DefPrintersRadioButton.Bottom+10
$ModPrintersRadioButton.Text = "Modify Printer Settings"
$ModPrintersRadioButton.Width = 150
$ModPrintersRadioButton.OnClick = "CheckPrinterRadioButtons()"

$PrintersGroupBox = $Form.Controls.Add("GroupBox")
$PrintersGroupBox.Left = $ModPrintersRadioButton.Right+10
$PrintersGroupBox.Top = $ModPrintersRadioButton.Top
$PrintersGroupBox.Height = 85
$PrintersGroupBox.Width = $Form.ClientWidth-180
$PrintersGroupBox.Text = "Default Install Printer"

$ComputerLabRadioButton = $PrintersGroupBox.Controls.Add("RadioButton")
$ComputerLabRadioButton.Left = 20
$ComputerLabRadioButton.Top = 20
$ComputerLabRadioButton.Height = 20
$ComputerLabRadioButton.Width = 20
$ComputerLabRadioButton.Enabled = "False"
$ComputerLabRadioButton.OnClick = "CheckComputerLabRadioButton()"

$ComputerLabCheckBox = $PrintersGroupBox.Controls.Add("CheckBox")
$ComputerLabCheckBox.Left = $ComputerLabRadioButton.Right+20
$ComputerLabCheckBox.Top = $ComputerLabRadioButton.Top
$ComputerLabCheckBox.Height = 20
$ComputerLabCheckBox.Width = $PrintersGroupBox.Width-$ComputerLabCheckBox.Left-10
$ComputerLabCheckBox.Text = "Computer Lab Printer"
$ComputerLabCheckBox.Enabled = "False"
$ComputerLabCheckBox.OnClick = "CheckComputerLabCheckBox()"

$LibraryPrinterRadioButton = $PrintersGroupBox.Controls.Add("RadioButton")
$LibraryPrinterRadioButton.Left = 20
$LibraryPrinterRadioButton.Top = $ComputerLabRadioButton.Bottom
$LibraryPrinterRadioButton.Height = 20
$LibraryPrinterRadioButton.Width = 20
$LibraryPrinterRadioButton.Enabled = "False"
$LibraryPrinterRadioButton.OnClick = "CheckLibraryPrinterRadioButton()"

$LibraryPrinterCheckBox = $PrintersGroupBox.Controls.Add("CheckBox")
$LibraryPrinterCheckBox.Left = $LibraryPrinterRadioButton.Right+20
$LibraryPrinterCheckBox.Top = $LibraryPrinterRadioButton.Top
$LibraryPrinterCheckBox.Height = 20
$LibraryPrinterCheckBox.Width = $PrintersGroupBox.Width-$LibraryPrinterCheckBox.Left-10
$LibraryPrinterCheckBox.Text = "Library Printer"
$LibraryPrinterCheckBox.Enabled = "False"
$LibraryPrinterCheckBox.OnClick = "CheckLibraryPrinterCheckBox()"

$OfficePrinterCheckBox = $PrintersGroupBox.Controls.Add("CheckBox")
$OfficePrinterCheckBox.Left = $LibraryPrinterRadioButton.Right+20
$OfficePrinterCheckBox.Top = $LibraryPrinterCheckBox.Bottom
$OfficePrinterCheckBox.Height = 20
$OfficePrinterCheckBox.Width = $PrintersGroupBox.Width-$OfficePrinterCheckBox.Left-10
$OfficePrinterCheckBox.Text = "Office Printer"
$OfficePrinterCheckBox.Enabled = "False"

$Exit = $Form.Controls.Add("Button")
$Exit.Cancel = "True"
$Exit.Default = "True"
$Exit.Height = 31
$Exit.Left = 10
$Exit.Text = "Click Here To Close This Window"
$Exit.Top = $PrintersGroupBox.Bottom+10
$Exit.Width = $Form.ClientWidth-20
$Exit.OnClick = "ExitButton()"

$Form.Center
$Form.Show

$nul = GetDefaultPrinter()
EnumPrinters()
$Instructions.Text = "Your printers are listed. Now you can add extra printers and change the default."

While $Form.Visible
$nul = Execute($Form.DoEvents)
Loop
Exit 1

Function GetDefaultPrinter()

;FUNCTION GetDefaultPrinter()
;
;AUTHOR Jochen Polster (jochenDOTpolsterATgmxDOTnet)
;
;VERSION 1.0
;
;VERSION HISTORY 1.0 2004/04/28 Initial release
;
;ACTION Retrieves the current default Printer
;
;SYNTAX GetDefaultPrinter()
;
;PARAMETERS none
;
;REMARKS won't work with 9x OS
;
;RETURNS The current Users default Printer
;
;DEPENDENCIES None !
;
;EXAMPLES $default = GetDefaultPrinter

$GetDefaultPrinter = Join(Split(ReadValue("HKEY_USERS\"+@sid+"\Software\Microsoft\Windows NT\CurrentVersion\Windows","Device"),',',1),'')
$Listbox.additem("Default Printer = "+$GetDefaultPrinter)
;Create blank space between default printer listing and the listing of all printers.
$Listbox.additem("")

EndFunction

Function EnumPrinters()

;Writes all printer to a file.
;$array=printerlist()
;$rc = Open (1, "c:\installedprinters.txt", 5)
;For Each $printer in $array
; $rc = WriteLine (1, $printer + " is installed on: " + @WKSTA + @CRLF)
;Next
;$rc = Close(1)

;DISPLAY LOCAL AND NETWORKED PRINTERS

;shows the printers on your screen.
$array=printerlist()
For Each $printer in $array
$Listbox.additem("Printer = "+$printer)
Next

EndFunction

Function PrinterList(optional $remotepc, optional $displaymode)

;Function:
; PrinterList()
;
;Author:
; Allen Powell (Al_Po)
;
;Version:
; 1.3.1 (2006/05/10 fixed error detecting Print Servers sharing IP Printers)
;
;Revisions
; 1.3.0 (2005/10/21 added options to distinguish local or remote printers)
; 1.2.0 (2005/07/19 optimized code)
; 1.1.0 (2004/08/09 undimmed variable fix)
; 1.0.0 (2003/06/26 Original)
;
;Action:
; Creates an array/list of Printers, and optionally their ports installed, on a local or remote computer.&n bsp;
;
;Syntax:
; Printerlist(optional $remotepc,optional $displaymode)
;
;Parameters:
; $RemotePC: (Optional)
; Remote Computer. If omitted defaults to localpc.
; $DisplayMode (Optional)
; 0 - show all printers, don't display port info (Default)
; 1 - show all printers, display port info
; 2 - show local printers, don't display port info
; 3 - show local printers, display port info
; 4 - show remote printers, don't display port info
; 5 - show remote printers, display port info
;Returns:
; Array of Printers
;
;Dependencies:
; WMI
;
;Example:
;
;break on
;$RC=Setoption("WrapAtEOL","on")
;
;$array=printerlist()
;for each $printer in $array
; ? $printer
;next
;
;Source:
Dim $service,$printer,$printers,$printerdesc[0],$counter,$portname,$printername
If $remotepc=""
$remotepc="."
EndIf
$Service = GetObject("winmgmts:\\" + $remotepc + "\root\cimv2")
If @error
Exit @error
EndIf
$Printers=$service.execquery ('select * from Win32_Printer')
For Each $printer in $printers
ReDim preserve $printerdesc[$counter]
If $displaymode & 1
$portname = "," + $printer.portname
EndIf
Select
Case $displaymode & 4 ;remote printers
If Left($printer.portname,2)="\\" Or Left($printer.name,2)=="\\"
$printername=$printer.name
EndIf
Case $displaymode & 2 ;local printers
If Left($printer.portname,2)<>"\\" And Left($printer.name,2)<>"\\"
$printername=$printer.name
EndIf
Case 1 ; all printers
$printername=$printer.name
EndSelect
If $printername<>""
$printerdesc[$counter]=$printername + $portname
$counter=$counter + 1
$printername=""
EndIf
Next
$PrinterList=$printerdesc

EndFunction

Function ExitButton()
SelectAPrinter()
Quit()
EndFunction

Function AddPrinter($Port,$PrinterType,optional $DriverInf,optional $PrinterDesc,optional $remotepc,optional $Default)
;Function:
; AddPrinter()
;
;Author:
; Allen Powell (Al_Po)
;
;Version:
; 1.0
;
;Action:
; Add IP,LPT, Or COM Printers locally Or remotely. Also, add PrintServer connections locally.
;
;Syntax:
; AddPrinter($Port,$PrinterType,optional $DriverInf,optional $PrinterDesc,optional $remotepc,optional $Default)
;
;Parameters:
; $Port: (required)
; IPAddress (xxx.xxx.xxx.xxx)
; LPT (LPT1:)
; COM (COM1:)
; PrintServer (\\server\printer)
; $PrinterType: (required)
; Descriptor of Printer within INF file
; Note: If using a PrintServer, $PrinterType value is ignored.
; $DriverInf: (Optional)
; Location And name of INF file containing print drivers
; Note: If omitted, attempts to Use default Windows Print Drivers
; $PrinterDesc: (Optional)
; Description of Printer
; Note: If ommitted, $PrinterDesc = PrinterType
; $RemotePC: (Optional)
; PC to install Printer/Drivers on. If omitted defaults to localpc.
; Note: Ignored If $Port is a PrintServer
; $Default: (Optional)
; 0 = Do Not Set as Default Printer (Default)
; 1 = Set as Default Printer
;
;Returns:
; 1 - Successful
; 0 - Failed
; If Failed sets @error to
; -4 - Error connecting to RemotePC
; -3 - Could Not Open/find INF file
; -2 - Could Not find $PrinterType in INF file
; -1 - Unrecognized Port
;
;Dependencies:
; Windows 2000 Professional And up
; rundll32 printui.dll,PrintUIEntry
;
;Examples:
;$=AddPrinter("192.168.1.1","Xerox DocumentCenter 555 PCL6","\\Server\PrinterDrives\Xerox\dc555pcl\dc555x.inf","Xerox Document Centre 55 5 PCL6 in Office",REMOTEPC,1)
;$=Addprinter("LPT1","HP LaserJet 8100 Series PS",,"HP8100 in IS(test)")
;$=AddPrinter("192.168.1.1","HP LaserJet 8100 Series PS",,"HP8100 in IS(test)",,1)
;$=AddPrinter('\\server\printer','_')
;Source:

Dim $quitloop,$IPPrinterKey,$PrinterCMD
$AddPrinter=0
If Not Left($Port,2)="\\"
If $Driverinf=""
$DriverInf="%windir%\inf\ntprint.inf"
EndIf
If Not Exist($DriverInf)
Exit -3
EndIf
Shell '%comspec% /c type "$driverinf">%temp%\addprinter.txt'
If Open(3,"%temp%\addprinter.txt",0)=0
$quitloop=0
While @error=0 And $quitloop=0
$line=ReadLine(3)
$quitloop=InStr($line,$PrinterType)
Loop
$=Close(3)
If $quitloop=0
Exit -2
EndIf
Else
Exit -3
EndIf
EndIf
If $PrinterDesc=""
$PrinterDesc=$PrinterType
EndIf
If $remotepc=""
$remotepc='\\'+ @wksta
Else
If Not Left($remotepc,2)="\\"
$remotepc='\\' + $remotepc
EndIf
EndIf

Select
Case Left($Port,2)="\\"
$printserver=1
$printerdesc=$port
Case InStr($Port,".")
$IPPrinterKey = '$remotepc\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Monitors\Standard TCP/IP Port\Ports\IP_' +$Port
If Not KeyExist($IPPrinterKey)
$=AddKey($IPPrinterKey)
$=WriteValue($IPPrinterKey,"Protocol","00000001","REG_DWORD")
$=WriteValue($IPPrinterKey,"Version","00000001","REG_DWORD")
$=WriteValue($IPPrinterKey,"HostName","", "REG_SZ")
$=WriteValue($IPPrinterKey,"IPAddress","$Port","REG_SZ")
$=WriteValue($IPPrinterKey,"HWAddress","","REG_SZ")
$=WriteValue($IPPrinterKey,"PortNumber","00009100","REG_DWORD")
$=WriteValue($IPPrinterKey,"SNMP Community","public","REG_SZ")
$=WriteValue($IPPrinterKey,"SNMP Enabled","00000001","REG_DWORD")
$=WriteValue($IPPrinterKey,"SNMP Index","00000001","REG_DWORD")
EndIf
$objects=GetObject("winmgmts:{impersonationLevel=impersonate}!"+$remotepc+"\root\cimv2")
If Not @error=0
Exit -4
EndIf
$services=$objects.ExecQuery('Select * from Win32_Service WHERE Name = "Spooler"')
For Each $spooler in $services
$=Execute('$$=$$spooler.stopservice()')
Next
Sleep 1
For Each $spooler in $services
$=Execute('$$=$$spooler.startservice()')
Next
$port='IP_$port'
Case UCase(Left($Port,3))="LPT" Or UCase(Left($Port,3))="COM"
If Not Right($port,1)=":"
$Port=$port+":"
EndIf
If Not Val(Left(Right($port,2),1))>=1
Exit -1
EndIf
Case UCase(Left($Port,4))="FILE"
If Not Right($port,1)=":"
$Port=$port+":"
EndIf
Case 1
Exit -1
EndSelect
If Not $Printserver=1
$printercmd='rundll32 printui.dll,PrintUIEntry /if /b "$printerdesc" /c "$remotepc" ' +
'/f "$driverinf" /r "$port" /m "$Printertype" /z /u '
Shell $printercmd
Else
If Not AddPrinterConnection($port)=0
Exit @error
EndIf
EndIf
If $default=1
If Not SetDefaultPrinter($PrinterDesc)=0
Exit @error
EndIf
EndIf
$AddPrinter=1
EndFunction

Function SelectAPrinter()

If $ModPrintersRadioButton.Checked = "True"
Select
Case ($LibraryPrinterRadioButton.Checked = "False") And ($LibraryPrinterCheckBox.CheckState = -1)
AddPrinter("10.48.18.1","Lexmark T640","\\s096-a290-01\sch030$\printers\t640.inf","Library Printer",0)
Case ($LibraryPrinterRadioButton.Checked = "True") And ($LibraryPrinterCheckBox.CheckState = -1)
AddPrinter("10.48.18.1","Lexmark T640","\\s096-a290-01\sch030$\printers\t640.inf","Library Printer",1)
Case ($ComputerLabRadioButton.Checked = "False") And ($ComputerLabCheckBox.CheckState = -1)
AddPrinter("10.48.18.2","Lexmark T640","\\s096-a290-01\sch030$\printers\t640.inf","Computer Lab Printer",0)
Case ($ComputerLabRadioButton.Checked = "True") And ($ComputerLabCheckBox.CheckState = -1)
AddPrinter("10.48.18.2","Lexmark T640","\\s096-a290-01\sch030$\printers\t640.inf","Computer Lab Printer",1)
Case $OfficePrinterCheckBox.CheckState = -1
AddPrinter("10.48.18.3","Lexmark T640","\\s096-a290-01\sch030$\printers\t640.inf","Office Printer",0)
EndSelect
EndIf

EndFunction

Function CheckPrinterRadioButtons()

If $DefPrintersRadioButton.Checked = "True"
$ComputerLabRadioButton.Enabled = "True"
$LibraryPrinterRadioButton.Enabled = "True"
$ComputerLabCheckBox.Enabled = "True"
$LibraryPrinterCheckBox.Enabled = "True"
$OfficePrinterCheckBox.Enabled = "True"

$ComputerLabRadioButton.Checked = "True"
Else
$ComputerLabRadioButton.Enabled = "False"
$LibraryPrinterRadioButton.Enabled = "False"
$ComputerLabCheckBox.Enabled = "False"
$LibraryPrinterCheckBox.Enabled = "False"
$OfficePrinterCheckBox.Enabled = "False"

$ComputerLabRadioButton.Checked = "False"
$LibraryPrinterRadioButton.Checked = "False"

$ComputerLabCheckBox.CheckState = 0
$LibraryPrinterCheckBox.CheckState = 0
$OfficePrinterCheckBox.CheckState = 0
EndIf

EndFunction

Function CheckComputerLabRadioButton()

$LibraryPrinterRadioButton.Checked = "False"
$ComputerLabCheckBox.Checked = "True"

EndFunction

Function CheckLibraryPrinterRadioButton()

$ComputerLabRadioButton.Checked = "False"
$LibraryPrinterCheckBox.Checked = "True"

EndFunction

Function CheckComputerLabCheckBox()

If $LibraryPrinterRadioButton.Checked = "True"
$ComputerLabCheckBox.Checked = "True"
EndIf

EndFunction

Function CheckLibraryPrinterCheckBox()

If $ComputerLabRadioButton.Checked = "True"
$LibraryPrinterCheckBox.Checked = "True"
EndIf

EndFunction



Edited by benny69 (2006-10-02 12:26 AM)
_________________________
Wait don't order yet,... get KiXforms Designer .NET 2.0 (Beta)
KiXforms Designer .NET 2.0 (Beta)

Top
#168680 - 2006-10-02 01:19 AM Re: Script to setup printers
jeremyschubert Offline
Getting the hang of it

Registered: 2005-09-17
Posts: 89
Thank you all for your help. I'll test it out on Tuesday when I return to work.
You've all been very helpful. When I become a lot more experienced with this, I hope I'll be able to help other newbies as well.
Jeremy

Top
#168681 - 2006-10-03 04:42 PM Re: Script to setup printers
jeremyschubert Offline
Getting the hang of it

Registered: 2005-09-17
Posts: 89
Hey Benny,
I've tried out the code this morning, but it keeps failing telling me that selectaprinter() has no endfunction. But from what I see in your code, there is an endfunction associated with selectaprinter. I've tried remming out a few things with out any luck. Do you have any suggestions for me? Could it just be my computer???
Thanks,
Jeremy

Top
#168682 - 2006-10-03 05:06 PM Re: Script to setup printers
Benny69 Offline
Moderator
*****

Registered: 2003-10-29
Posts: 1036
Loc: Lincoln, Ne
have you altered the code that i posted in any way, if you have post the the code you are using.
_________________________
Wait don't order yet,... get KiXforms Designer .NET 2.0 (Beta)
KiXforms Designer .NET 2.0 (Beta)

Top
#168683 - 2006-10-03 07:38 PM Re: Script to setup printers
NTDOC Administrator Offline
Administrator
*****

Registered: 2000-07-28
Posts: 11623
Loc: CA
Maybe I broke the code by breaking the long lines.
Top
#168684 - 2006-10-05 08:57 PM Re: Script to setup printers
jeremyschubert Offline
Getting the hang of it

Registered: 2005-09-17
Posts: 89
Sorry guys! I thought I reposted the code. But I guess not. Here it is. Any help would be appreciated. Thanks, Jeremy

Code:


Break On
$System = CreateObject("Kixtart.System") If Not $System
$nul= MessageBox("KiXforms Not Initiated. This Script Will Now Close.","Error",16)
Quit()
EndIf

$Form = $System.Form()
$Form.Text = "St. Matthew School Computer Network - Admin Site Printer Install"
$Form.Width = 600
$Form.Height = 600
$Form.BackColor = $Form.RGB(255,255,0)

$Panel = $Form.Controls.Add("Panel")
$Panel.Dock = "top" ;resize for your needs $Panel.BackgroundImage = "\\s096-a0290-01\sch030$\printers\matthew.jpg"

$Instructions = $Form.Controls.Add("Label") $Instructions.Height = 31 $Instructions.Left = 10 $Instructions.TextAlign = 32 ;Center Text in Label $Instructions.Text = "Please wait while I determine which printers you are already connected to..."
$Instructions.Top = 135
$Instructions.Width = $Form.ClientWidth-20

$Listbox = $Form.Controls.Add("Listbox") $Listbox.Height = 150 $Listbox.Left = 280 $Listbox.Top = 175 $Listbox.Width = 250

$DefPrintersRadioButton = $Form.Controls.Add("RadioButton") $DefPrintersRadioButton.Left = 10 $DefPrintersRadioButton.Top = $Listbox.Bottom+10 $DefPrintersRadioButton.Text = "Use Current Printer Settings"
$DefPrintersRadioButton.Width = 150
$DefPrintersRadioButton.Checked = "True"
$DefPrintersRadioButton.OnClick = "CheckPrinterRadioButtons()"

$ModPrintersRadioButton = $Form.Controls.Add("RadioButton") $ModPrintersRadioButton.Left = 10 $ModPrintersRadioButton.Top = $DefPrintersRadioButton.Bottom+10 $ModPrintersRadioButton.Text = "Modify Printer Settings"
$ModPrintersRadioButton.Width = 150
$ModPrintersRadioButton.OnClick = "CheckPrinterRadioButtons()"

$PrintersGroupBox = $Form.Controls.Add("GroupBox") $PrintersGroupBox.Left = $ModPrintersRadioButton.Right+10 $PrintersGroupBox.Top = $ModPrintersRadioButton.Top $PrintersGroupBox.Height = 85 $PrintersGroupBox.Width = $Form.ClientWidth-180
$PrintersGroupBox.Text = "Default Install Printer"

$ComputerLabRadioButton = $PrintersGroupBox.Controls.Add("RadioButton")
$ComputerLabRadioButton.Left = 20
$ComputerLabRadioButton.Top = 20
$ComputerLabRadioButton.Height = 20
$ComputerLabRadioButton.Width = 20
$ComputerLabRadioButton.Enabled = "False"
$ComputerLabRadioButton.OnClick = "CheckComputerLabRadioButton()"

$ComputerLabCheckBox = $PrintersGroupBox.Controls.Add("CheckBox")
$ComputerLabCheckBox.Left = $ComputerLabRadioButton.Right+20 $ComputerLabCheckBox.Top = $ComputerLabRadioButton.Top $ComputerLabCheckBox.Height = 20 $ComputerLabCheckBox.Width = $PrintersGroupBox.Width-$ComputerLabCheckBox.Left-10
$ComputerLabCheckBox.Text = "Computer Lab Printer"
$ComputerLabCheckBox.Enabled = "False"
$ComputerLabCheckBox.OnClick = "CheckComputerLabCheckBox()"

$LibraryPrinterRadioButton = $PrintersGroupBox.Controls.Add("RadioButton")
$LibraryPrinterRadioButton.Left = 20
$LibraryPrinterRadioButton.Top = $ComputerLabRadioButton.Bottom $LibraryPrinterRadioButton.Height = 20 $LibraryPrinterRadioButton.Width = 20 $LibraryPrinterRadioButton.Enabled = "False"
$LibraryPrinterRadioButton.OnClick = "CheckLibraryPrinterRadioButton()"

$LibraryPrinterCheckBox = $PrintersGroupBox.Controls.Add("CheckBox")
$LibraryPrinterCheckBox.Left = $LibraryPrinterRadioButton.Right+20
$LibraryPrinterCheckBox.Top = $LibraryPrinterRadioButton.Top $LibraryPrinterCheckBox.Height = 20 $LibraryPrinterCheckBox.Width = $PrintersGroupBox.Width-$LibraryPrinterCheckBox.Left-10
$LibraryPrinterCheckBox.Text = "Library Printer"
$LibraryPrinterCheckBox.Enabled = "False"
$LibraryPrinterCheckBox.OnClick = "CheckLibraryPrinterCheckBox()"

$OfficePrinterCheckBox = $PrintersGroupBox.Controls.Add("CheckBox")
$OfficePrinterCheckBox.Left = $LibraryPrinterRadioButton.Right+20
$OfficePrinterCheckBox.Top = $LibraryPrinterCheckBox.Bottom $OfficePrinterCheckBox.Height = 20 $OfficePrinterCheckBox.Width = $PrintersGroupBox.Width-$OfficePrinterCheckBox.Left-10
$OfficePrinterCheckBox.Text = "Office Printer"
$OfficePrinterCheckBox.Enabled = "False"

$Exit = $Form.Controls.Add("Button")
$Exit.Cancel = "True"
$Exit.Default = "True"
$Exit.Height = 31
$Exit.Left = 10
$Exit.Text = "Click Here To Close This Window"
$Exit.Top = $PrintersGroupBox.Bottom+10
$Exit.Width = $Form.ClientWidth-20
$Exit.OnClick = "ExitButton()"

$Form.Center
$Form.Show

$nul = GetDefaultPrinter()
EnumPrinters()
$Instructions.Text = "Your printers are listed. Now you can add extra printers and change the default."

While $Form.Visible
$nul = Execute($Form.DoEvents)
Loop
Exit 1

Function GetDefaultPrinter()

;FUNCTION GetDefaultPrinter()
;
;AUTHOR Jochen Polster (jochenDOTpolsterATgmxDOTnet)
;
;VERSION 1.0
;
;VERSION HISTORY 1.0 2004/04/28 Initial release
;
;ACTION Retrieves the current default Printer
;
;SYNTAX GetDefaultPrinter()
;
;PARAMETERS none
;
;REMARKS won't work with 9x OS
;
;RETURNS The current Users default Printer
;
;DEPENDENCIES None !
;
;EXAMPLES $default = GetDefaultPrinter

$GetDefaultPrinter = Join(Split(ReadValue("HKEY_USERS\"+@sid+"\Software\Microsoft\Windows NT\CurrentVersion\Windows","Device"),',',1),'')
$Listbox.additem("Default Printer = "+$GetDefaultPrinter)
;Create blank space between default printer listing and the listing of all printers.
$Listbox.additem("")

EndFunction

Function EnumPrinters()

;Writes all printer to a file.
;$array=printerlist()
;$rc = Open (1, "c:\installedprinters.txt", 5)
;For Each $printer in $array
; $rc = WriteLine (1, $printer + " is installed on: " + @WKSTA + @CRLF)
;Next
;$rc = Close(1)

;DISPLAY LOCAL AND NETWORKED PRINTERS

;shows the printers on your screen.
$array=printerlist()
For Each $printer in $array
$Listbox.additem("Printer = "+$printer)
Next

EndFunction

Function PrinterList(optional $remotepc, optional $displaymode)

;Function:
; PrinterList()
;
;Author:
; Allen Powell (Al_Po)
;
;Version:
; 1.3.1 (2006/05/10 fixed error detecting Print Servers sharing IP Printers)
;
;Revisions
; 1.3.0 (2005/10/21 added options to distinguish local or remote printers)
; 1.2.0 (2005/07/19 optimized code)
; 1.1.0 (2004/08/09 undimmed variable fix)
; 1.0.0 (2003/06/26 Original)
;
;Action:
; Creates an array/list of Printers, and optionally their ports installed, on a local or remote computer.&n bsp;
;
;Syntax:
; Printerlist(optional $remotepc,optional $displaymode)
;
;Parameters:
; $RemotePC: (Optional)
; Remote Computer. If omitted defaults to localpc.
; $DisplayMode (Optional)
; 0 - show all printers, don't display port info (Default)
; 1 - show all printers, display port info
; 2 - show local printers, don't display port info
; 3 - show local printers, display port info
; 4 - show remote printers, don't display port info
; 5 - show remote printers, display port info
;Returns:
; Array of Printers
;
;Dependencies:
; WMI
;
;Example:
;
;break on
;$RC=Setoption("WrapAtEOL","on")
;
;$array=printerlist()
;for each $printer in $array
; ? $printer
;next
;
;Source:
Dim $service,$printer,$printers,$printerdesc[0],$counter,$portname,$printername
If $remotepc=""
$remotepc="."
EndIf
$Service = GetObject("winmgmts:\\" + $remotepc + "\root\cimv2")
If @error
Exit @error
EndIf
$Printers=$service.execquery ('select * from Win32_Printer')
For Each $printer in $printers
ReDim preserve $printerdesc[$counter]
If $displaymode & 1
$portname = "," + $printer.portname
EndIf
Select
Case $displaymode & 4 ;remote printers
If Left($printer.portname,2)="\\" Or Left($printer.name,2)=="\\"
$printername=$printer.name
EndIf
Case $displaymode & 2 ;local printers
If Left($printer.portname,2)<>"\\" And Left($printer.name,2)<>"\\"
$printername=$printer.name
EndIf
Case 1 ; all printers
$printername=$printer.name
EndSelect
If $printername<>""
$printerdesc[$counter]=$printername + $portname
$counter=$counter + 1
$printername=""
EndIf
Next
$PrinterList=$printerdesc

EndFunction

Function ExitButton()
SelectAPrinter()
Quit()
EndFunction

Function AddPrinter($Port,$PrinterType,optional $DriverInf,optional $PrinterDesc,optional $remotepc,optional $Default)
;Function:
; AddPrinter()
;
;Author:
; Allen Powell (Al_Po)
;
;Version:
; 1.0
;
;Action:
; Add IP,LPT, Or COM Printers locally Or remotely. Also, add PrintServer connections locally.
;
;Syntax:
; AddPrinter($Port,$PrinterType,optional $DriverInf,optional $PrinterDesc,optional $remotepc,optional $Default)
;
;Parameters:
; $Port: (required)
; IPAddress (xxx.xxx.xxx.xxx)
; LPT (LPT1:)
; COM (COM1:)
; PrintServer (\\server\printer)
; $PrinterType: (required)
; Descriptor of Printer within INF file
; Note: If using a PrintServer, $PrinterType value is ignored.
; $DriverInf: (Optional)
; Location And name of INF file containing print drivers
; Note: If omitted, attempts to Use default Windows Print Drivers
; $PrinterDesc: (Optional)
; Description of Printer
; Note: If ommitted, $PrinterDesc = PrinterType
; $RemotePC: (Optional)
; PC to install Printer/Drivers on. If omitted defaults to localpc.
; Note: Ignored If $Port is a PrintServer
; $Default: (Optional)
; 0 = Do Not Set as Default Printer (Default)
; 1 = Set as Default Printer
;
;Returns:
; 1 - Successful
; 0 - Failed
; If Failed sets @error to
; -4 - Error connecting to RemotePC
; -3 - Could Not Open/find INF file
; -2 - Could Not find $PrinterType in INF file
; -1 - Unrecognized Port
;
;Dependencies:
; Windows 2000 Professional And up
; rundll32 printui.dll,PrintUIEntry
;
;Examples:
;$=AddPrinter("192.168.1.1","Xerox DocumentCenter 555 PCL6","\\Server\PrinterDrives\Xerox\dc555pcl\dc555x.inf","Xerox Document Centre 55 5 PCL6 in Office",REMOTEPC,1)
;$=Addprinter("LPT1","HP LaserJet 8100 Series PS",,"HP8100 in IS(test)")
;$=AddPrinter("192.168.1.1","HP LaserJet 8100 Series PS",,"HP8100 in IS(test)",,1)
;$=AddPrinter('\\server\printer','_')
;Source:

Dim $quitloop,$IPPrinterKey,$PrinterCMD
$AddPrinter=0
If Not Left($Port,2)="\\"
If $Driverinf=""
$DriverInf="%windir%\inf\ntprint.inf"
EndIf
If Not Exist($DriverInf)
Exit -3
EndIf
Shell '%comspec% /c type "$driverinf">%temp%\addprinter.txt'
If Open(3,"%temp%\addprinter.txt",0)=0
$quitloop=0
While @error=0 And $quitloop=0
$line=ReadLine(3)
$quitloop=InStr($line,$PrinterType)
Loop
$=Close(3)
If $quitloop=0
Exit -2
EndIf
Else
Exit -3
EndIf
EndIf
If $PrinterDesc=""
$PrinterDesc=$PrinterType
EndIf
If $remotepc=""
$remotepc='\\'+ @wksta
Else
If Not Left($remotepc,2)="\\"
$remotepc='\\' + $remotepc
EndIf
EndIf

Select
Case Left($Port,2)="\\"
$printserver=1
$printerdesc=$port
Case InStr($Port,".")
$IPPrinterKey = '$remotepc\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Monitors\Standard TCP/IP Port\Ports\IP_' +$Port
If Not KeyExist($IPPrinterKey)
$=AddKey($IPPrinterKey)
$=WriteValue($IPPrinterKey,"Protocol","00000001","REG_DWORD")
$=WriteValue($IPPrinterKey,"Version","00000001","REG_DWORD")
$=WriteValue($IPPrinterKey,"HostName","", "REG_SZ")
$=WriteValue($IPPrinterKey,"IPAddress","$Port","REG_SZ")
$=WriteValue($IPPrinterKey,"HWAddress","","REG_SZ")
$=WriteValue($IPPrinterKey,"PortNumber","00009100","REG_DWORD")
$=WriteValue($IPPrinterKey,"SNMP Community","public","REG_SZ")
$=WriteValue($IPPrinterKey,"SNMP Enabled","00000001","REG_DWORD")
$=WriteValue($IPPrinterKey,"SNMP Index","00000001","REG_DWORD")
EndIf
$objects=GetObject("winmgmts:{impersonationLevel=impersonate}!"+$remotepc+"\root\cimv2")
If Not @error=0
Exit -4
EndIf
$services=$objects.ExecQuery('Select * from Win32_Service WHERE Name = "Spooler"')
For Each $spooler in $services
$=Execute('$$=$$spooler.stopservice()')
Next
Sleep 1
For Each $spooler in $services
$=Execute('$$=$$spooler.startservice()')
Next
$port='IP_$port'
Case UCase(Left($Port,3))="LPT" Or UCase(Left($Port,3))="COM"
If Not Right($port,1)=":"
$Port=$port+":"
EndIf
If Not Val(Left(Right($port,2),1))>=1
Exit -1
EndIf
Case UCase(Left($Port,4))="FILE"
If Not Right($port,1)=":"
$Port=$port+":"
EndIf
Case 1
Exit -1
EndSelect
If Not $Printserver=1
$printercmd='rundll32 printui.dll,PrintUIEntry /if /b "$printerdesc" /c "$remotepc" ' +
'/f "$driverinf" /r "$port" /m "$Printertype" /z /u '
Shell $printercmd
Else
If Not AddPrinterConnection($port)=0
Exit @error
EndIf
EndIf
If $default=1
If Not SetDefaultPrinter($PrinterDesc)=0
Exit @error
EndIf
EndIf
$AddPrinter=1
EndFunction

Function SelectAPrinter()

If $ModPrintersRadioButton.Checked = "True"
Select
Case ($LibraryPrinterRadioButton.Checked = "False") And ($LibraryPrinterCheckBox.CheckState = -1)
AddPrinter("10.48.55.72,"Lexmark T640","\\s096-a290-01\sch030$\printers\t640.inf","Library Printer",0)
Case ($LibraryPrinterRadioButton.Checked = "True") And ($LibraryPrinterCheckBox.CheckState = -1)
AddPrinter("10.48.55.72","Lexmark T640","\\s096-a290-01\sch030$\printers\t640.inf","Library Printer",1)
Case ($ComputerLabRadioButton.Checked = "False") And ($ComputerLabCheckBox.CheckState = -1)
AddPrinter("10.48.55.71","Lexmark T640","\\s096-a290-01\sch030$\printers\t640.inf","Computer Lab Printer",0)
Case ($ComputerLabRadioButton.Checked = "True") And ($ComputerLabCheckBox.CheckState = -1)
AddPrinter("10.48.55.71","Lexmark T640","\\s096-a290-01\sch030$\printers\t640.inf","Computer Lab Printer",1)
Case $OfficePrinterCheckBox.CheckState = -1
AddPrinter("10.48.55.70","Lexmark T640","\\s096-a290-01\sch030$\printers\t640.inf","Office Printer",0)
EndSelect
EndIf

EndFunction

Function CheckPrinterRadioButtons()

If $DefPrintersRadioButton.Checked = "True"
$ComputerLabRadioButton.Enabled = "True"
$LibraryPrinterRadioButton.Enabled = "True"
$ComputerLabCheckBox.Enabled = "True"
$LibraryPrinterCheckBox.Enabled = "True"
$OfficePrinterCheckBox.Enabled = "True"

$ComputerLabRadioButton.Checked = "True"
Else
$ComputerLabRadioButton.Enabled = "False"
$LibraryPrinterRadioButton.Enabled = "False"
$ComputerLabCheckBox.Enabled = "False"
$LibraryPrinterCheckBox.Enabled = "False"
$OfficePrinterCheckBox.Enabled = "False"

$ComputerLabRadioButton.Checked = "False"
$LibraryPrinterRadioButton.Checked = "False"

$ComputerLabCheckBox.CheckState = 0
$LibraryPrinterCheckBox.CheckState = 0
$OfficePrinterCheckBox.CheckState = 0
EndIf

EndFunction

Function CheckComputerLabRadioButton()

$LibraryPrinterRadioButton.Checked = "False"
$ComputerLabCheckBox.Checked = "True"

EndFunction

Function CheckLibraryPrinterRadioButton()

$ComputerLabRadioButton.Checked = "False"
$LibraryPrinterCheckBox.Checked = "True"

EndFunction

Function CheckComputerLabCheckBox()

If $LibraryPrinterRadioButton.Checked = "True"
$ComputerLabCheckBox.Checked = "True"
EndIf

EndFunction

Function CheckLibraryPrinterCheckBox()

If $ComputerLabRadioButton.Checked = "True"
$LibraryPrinterCheckBox.Checked = "True"
EndIf

EndFunction

_________________________
---
Bishop Grandin Technology Department
'Either we're on time, or we're late'

Top
#168685 - 2006-10-05 11:33 PM Re: Script to setup printers
Witto Offline
MM club member
*****

Registered: 2004-09-29
Posts: 1828
Loc: Belgium
I presume here a quote is missing:
Code:

Select
Case ($LibraryPrinterRadioButton.Checked = "False") AND ($LibraryPrinterCheckBox.CheckState = -1)
AddPrinter("10.48.55.72","Lexmark T640","\\s096-a290-01\sch030$\printers\t640.inf","Library Printer",0)
Case ($LibraryPrinterRadioButton.Checked = "True") AND ($LibraryPrinterCheckBox.CheckState = -1)
AddPrinter("10.48.55.72","Lexmark T640","\\s096-a290-01\sch030$\printers\t640.inf","Library Printer",1)
Case ($ComputerLabRadioButton.Checked = "False") AND ($ComputerLabCheckBox.CheckState = -1)
AddPrinter("10.48.55.71","Lexmark T640","\\s096-a290-01\sch030$\printers\t640.inf","Computer Lab Printer",0)
Case ($ComputerLabRadioButton.Checked = "True") AND ($ComputerLabCheckBox.CheckState = -1)
AddPrinter("10.48.55.71","Lexmark T640","\\s096-a290-01\sch030$\printers\t640.inf","Computer Lab Printer",1)
Case $OfficePrinterCheckBox.CheckState = -1
AddPrinter("10.48.55.70","Lexmark T640","\\s096-a290-01\sch030$\printers\t640.inf","Office Printer",0)
EndSelect


Top
#168686 - 2006-10-06 01:22 AM Re: Script to setup printers
Benny69 Offline
Moderator
*****

Registered: 2003-10-29
Posts: 1036
Loc: Lincoln, Ne
good catch witto
_________________________
Wait don't order yet,... get KiXforms Designer .NET 2.0 (Beta)
KiXforms Designer .NET 2.0 (Beta)

Top
Page 1 of 2 12>


Moderator:  Glenn Barnas, NTDOC, Arend_, Jochen, Radimus, Allen, ShaneEP, Ruud van Velsen, Mart 
Hop to:
Shout Box

Who's Online
1 registered (Allen) and 382 anonymous users online.
Newest Members
gespanntleuchten, DaveatAdvanced, Paulo_Alves, UsTaaa, xxJJxx
17864 Registered Users

Generated in 0.079 seconds in which 0.026 seconds were spent on a total of 13 queries. Zlib compression enabled.

Search the board with:
superb Board Search
or try with google:
Google
Web kixtart.org