Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Standart Drucker setzen (https://www.delphipraxis.net/75781-standart-drucker-setzen.html)

gsh 24. Aug 2006 21:09


Standart Drucker setzen
 
Hi DPler

Mal ne Frage wie geht es am einfachsten in Windows den Standard Drucker zu setzen? Jemand ideen?

Jelly 24. Aug 2006 21:48

Re: Standart Drucker setzen
 
Ich nutz dazu folgenden Code... Einfach die Eigenschaft SetDefaultPrinterName setzen und lesen.

Delphi-Quellcode:
unit PrinterSettings;

interface
uses windows, sysutils, classes, messages ;

function GetDefaultPrinterA(prnName : PAnsiChar; var bufSize : DWORD ) : BOOL; stdcall;
       external 'winspool.drv' name 'GetDefaultPrinterA';

type
 TPrinterSettings = class
  private
    function getDefaultPrinterName: string;
    procedure SetDefaultPrinterName(const Value: string);
 public
    property DefaultPrinterName : string read GetDefaultPrinterName write SetDefaultPrinterName ;
 end ;

var
 PS : TPrinterSettings ;

implementation
uses printers ;

function TPrinterSettings.getDefaultPrinterName:string;
begin
     try
        Result := Printer.Printers[Printers.Printer.PrinterIndex] ;
     except
        Result := '' ;
     end ;
end;

procedure TPrinterSettings.SetDefaultPrinterName(const Value: string);
var
  Device: array[0..255] of char;
  Driver: array[0..255] of char;
  Port: array[0..255] of char;
  hDeviceMode: THandle;
begin
  if Printer.Printers.IndexOf (Value) >= 0 then begin
      Printer.PrinterIndex := Printer.Printers.IndexOf (Value) ;
      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_WININICHANGE, 0, longint( @Device ));
      sleep (300) ;
  end else begin

  end ;
end;



initialization
   PS := TPrinterSettings.create ;
finalization
   PS.free ;
end.

Jürgen Thomas 25. Aug 2006 08:12

Re: Standart Drucker setzen
 
Zitat:

Zitat von gsh
Mal ne Frage wie geht es am einfachsten in Windows den Standart Drucker zu setzen? Jemand ideen?

Laut Delphi-Referenz durchsuchenTPrinter.PrinterIndex geht es (mit D5 mehrfach verwendet) mit:
Delphi-Quellcode:
Printer.PrinterIndex := -1;
//  dadurch setzt Delphi den PrinterIndex auf den Standardwert;
//  anschließend kann der Drucker abgefragt werden:
sAktuellerDrucker := Printer.Printers[Printer.PrinterIndex];
Ich nehme an, dass Du nach so etwas gefragt hast. Jürgen

PS. Es heißt "Standard"!!!

Nachtrag @Jelly:
Zitat:

Zitat von Delphi-Hilfe
Um den Standarddrucker auszuwählen, setzen Sie PrinterIndex auf -1.

Und das klappt wirklich - siehe oben: "mit D5 mehrfach verwendet"

Jelly 25. Aug 2006 08:19

Re: Standart Drucker setzen
 
@Jürgen: Liest dein Code den Standarddrucker nicht nur aus? Zum Setzen kannst du nicht einfach den Printerindex setzen, oder ?

gsh 25. Aug 2006 11:53

Re: Standart Drucker setzen
 
danke

funktioniert :thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:54 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz