![]() |
Standarddrucker ändern
Hallöle,
ich suche eine Beispiel für's ändern des Windows Standartdruckers. Es muss wohl mit SetDefaultPrinter gehen, aber ich hab keinen Schimmer wie ich das in Delphi benutze!!. Wäre sehr dankbar, wenn mir jemand ein Beispiel aufschreibt was ich nachher in meinen Code reinkopieren kann. Vielen Dank schon mal!! Grim Fandango :coder: |
Re: Standarddrucker ändern
Hallo,
Delphi-Quellcode:
Quelle:
var
Device: array[0..255] of char; Driver: array[0..255] of char; Port: array[0..255] of char; hDeviceMode: THandle; begin Printer.PrinterIndex := ....; {select printer to make 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_WININICHANGE, 0, longint( @Device )); end; ![]() |
Re: Standarddrucker ändern
Lange ist es her, aber ich habe jetzt bei einem Kunden mit genau dieser Funktionen ein Problem gehabt, welches zum Absturz der Gesamtanwendung geführt hat. Die Lösung liegt im SendMessage, anstatt einfach folgende Änderung (zzgl. einiger Anpassungen as needed bei mir) :)
Delphi-Quellcode:
...:cat:...
uses
WinSpool; function SetDefaultPrinter(aPrinterName: string) Boolean; type TSetDefaultPrinterA = function (prnName: LPCTSTR): BOOL; stdcall; var WS: HINST; SetDefaultPrinterA: TSetDefaultPrinterA; begin WS := GetModuleHandle(PChar(winspl)); SetDefaultPrinterA := GetProcAddress(WS, 'SetDefaultPrinterA'); if Assigned(SetDefaultPrinterA) then begin Result := SetDefaultPrinterA(PChar(aPrinterName)); if Result then SendNotifyMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0); end else begin Result := False; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:56 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz