In the past week or so I answered the question of “how to read or set the default printer from a SalesLogix script” to two different business partners. I’m putting it here so I can avoid the need to keep typing this out.
The most common way to do this you’ll find is via API calls to GetProfileString/WriteProfileString (as Thijs posted). However, this won’t help you in v6 as you cannot make calls to external DLLs from VBScript. An easy way to do this from VBScript is to use the Shell object to read/set the values directly in the registry. This approach is far easier than using the WMI obejcts and makes for much cleaner code IMO. This should also work fine in SalesLogix 5 or prior scripts – or legacy in v6 – making your code more “upgrade resistant”.
Dim objShell Dim sPath Dim sPrinter Dim sPort Dim sDriver Dim ar_PrnInfo Set objShell = CreateObject("WScript.Shell") sPath = "HKCUSoftwareMicrosoftWindows NTCurrentVersionWindowsDevice" ar_PrnInfo = Split(objShell.RegRead(sPath), ",") If IsArray(ar_PrnInfo) Then sPrinter = ar_PrnInfo(0) sPort = ar_PrnInfo(2) sDriver = ar_PrnInfo(1) End If MsgBox "Default Printer: " & sPrinter & vbCrLf & _ "Printer Port: " & sPort & vbCrLf & _ "Printer Driver: " & sDriver
It also works fine to write it back out this way (to set the default). You essentially just need to write back to that same location using “Printer Name, driver, port”. So it would look something like this:
Set objShell = CreateObject("WScript.Shell") sPath = "HKEY_CURRENT_USERSoftwareMicrosoftWindows NTCurrentVersionWindowsDevice" objShell.RegWrite sPath, "HP DeskJet 895Cse,winspool,Ne00:"
Get the idea?