*wim_printerstatus strComputer = "." CREATE CURSOR tprinstatus (name c(80),location c(20),status c(20)) objWMIService = GetObject("winmgmts:" + "{impersonationLevel=impersonate}!\\" + strComputer + "\root\cimv2") colInstalledPrinters = objWMIService.ExecQuery ("SELECT * FROM Win32_Printer") For Each objPrinter in colInstalledPrinters m.name= objPrinter.Name m.Location=TRANSFORM(objPrinter.Location) m.status='' DO Case &&objPrinter.PrinterStatus Case objPrinter.PrinterStatus=1 m.status="Other" Case objPrinter.PrinterStatus=2 m.status="Unknown" Case objPrinter.PrinterStatus=3 m.status="Idle" Case objPrinter.PrinterStatus=4 m.status="Printing" Case objPrinter.PrinterStatus=5 m.status="Warmup" Endcase INSERT INTO tprinstatus FROM memvar NEXT SELECT tprinstatus browsethen there is the code I wrote to return the default printer
*wmi_defaultprinter WAIT WINDOW NOWAIT "Determining Default Printer . . . " strComputer = "." objWMIService = Getobject("winmgmts:" + "{impersonationLevel=impersonate}!\\" + strComputer + "\root\cimv2") colInstalledPrinters = objWMIService.ExecQuery ("Select * From Win32_Printer Where Default = TRUE") retvar='' For Each objPrinter In colInstalledPrinters IF TYPE('objprinter.name')<>'U' retvar = objPrinter.Name endif ENDFOR RETURN (retvar)And finally I used some WSH code to set the default printer. Here I'm just grabbing the first printer. You will need to iterate through the printers array to find the one you want.
APRINTERS(laprinters) LCPRINTER=LAPRINTERS(1,1) oNet = CREATEOBJECT("WScript.Network") oNet.SetDefaultPrinter(lcprinter)