Retrieving/Setting the default printer from VBScript

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?

ABOUT THE AUTHOR

Ryan Farley

Ryan Farley is the Director of Development for Customer FX and creator of slxdeveloper.com. He's been blogging regularly about SalesLogix, now Infor CRM, since 2001 and believes in sharing with the community. His new passion for CRM is Creatio, formerly bpm'online. He loves C#, Javascript, web development, open source, and Linux. He also loves his hobby as an amateur filmmaker.

2 Comments

  1. Great scriptin’ 😉

    Reply
  2. Thank you! It was the only script that worked!

    Reply

Submit a Comment

Your email address will not be published. Required fields are marked *

Subscribe To Our Newsletter

Join our mailing list to receive the latest Infor CRM (Saleslogix) and Creatio (bpm'online) news and product updates!

You have Successfully Subscribed!