yo haria asi:
#Include "FiveWin.ch"
MEMVAR cOldPrinter
STATIC lSalida := .F.
FUNCTION Main()
LOCAL oWnd
LOCAL hPrinterDC
PRIVATE cOldPrinter
// Guarde tu impresora DEFAULT antes de cambiar de impresora, ok?
// cOldPrinter := "Broadgun pdfMachine" // DEFAULT PRINTER siempre.
// Captura o DC da impressora selecionada
hPrinterDC := PrnGetName()
cOldPrinter := hPrinterDC
DEFINE WINDOW oWnd TITLE "PrinterSetup" FROM 0, 0 TO 330, 800 PIXEL
@ 20, 20 BUTTON "1.- PrinterSetup" OF oWnd SIZE 300, 32 PIXEL ;
ACTION SelectPrinter( oWnd )
@ 65, 20 BUTTON "2.- Preview" OF oWnd SIZE 300, 32 PIXEL ;
ACTION ShowPreview()
@ 110, 20 BUTTON "3.- PrinterSetup otra vez" OF oWnd ;
SIZE 300, 32 PIXEL ACTION SelectPrinter( oWnd )
@ 165, 20 SAY "FiveWin : " + FWVERSION OF oWnd ;
SIZE 740, 24 PIXEL
@ 195, 20 SAY "Harbour : " + Version() OF oWnd ;
SIZE 740, 24 PIXEL
@ 225, 20 SAY "Enlazador: BCC77 6.97 " ;
OF oWnd SIZE 740, 24 PIXEL
@ 160, 450 BUTTON "4.- Salida" OF oWnd SIZE 100, 32 PIXEL ;
ACTION( lSalida := .T., oWnd:End() )
ACTIVATE WINDOW oWnd CENTERED VALID( lSalida )
// Return to master.
SetPrintDefault( cOldPrinter )
RETURN NIL
STATIC FUNCTION SelectPrinter( oWnd )
LOCAL hDC := PrinterSetup()
IF hDC != 0
oWnd:cTitle := PrnGetName()
DeleteDC( hDC )
ENDIF
SetPrintDefault( PrnGetName() )
RETURN NIL
STATIC FUNCTION ShowPreview()
LOCAL oPrn
PRINT oPrn NAME "PrinterSetup test" PREVIEW MODAL
PAGE
oPrn:Say( 100, 100, "PrinterSetup test" )
ENDPAGE
ENDPRINT
RETURN NIL
// FIN / ENDRegards, saludos.