Here's the printer manager script I use. You should be able to pick something out of it:
Code:
$=SetOption("ASCII","ON") $=SetOption("WrapAtEOL","ON") $=SetOption("Explicit","ON") Break ON
; vim: ai ts=4 sw=4 fdm=marker fdc=4:

Global $__SERVER_PRINT,$__DOMAIN_PRINT

Global $SYSTEM,$FORMS,$SPOOLERWMI,$ERROR
Global $TRUE,$FALSE

GLOBAL $oWinNT

$__DOMAIN_PRINT="***YOUR DOMAIN HERE***"
$__SERVER_PRINT="***YOUR PRINT SERVER HERE***"

$TRUE=Not 0
$FALSE=Not $TRUE

; Initialise KiXtart system
$SYSTEM=CreateObject("KiXtart.System")
If Not (9=VarType($SYSTEM)) $ERROR=@ERROR funError("Could not create KiXtart system - perhaps KiXforms is not registered?") Exit $ERROR EndIf
; Create a collection to index the forms.
$FORMS=$SYSTEM.Collection()
; Make Form
udfMakeForm("frmMain")
If @ERROR Exit @ERROR EndIf

$oWinNT=GetObject("WinNT://"+$__DOMAIN_PRINT+"/"+$__SERVER_PRINT+",computer")
If @ERROR $=funError("Cannot get printer list from "+$__DOMAIN_PRINT+"\"+$__SERVER_PRINT+@CRLF+"["+fnCOMErr(@ERROR)+"] "+@SERROR) Exit @ERROR EndIf

$FORMS.Item("frmPopup").Controls("txtPopMsg").Text="Getting list of printers - Please Wait"
$FORMS.Item("frmMain").Show
$FORMS.Item("frmPopup").ShowModal
udfLoadPrinters($FORMS.Item("frmMain").Controls("lvPtrConnected"),$FORMS.Item("frmMain").Controls("lvPtrAvailable"))
If @ERROR Exit @ERROR EndIf
$FORMS.Item("frmPopup").Hide

While $SYSTEM.ActiveForm.Visible
$=Execute($SYSTEM.ActiveForm.DoEvents())
Loop

Sleep 10

Exit 0
; Insert value *before* array element iPosition - No position=append
Function funInsertArrayElement($vaArray,$vValue,Optional $iPosition) ; {{{
Dim $iElements,$iNewElements,$iIndex

$funInsertArrayElement=$vaArray

$iElements=Ubound($vaArray)

If Not VarType($iPosition) $iPosition=$iElements+1 EndIf

If $iPosition<=$iElements $iNewElements=$iElements+1 Else $iNewElements=$iPosition EndIf

Redim Preserve $funInsertArrayElement[$iNewElements]

If $iPosition<=$iElements
For $iIndex = $iElements To $iPosition Step -1
$funInsertArrayElement[$iIndex+1]=$funInsertArrayElement[$iIndex]
Next
EndIf
$funInsertArrayElement[$iPosition]=$vValue
Exit 0
EndFunction ; }}}
; Delete value *at* array element iPosition - No position=delete last element
Function funDeleteArrayElement($vaArray,Optional $iPosition) ; {{{
Dim $iElements,$iIndex
$iElements=Ubound($vaArray)
If $iElements < 0 Exit 1629 EndIf
If Not VarType($iPosition) $iPosition=$iElements EndIf
$iPosition=CInt($iPosition)
If $iPosition < 0 OR $iPosition >$iElements $funDeleteArrayElement=$vaArray Exit 1734 EndIf
; Deleting last element - return null array
If Not $iElements Exit 0 EndIf
$funDeleteArrayElement=$vaArray
For $iIndex=$iPosition To $iElements-1
$funDeleteArrayElement[$iIndex]=$funDeleteArrayElement[$iIndex+1]
Next
Redim Preserve $funDeleteArrayElement[$iElements-1]
Exit 0
EndFunction ; }}}
; Remove repeated characters
Function udfPack($sString,Optional $sDelimiter) ; {{{
Dim $sElement
$udfPack=CStr("")
If Not VarType($sDelimiter) $sDelimiter=" " EndIf
For Each $sElement In Split($sString,$sDelimiter)
If $sElement $udfPack=$udfPack+$sDelimiter+$sElement EndIf
Next
$udfPack=SubStr($udfPack,Len($sDelimiter)+1)
Exit 0
EndFunction ; }}}
Function funError($sMessage, Optional $sTitle) ; {{{
If Not $sTitle $sTitle="Printer Management Error" EndIf
$funError=MessageBox($sMessage,$sTitle,0+48)
Exit 0
EndFunction ; }}}
Function funDispatcher($ofrmMain) ; {{{
Dim $oMonitor
; Force reset error flag
$oMonitor=Execute("Exit 0")
$oMonitor=$ofrmMain.sStatus
While @ERROR=0
$funDispatcher=$oMonitor.value
$oMonitor.value=""
If $funDispatcher Exit 0 EndIf
Sleep 0.1
$oMonitor=$ofrmMain.sStatus
Loop
Exit 1
EndFunction ; }}}
Function udfOnLostFocus($sControl) ; {{{
Dim $oControl $oControl=$SYSTEM.ActiveForm.Controls($sControl)
Select
Case "Unhandled"
"Unhandled lost focus on '"+$oControl.Name+"'"+@CRLF
EndSelect
EndFunction ; }}}
Function udfOnClick($sControl) ; {{{
Dim $oControl $oControl=$SYSTEM.ActiveForm.Controls($sControl)
Dim $oSelectedItem
Select
Case $oControl.Name="btnRefresh"
$FORMS.Item("frmPopup").Controls("txtPopMsg").Text="Getting list of printers - Please Wait"
$FORMS.Item("frmPopup").ShowModal
udfLoadPrinters($FORMS.Item("frmMain").Controls("lvPtrConnected"),$FORMS.Item("frmMain").Controls("lvPtrAvailable"))
If @ERROR Quit @ERROR EndIf
$FORMS.Item("frmPopup").Hide
Case $oControl.Name="btnExit"
$SYSTEM=0
Quit 0
Case $oControl.Name="btnSetDefault"
$oSelectedItem=$FORMS.Item("frmMain").Controls("lvPtrConnected").FocusedItem
$FORMS.Item("frmPopup").Controls("txtPopMsg").Text="Setting '"+$oSelectedItem.Subitems(0).Text+"' as default"+@CRLF+"Please wait"
$FORMS.Item("frmPopup").ShowModal
"Default requested 0 : " $oSelectedItem.SubItems(0).Text ?
"Default requested 1 : " $oSelectedItem.SubItems(1).Text ?
"Default requested 2 : " $oSelectedItem.SubItems(2).Text ?
"Default requested 3 : " $oSelectedItem.SubItems(3).Text ?
If SetDefaultPrinter($oSelectedItem.SubItems(2).Text)
If SetDefaultPrinter($oSelectedItem.SubItems(2).Text+": "+$oSelectedItem.SubItems(1).Text)
$FORMS.Item("frmPopup").Controls("txtPopMsg").Text="Could not set printer '"+$oSelectedItem.Subitems(0).Text+"' as default"+@CRLF
+"Error ["+@ERROR+"] "+@SERROR
Sleep 5
EndIf
EndIf
$FORMS.Item("frmPopup").Hide
udfShowDefault()
udfTickDefault()
Case $oControl.Name="btnImage"
$FORMS.Item("frmMain").Controls("lvPtrConnected").Items(0).ImageIndex=1+$FORMS.Item("frmMain").Controls("lvPtrConnected").Items(0).ImageIndex
$FORMS.Item("frmMain").Controls("lvPtrConnected").Items(0).SubItems(1).Text=$FORMS.Item("frmMain").Controls("lvPtrConnected").Items(0).ImageIndex
Case "Unhandled"
"Unhandled click on '"+$oControl.Name+"'"+@CRLF
EndSelect
EndFunction ; }}}
Function udfOnDoubleClick($sControl) ; {{{
Dim $oControl $oControl=$SYSTEM.ActiveForm.Controls($sControl)
Dim $oNewItem
Dim $oSelectedItem
Select
Case $oControl.Name="lvPtrConnected"
$oSelectedItem=$oControl.FocusedItem
If VarType($oSelectedItem) AND $oSelectedItem.Selected
"Selected Item=" $oSelectedItem.Subitems(0).Text @CRLF
$FORMS.Item("frmPopup").Controls("txtPopMsg").Text="Trying to disconnect printer '"+$oSelectedItem.Subitems(0).Text+"'"+@CRLF+"Please wait"
$FORMS.Item("frmPopup").ShowModal
If DelPrinterConnection($oSelectedItem.SubItems(2).Text)
$FORMS.Item("frmPopup").Controls("txtPopMsg").Text="Could not disconnect printer '"+$oSelectedItem.Subitems(0).Text+"'"+@CRLF
+"Error ["+@ERROR+"] "+@SERROR
Sleep 5
Else
$oNewItem=$FORMS.Item("frmMain").Controls("lvPtrAvailable").Items.Add
$oNewItem.SubItems(0).Text=$oSelectedItem.SubItems(0).Text
$oNewItem.SubItems(1).Text=$oSelectedItem.SubItems(1).Text
$oNewItem.SubItems(2).Text=$oSelectedItem.SubItems(2).Text
$oControl.Items.Remove($oSelectedItem.Index)
$FORMS.Item("frmMain").Controls("lvPtrAvailable").Sorted=$FALSE
$FORMS.Item("frmMain").Controls("lvPtrAvailable").Sorted=$TRUE
udfTickDefault()
udfShowDefault()
EndIf
$FORMS.Item("frmPopup").Hide
EndIf
Case $oControl.Name="lvPtrAvailable"
$oSelectedItem=$oControl.FocusedItem
If VarType($oSelectedItem) AND $oSelectedItem.Selected
"Selected Item=" $oSelectedItem.Subitems(0).Text @CRLF
$FORMS.Item("frmPopup").Controls("txtPopMsg").Text="Trying to connect printer '"+$oSelectedItem.Subitems(0).Text+"'"+@CRLF+"Please wait"
$FORMS.Item("frmPopup").ShowModal
If AddPrinterConnection($oSelectedItem.SubItems(2).Text)
$FORMS.Item("frmPopup").Controls("txtPopMsg").Text="Could not disconnect printer '"+$oSelectedItem.Subitems(0).Text+"'"+@CRLF
+"Error ["+@ERROR+"] "+@SERROR
Sleep 5
Else
$oNewItem=$FORMS.Item("frmMain").Controls("lvPtrConnected").Items.Add
$oNewItem.SubItems(0).Text=$oSelectedItem.SubItems(0).Text
$oNewItem.SubItems(1).Text=$oSelectedItem.SubItems(1).Text
$oNewItem.SubItems(2).Text=$oSelectedItem.SubItems(2).Text
$oControl.Items.Remove($oSelectedItem.Index)
$FORMS.Item("frmMain").Controls("lvPtrConnected").Sorted=$FALSE
$FORMS.Item("frmMain").Controls("lvPtrConnected").Sorted=$TRUE
udfTickDefault()
udfShowDefault()
EndIf
$FORMS.Item("frmPopup").Hide
EndIf
Case "Unhandled"
"Unhandled double click on '"+$oControl.Name+"'"+@CRLF
EndSelect
EndFunction ; }}}
Function udfMakeForm($n) ; {{{
Dim $ERROR,$oControl,$f,$,$i,$oToolTip
Select
Case $n="frmMain"
$oToolTip=$SYSTEM.ToolTip()

$f=$SYSTEM.Form()
If Not (9=VarType($f)) $ERROR=@ERROR funError("Could not create new form - perhaps KiXforms is not registered?") Exit $ERROR EndIf
$f.Name=$n
$FORMS.Add($f,$f.Name)
$f.Caption="MSV-SGB Printer Manager"
$f.Width=690
$f.Height=335
$f.Center

$oControl=$f.Controls.Label("Your printers",10,10,260,15)

$oControl=$f.Controls.Listview("lvPtrConnected",10,30,335,235)
$oControl.Name="lvPtrConnected"
$oControl.MultiSelect=$FALSE
$oControl.View=1
$oControl.SmallImageList=$SYSTEM.BuiltinImageList
$oControl.Sorted=$TRUE
$oControl.OnDoubleClick="udfOnDoubleClick('"+$oControl.Name+"')"
$oControl.OnClick="udfShowDefault('"+$oControl.Name+"')"
$oToolTip.SetToolTip($oControl,"Double click on a printer to disconnect it")
$=$oControl.Columns.Add("Name",130,0)
$=$oControl.Columns.Add("Description",200,0)
$=$oControl.Columns.Add("Share Name",0,0)
$=$oControl.Columns.Add("Print Device",0,0)

$oControl=$f.Controls.Label("Available printers",355,10,260,15)

$oControl=$f.Controls.Listview("lvPtrAvailable",355,30,315,235)
$oControl.Name="lvPtrAvailable"
$oControl.Sorted=$TRUE
$oControl.OnDoubleClick="udfOnDoubleClick('"+$oControl.Name+"')"
$oToolTip.SetToolTip($oControl,"Double click on a printer to connect it")
$=$oControl.Columns.Add("Name",110,0)
$=$oControl.Columns.Add("Description",200,0)
$=$oControl.Columns.Add("Share Name",0,0)
$=$oControl.Columns.Add("Print Device",0,0)

$oControl=$f.Controls.Button("Set As Default",20,270,100,25)
$oControl.Name="btnSetDefault"
$oControl.OnClick="udfOnClick('"+$oControl.Name+"')"
$oControl.Hide()

$oControl=$f.Controls.Button("Refresh List",545,270,75,25)
$oControl.Name="btnRefresh"
$oControl.OnClick="udfOnClick('"+$oControl.Name+"')"

$oControl=$f.Controls.Button("Exit",625,270,45,25)
$oControl.Name="btnExit"
$oControl.OnClick="udfOnClick('"+$oControl.Name+"')"

$f=$SYSTEM.Form($f)
$FORMS.Add($f,"frmPopup")
$f.Caption="Message"
$f.ControlBox=$FALSE
$f.FormBorderStyle=5
$f.Width=300
$f.Height=150

$oControl=$f.Controls.Label("Message Text",5,5,290,140)
$oControl.Name="txtPopMsg"
$oControl.ContentAlignment=32
EndSelect
Exit 0
EndFunction ; }}}
Function udfLoadPrinters($oPtrConnected,$oPtrAvailable) ; {{{
Dim $oPrintQueue,$oNewItem,$asConnected[3],$oNetwork,$oPrinters,$sPrinterInfo
Dim $i,$asTemp

; Delete all existing items from listview
While $oPtrConnected.Items.Count $oPtrConnected.Items.Remove(0) Loop
While $oPtrAvailable.Items.Count $oPtrAvailable.Items.Remove(0) Loop

; Cache existing connections
$oNetwork=CreateObject("WScript.Network")
If Not 9=VarType($oNetwork) funError("Cannot create network object"+@CRLF+"["+@ERROR+"] "+@SERROR+@CRLF) Exit @ERROR EndIf
$oPrinters=$oNetwork.EnumPrinterConnections()
For $i=0 To $oPrinters.Count-1 Step 2
$asTemp=$asConnected[0]
Redim Preserve $asTemp[Ubound($asTemp)+1]
$asTemp[UBound($asTemp)]=$oPrinters.Item($i+1)
If InStr($asTemp[UBound($asTemp)],":") $asTemp[UBound($asTemp)]=Left($asTemp[UBound($asTemp)],InStr($asTemp[UBound($asTemp)],":")-1) EndIf
$asConnected[0]=$asTemp
$asTemp=$asConnected[1]
Redim Preserve $asTemp[Ubound($asTemp)+1]
$asTemp[UBound($asTemp)]=$oPrinters.Item($i)
$asConnected[1]=$asTemp
Next

$oWinNT.Filter = "PrintQueue",""

; Add all printers - already mapped printers to "connected" otherwise to "available"
For Each $oPrintQueue In $oWinNT
$i=AScan($asConnected[0],$oPrintQueue.PrinterPath)
If 1+$i
$oNewItem=$oPtrConnected.Items.Add
Else
$oNewItem=$oPtrAvailable.Items.Add
EndIf
$oNewItem.SubItems(0).Text=$oPrintQueue.Name
$oNewItem.SubItems(1).Text=$oPrintQueue.Description
$oNewItem.SubItems(2).Text=$oPrintQueue.PrinterPath
$oNewItem.SubItems(3).Text=$oPrintQueue.PrintDevices
Next

udfTickDefault()
udfShowDefault()

Exit 0
EndFunction ; }}}
Function udfTickDefault() ; {{{
Dim $sDefaultPath,$oItem
$sDefaultPath=Split(ReadValue("HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows","Device"),",")[0]
For Each $oItem in $FORMS.Item("frmMain").Controls("lvPtrConnected").Items
If $oItem.SubItems(2).Text=$sDefaultPath OR $oItem.SubItems(2).Text+": "+$oItem.SubItems(1).Text=$sDefaultPath
$oItem.ImageIndex=10
Else
$oItem.ImageIndex=66
EndIf
Next
EndFunction ; }}}
Function udfShowDefault(Optional $x) ; {{{
Dim $oControl $oControl=$SYSTEM.ActiveForm.Controls("lvPtrConnected")
Dim $oSelectedItem $oSelectedItem=$oControl.FocusedItem
If VarType($oSelectedItem) AND $oSelectedItem.Selected
If $oSelectedItem.ImageIndex=10
$FORMS.Item("frmMain").Controls("btnSetDefault").Hide()
Else
$FORMS.Item("frmMain").Controls("btnSetDefault").Show()
EndIf
EndIf
EndFunction ; }}}
Function fnCOMErr($lErr) ; {{{
If $lErr<0 $lErr=VAL("&"+Right(DecToHex($lErr),4)) EndIf
$fnCOMErr=$lErr
Exit $lErr
Endfunction ; }}}