Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   Cambiar impresora por defecto mediante código (https://www.clubdelphi.com/foros/showthread.php?t=16891)

jdiazan 15-12-2004 17:12:28

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...

Neftali [Germán.Estévez] 15-12-2004 17:38:26

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).

jdiazan 15-12-2004 18:16:23

Muchas gracias, lo probaremos...


La franja horaria es GMT +2. Ahora son las 07:35:26.

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