$RC=setoption("NoVarsinstrings","on")
$RC=setoption("NoMacrosinstrings","on")
$System = CreateObject("Kixtart.System")
SelectPrinterForm()
Function SelectPrinterForm()
$defprinter = Split(readvalue("HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows","Device"),",")[0]
$objWMIService = GetObject("winmgmts:\\"+@WkSta+"\root\CIMV2")
$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_Printer", "WQL")
$x=0
for each $colitem in $colitems
$x=$x+1
next
Global $printers[$x-1]
$x=0
for each $colitem in $colitems
$printers[$x]=$colitem.Name
$x=$x+1
next
$PrinterSelectGroupHeight = (UBound($printers)+1)*30+40
$PrinterSelectFormHeight = (UBound($printers)+1)*30+170
$PrinterSelectform = $System.Form()
$PrinterSelectform.Width = 400
$PrinterSelectform.Height = $PrinterSelectFormHeight
$PrinterSelectform.Text = "Print"
$PrinterSelectTabs = $PrinterSelectForm.Controls.Add("TabControl")
$PrinterSelectTabs.Height = $PrinterSelectForm.Height-50
$PrinterSelectTabs.Width = $PrinterSelectForm.Width-20
$PrinterSelectTabs.Center()
$PrinterSelectTab = $PrinterSelectTabs.TabPages.Add("General")
$PrinterSelectGroup = $PrinterSelectTab.Controls.Add("GroupBox")
$PrinterSelectGroup.Text = "Select Printer"
$PrinterSelectGroup.Height = $PrinterSelectGroupHeight
$PrinterSelectGroup.Width = $PrinterSelectTabs.Width-30
$PrinterSelectGroup.Top = 10
$PrinterSelectGroup.Left = 10
$top = 0
For $x=1 to UBound($printers)+1
$null = Execute('$printer'+$x+'=$PrinterSelectGroup.Controls.Add("ToolButton")')
$null = Execute('$printer'+$x+'.Text=$printers[$x-1]')
$null = Execute('$printer'+$x+'.BackColor="TransParent"')
$null = Execute('$printer'+$x+'.FlatStyle=0')
$null = Execute('$printer'+$x+'.BorderStyle=0')
$null = Execute('$printer'+$x+'.Width=300')
$null = Execute('$printer'+$x+'.Height=30')
$null = Execute('$printer'+$x+'.Cursor=16')
$null = Execute('$printer'+$x+'.Top=20+$top')
$null = Execute('$top=$printer'+$x+'.Top+10')
$null = Execute('$printer'+$x+'.Left=$PrinterSelectGroup.Left+20')
$null = Execute('$printer'+$x+'.OnClick="SetSelectedPrinter($printer'+$x+')"')
if $printers[$x-1]=$defprinter
$null = Execute('$printer'+$x+'.Icon=@ScriptDir+"\printer_def.ico"')
$null = Execute('$printer'+$x+'.BackColor="silver"')
$null = Execute('$printer'+$x+'.Pushed=1')
$null = Execute('$selectedprinter=$printer'+$x)
else
$null = Execute('$printer'+$x+'.Icon=@ScriptDir+"\printer.ico"')
endif
Next
$printbutton = $PrinterSelectTab.Controls.Add("ToolButton")
$printbutton.Text = "Print"
$printbutton.Top = $PrinterSelectGroup.Bottom+10
$printbutton.Left = $PrinterSelectGroup.Left+80
$printbutton.OnClick = "PrintHoursReport()"
$printCancelbutton = $PrinterSelectTab.Controls.Add("ToolButton")
$printCancelbutton.Text = "Cancel"
$printCancelbutton.Top = $PrinterSelectGroup.Bottom+10
$printCancelbutton.Left = $PrinterSelectGroup.Right-80-$printCancelbutton.Width
$printCancelbutton.OnClick = "$$PrinterSelectform.Hide()"
$PrinterSelectform.Center()
$PrinterSelectform.Show()
While $PrinterSelectform.Visible
$Nul = Execute($PrinterSelectform.DoEvents)
Loop
Exit 0
EndFunction
Function SetSelectedPrinter($p)
For $x=1 to UBound($printers)+1
$null = Execute('$printer'+$x+'.BackColor=""')
Next
$selectedprinter = $p
$selectedPrinter.BackColor = "silver"
EndFunction
Function PrintHoursReport()
$testfile = @ScriptDir+"\test-print-file.txt"
if not exist($testfile)
$testfh = FreeFileHandle()
$null = Open($testfh,$testfile,5)
$null = WriteLine($testfh,"This is simply a test of the print form.")
$null = Close($testfh)
endif
$prntr = $selectedprinter.text
$null = SetDefaultPrinter($prntr)
Sleep 1
$objShellApp = CreateObject("Shell.Application")
$objShellApp.ShellExecute($testfile,"","","print",0)
Sleep 1
$null = SetDefaultPrinter($defprinter)
$PrinterSelectform.Hide()
EndFunction