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
[-]
ComboBox1.Items.Clear;
ComboBox1.Items.AddStrings(Printer.Printers);
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
Printer.PrinterIndex := ComboBox1.ItemIndex; default
Printer.GetPrinter(Device, Driver, Port, hDeviceMode);
StrCat( Device, ',');
StrCat( Device, Driver );
StrCat( Device, ',');
StrCat( Device, Port );
WriteProfileString( 'windows', 'device', Device );
StrCopy( Device, 'windows' );
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).