Da ich die Funktion überarbeitet habe und die noch gar nicht in der CL existiert, hier mal eine funktionierende Variante den Standarddrucker einzustellen. Übergeben wird der Druckername als String (
Unit Printers; Printer.Printers hat eine Liste aller installierten), die Funktion liefert
True zurück, wenn der erfolgreich Drucker geändert wurde, ansonsten
False.
Delphi-Quellcode:
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;
...
...
[edit=CalganX]Win32-Klassifizierung hinzugefügt. Mfg, CalganX[/edit]
[edit=fkerber]kleinen Schreibfehler im Code verbessert. Mfg, fkerber[/edit]