> nprinter = aprinters(aprinterid) > for i=1 to nPrinters > if 'labelprinter'$lowe( aprinterid[i,1] ) > DECLARE INTEGER ShellExecute IN shell32.dll ; > INTEGER hndWin, ; > STRING cAction, ; > STRING cFileName, ; > STRING cParams, ; > STRING cDir, ; > INTEGER nShowWin > set printer to name (aprinterid[i,1]) > ShellExecute(0, "print", cPDFFile , "", "", 1) > exit > endif > endforAndrus, setting VFP's printer won't change the printer used by the application that prints PDF documents in your system. You must set the default printer in your system, not in VFP.
DECLARE INTEGER SetDefaultPrinter IN winspool.drv STRING PrinterName SetDefaultPrinter(aprinterid[i,1])Probably you should also consider getting the current default printer previously, to restore it later, so that your users won't get confused.
DECLARE INTEGER GetDefaultPrinter IN winspool.drv STRING @ PrinterName, INTEGER @ NameLength LOCAL DefaultPrinter AS String LOCAL NameLength AS Integer m.NameLength = 0 GetDefaultPrinter(NULL, @m.NameLength) m.DefaultPrinter = SPACE(m.NameLength + 1) GetDefaultPrinter(@m.DefaultPrinter, @m.NameLength) m.DefaultPrinter = LEFT(m.DefaultPrinter, m.NameLength - 1)