Retreive the VB Object "printer" Corresponding to the Default Printer
Posted
by Andri Masson
on February 5th, 2004
'MS Windows API Function Prototypes
private Declare Function GetProfileString Lib "kernel32" Alias _
"GetProfileStringA" (byval lpAppName as string, _
byval lpKeyName as string, byval lpDefault as string, _
byval lpReturnedString as string, _
byval nSize as Long) as Long
'---------------------------------------------------------------
' Retreive the vb object "printer" corresponding to the window's
' default printer.
'---------------------------------------------------------------
public Function GetDefaultPrinter() as Printer
Dim strBuffer as string * 254
Dim iRetValue as Long
Dim strDefaultPrinterInfo as string
Dim tblDefaultPrinterInfo() as string
Dim objPrinter as Printer
' Retreive current default printer information
iRetValue = GetProfileString("windows", "device", ",,,", _
strBuffer, 254)
strDefaultPrinterInfo = Left(strBuffer, InStr(strBuffer, Chr(0)) - 1)
tblDefaultPrinterInfo = Split(strDefaultPrinterInfo, ",")
for Each objPrinter In Printers
If objPrinter.DeviceName = tblDefaultPrinterInfo(0) then
' Default printer found !
Exit for
End If
next
' If not found, return nothing
If objPrinter.DeviceName <> tblDefaultPrinterInfo(0) then
set objPrinter = nothing
End If
set GetDefaultPrinter = objPrinter
End Function
Now to test the routine, place the following code into a Form_Load routine :
private Sub Form_Load()
Dim objPrinter as Printer
set objPrinter = GetDefaultPrinter()
MsgBox "Default printer is: " + objPrinter.DeviceName
MsgBox "Driver name is: " + objPrinter.DriverName
MsgBox "Port is: " + objPrinter.Port
set objPrinter = nothing
End
End Sub

Comments
Printer status
Posted by Legacy on 08/19/2003 12:00amOriginally posted by: MSCHMITT
Hi
How can i get the network printer status under VB ?
All possible problems with it (Out of order,Need paper...).
Thanks
ReplyHow to change the default printer
Posted by Legacy on 05/20/2003 12:00amOriginally posted by: K.K.Birnale
Hi
Getting the default printer is OK.But when already a printer is installed and working as a default to the machine,in that case how to change the default printer through coding
If there is any solution i may be let to the same please
ReplyK.K.Birnale
Printer Type
Posted by Legacy on 01/22/2003 12:00amOriginally posted by: PBS
Is it posible to determine the default printer type
Replye.g.
is the printer a laser or Dot matrix printer
?? Is it possible to find the number of pages printed in a printer
Posted by Legacy on 12/13/2002 12:00amOriginally posted by: D. Ramesh babu
if any time is given, is it possible to find out the number of pages printed by the printer ?
ReplyThanks
Posted by Legacy on 07/24/2002 12:00amOriginally posted by: chew
This code worked just fine. Might want to add a little bit of error checking though if object is Null when returned. Otherwise, fantastic.
ReplyHOW TO CHANGE THE DEFAULT PRINTER?
Posted by Legacy on 07/04/2002 12:00amOriginally posted by: T.A.VENKAT
Hi
Getting the default printer is OK.But when already a printer is installed and working as a default to the machine,in that case how to change the default printer through coding
If there is any solution i may be let to the same please
t.a.venkat
ReplyRetreive the vb object "printer" corresponding to the Default Printer
Posted by Legacy on 04/16/2002 12:00amOriginally posted by: Evans Okosodo
This code woked! Thanks to the donor and earthweb.com
ReplyDefault printer
Posted by Legacy on 01/05/2002 12:00amOriginally posted by: Ravi
This example much easier to get the default printer.
Reply
Capture Printer Queue from Vb
Posted by Legacy on 11/21/2001 12:00amOriginally posted by: Samanatha Wijeratne
capture printer data Queue from VB . and get them into
data file.
ReplyGood One
Posted by Legacy on 11/07/2001 12:00amOriginally posted by: Suresh P
Hi masson,
this is good one. congrats
I have a doubt. I have sent a page to printer. How will i know the print status of the page ?
(where the page is lying now ? is it in the print queue of the printer or page is printing or print job is over...... )
ReplySuresh
Loading, Please Wait ...