Newsgroup: it.comp.lang.delphi
Titolo: Stampante predefinita

Ciao a tutti..
vorrei poter settare la stampante predefinita...
qual'č l' API per farlo?
grazie..ciao..RAF.

Posso senz'altro aiutarti, ma ho bisogno di una precisazione, vuoi
all'interno del programma usare la stampante predefinita del sistema oppure
vuoi settare te la stampante predefinita del sistema?
Se hai tempo, domani ti mando del codice. Ciao!!!!

 wrote in message
a2okor$67a$1...@newsreader.mailgate.org...


domani. ciaoux

procedure TUScelta31.Setta_Stampante_95(PrinterName : string);
var
   Reg                  : TRegistry;       // variabile di accesso ai
registri di configurazione di windows
   Driver,                                 // var di appoggio per il
driver
   Porta,                                  // ''''''''''''''''''' la
porta
   Vecchia_Printer_Reg,                    // var salvataggio stampante
precedentemente utilizata (REGISTRI)
   Vecchia_printer_INI  : string;          // var salvataggio stampante
precedentemente utilizata (WIN.INI)
   Conf_16bit           : TIniFile;        // accesso a Win.INI
   Nuova_Printer        : string;          // printer da comporre con i
registri e scrivere su Win.INI
   sPrinter             : string;          // descrizione della
stampante pulita dopo 'ON'
begin
   Driver := '';
   Porta := '';
   Reg := TRegistry.Create;
   sPrinter:=TruncKey(PrinterName);
   try
   with Reg do
   begin
      RootKey := HKEY_LOCAL_MACHINE;
      // LEGGO IL DRIVER
      if
KeyExists('\System\CurrentControlSet\Control\Print\Environments\Windows
4.0\Drivers\'+
                   sPrinter) then
      begin
OpenKey('\System\CurrentControlSet\Control\Print\Environments\Windows
4.0\Drivers\'+
                 sPrinter ,False);
         Driver := ReadString('Driver');
      end;
      // LEGGO LA PORTA
      if KeyExists('\System\CurrentControlSet\Control\Print\Printers\'+
              sPrinter) then
      begin
         OpenKey('\System\CurrentControlSet\Control\Print\Printers\'+
                 sPrinter,False);
         Porta := ReadString('Port');
      end;
      // LEGGO IL NOME DELLA PRECEDENTE STAMPANTE USATA  E SCRIVO LA
NUOVA SUL REGISTRO
      if
KeyExists('\Config\001\System\CurrentControlSet\Control\Print\Printers\')
then
      begin
OpenKey('\Config\001\System\CurrentControlSet\Control\Print\Printers\'
                  , False);
         Vecchia_Printer_Reg := ReadString('Default');
         WriteString('Default', sPrinter);
      end;
   end;
   finally
      Reg.Free;
   end;
   // ADESSO VADO A MODIFICARE IL WIN INI
   try
      Conf_16bit := TIniFile.Create('C:\WINDOWS\Win.INI');
      Vecchia_Printer_INI := Conf_16bit.ReadString('windows', 'device',
'ERROR');
      Nuova_Printer := sPrinter + ',' +
                       Driver + ',' +
                       Porta;
      Conf_16bit.WriteString('windows', 'device', Nuova_Printer);
   finally
      Conf_16bit.Free;
   end;
end;
procedure TUScelta31.Setta_Stampante_NT(PrinterName : string);
var
   Reg          : TRegistry;
   Driver_Porta : string;
begin
   Driver_Porta := '';
   Reg := TRegistry.Create;
   try
      with Reg do
      begin
         RootKey := HKEY_CURRENT_USER;
         // LEGGO IL DRIVER
         if KeyExists('\Software\Microsoft\Windows
NT\CurrentVersion\Devices\') then
         begin
            OpenKey('\Software\Microsoft\Windows
NT\CurrentVersion\Devices', False);
            Driver_Porta := ReadString(PrinterName);
         end;
         if KeyExists('\Software\Microsoft\Windows
NT\CurrentVersion\Windows') then
         begin
            OpenKey('\Software\Microsoft\Windows
NT\CurrentVersion\Windows', False);
            WriteString('device', PrinterName + ',' + Driver_Porta);
         end;
      end;
   finally
      Reg.Free;
   end;
end;
La lista dei nomi delle stampanti installate sul sistema lo trovi con
printer.printers
dopo aver incluso la unit printers nelle uses, il sistema operativo se
non lo sai riconoscere
ti passo il codice, comunque è un'apina semplice semplice, ciao.
PS. scusate se non rispondo subito ma sto leggendo il NG tramite http
e me lo aggiorna ogni qualche ora. CIAO!!!!
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 ha scritto nel messaggio
news:909c768b4c6c504d8c3...@mygate.mailgate.org...
