Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Impresión
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-12-2004
jdiazan jdiazan is offline
Miembro
 
Registrado: jun 2003
Ubicación: Málaga
Posts: 33
Poder: 0
jdiazan Va por buen camino
Cambiar impresora por defecto mediante código

Necesito cambiar la impresora por defecto en el sistema operativo y sin que el usuario vea ningún cuadro de dialog,
He leido en alguna parte que cambiando el registro de sistema puedo hacerlo, pero no sé donde está esa clave.
Gracias...
__________________
Juan Díaz
Domain, S.A.
Responder Con Cita
  #2  
Antiguo 15-12-2004
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.267
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por jdiazan
...Necesito cambiar la impresora por defecto en el sistema operativo y sin que el usuario vea ningún cuadro de dialog,...
Para hacer la prueba coloca en un form un ComboBox y un Botón.

Para rellenar el combo con las impresoras disponibles haz lo siguiente (en el OnShow, por ejemplo):

Código Delphi [-]
// limpiar
ComboBox1.Items.Clear;
// rellenar con las impresoras
ComboBox1.Items.AddStrings(Printer.Printers);
// Seleccionar la primera
ComboBox1.Text := ComboBox1.Items[0];

Una vez tengas seleccionada en el combo la impresora que deseas convertir en la activa pulsa el botón, que tendrá el siguiente código:

Código Delphi [-]
var
Device : array[0..255] of char;
Driver : array[0..255] of char;
Port : array[0..255] of char;
hDeviceMode: THandle;
begin
// Cogemos la seleccionada en el combo
Printer.PrinterIndex := ComboBox1.ItemIndex; default
// Obtener la impresora eleccionada
Printer.GetPrinter(Device, Driver, Port, hDeviceMode);
// Montamos la cadena necesaria...
StrCat( Device, ',');
StrCat( Device, Driver );
StrCat( Device, ',');
StrCat( Device, Port );
// Modifica WIN.INI o el registro segun sea W9x o WNT
WriteProfileString( 'windows', 'device', Device );
StrCopy( Device, 'windows' );
// Avisar de que hemos cambiado "algo"
SendMessage( HWND_BROADCAST, WM_SETTINGCHANGE, 0, longint( @Device));


P.D: Tb puedes echarle un vistazo al truco 311 de trucomanía (no lo he probado).
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 15-12-2004
jdiazan jdiazan is offline
Miembro
 
Registrado: jun 2003
Ubicación: Málaga
Posts: 33
Poder: 0
jdiazan Va por buen camino
Muchas gracias, lo probaremos...
__________________
Juan Díaz
Domain, S.A.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 05:09:31.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi