Ver Mensaje Individual
  #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.282
Reputación: 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