Hola Javier
La mejor manera de encontrar las impresoras es buscandola en el Regedit yo utilizo esta funcion para cogerlas de ahi y las guardo en una matriz llamada aPrinters.
Espero te sirva
Function aPrinters()
LOCAL aPrinters:= {}, oReg
LOCAL oKey,oDrv,cBuffer := "", nId:= 0, cName
oReg :=TReg32():New( HKEY_CURRENT_CONFIG,"SystemCurrentControlSetControlPrintPrinters")
cName:=oReg:Get( "Default" )
oReg:Close()
oReg := TReg32():New( HKEY_LOCAL_MACHINE,"SystemCurrentControlSetControlPrintPrinters")
While RegEnumKeys( oReg:nHandle, nId++, @cBuffer ) == 0
oKey :=TReg32():New( HKEY_LOCAL_MACHINE, ;
"SystemCurrentControlSetControlPrintPrinters" + cBuffer )
// Lectura para Win 95 y Win 98
oDrv :=TReg32():New( HKEY_LOCAL_MACHINE, ;
"SystemCurrentControlSetControlPrintEnvironmentsWindows 4.0Drivers" + oKey:Get("Printer Driver") )
//aAdd(aPrinters,{oKey:Get( "Name" ),oKey:Get("Port"),oDrv:Get("Driver"),;
// cName==oKey:Get("Name")})
// Lectura para Win XP
aAdd(aPrinters,{oKey:Get( "Name" ),oKey:Get("Port"),oKey:Get("Printer Driver"),;
cName==oKey:Get("Name")})
oKey:Close()
oDrv:Close()
EndDo
oReg:Close()
return(aPrinters)
Suerte
Martin