Power Builder - Seleccionar Impresora en tiempo de ejecución

 
Vista:

Seleccionar Impresora en tiempo de ejecución

Publicado por José (169 intervenciones) el 13/12/2002 19:10:24
Necesito desde una aplicación imprimir al mismo tiempo en dos impresoras diferentes, sin que haya intervención del usuario para elegir en que impresora enviará cada reporte.

Desde ya gracias por la ayuda
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Seleccionar Impresora en tiempo de ejecución

Publicado por Jorge Luis (91 intervenciones) el 13/12/2002 22:05:15
saludos.
te lo envio por partes
Parte 1
puedes usar el RegistrySet para ubicar el nuevo Device (Impresora default) lo importante es que debes saber donde está ubicado este en el Registry y debes ingresar el nombre exacto de la impresora que deseas ubicarla como default y asi imprimir lo que deseas y luego volverlo a la normalidad a continuación un ejemplo muy simple:
integer nret
string ls_default, ls_driver, ls_port, ls_printer, ls_key, ls_config,ls_valores
string nulo
setnull(nulo)
string as_impresora
as_impresora = "Epson LX-300" // nombre de nueva impresora
if isnull(as_impresora) then return // debe ingresar el nombre exacto de la impresora que
// necesitamos ubicarla como default
environment env
GetEnvironment(env)
if env.OSType = WindowsNT! then // atención que esto es para NT, para
//otros tipos, debes verificar como es la ruta en el Registry
//Obtener la impresora actual comp predeterminada
RegistryGet("HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows", "Device", ls_default)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Parte 2

Publicado por Jorge Luis (91 intervenciones) el 13/12/2002 22:10:48
parte 2
ls_default=mid(ls_default,1,pos(ls_default,",") -1) //impresora instalada como predeterminada
if upper(ls_default) = upper(as_impresora) then
//si ya esta como predeterminada retorna
return
end if
//Obtiene los valores de la impresora a poner
RegistryGet("HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Devices", as_impresora, ls_valores)
// Ubica en el Regedit la nueva impresora default
nret = RegistrySet("HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows", "Device", as_impresora+","+ls_valores)
if nret <> 1 then
Messagebox("Error...", "No se pudo cambiar la impresora predeterminada",StopSign!)
return
end if
//Devuelve el nombre de la impresora que estaba predeterminada
messagebox("",ls_default)
end if
si tienes algún problema me escribes para enviarte por correo como lo realice
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Gracias !!, Windows9x

Publicado por José (169 intervenciones) el 16/12/2002 14:58:48
Gracias Jorge, probé y anduvo muy bién la solución, lo que investigué y no encontré fue en el Registro de Windows9x donde se carga la impresora predeterminada, si pude determinar que cambia en el win.ini, device. Si sabes más al respecto por favor avisame.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Gracias !!, Windows9x

Publicado por Jorge Luis (91 intervenciones) el 16/12/2002 21:51:39
Saludos

Exacto para windows 9x se ubica de la siguiente manera:
nret = SetProfileString("c:\windows\win.ini", "Windows", "device",ls_printer)
Si tienes alguna inquietud puedes escribir nuevamente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar