![]() |
Standarddrucker ermitteln
Folgende Funktion ermittelt den Standarddrucker für Windows 95, 98, ME, NT4, 2000, XP.
Ab Windows 2000 gibt es die API-Funktion GetDefaultPrinterA. Anstatt nun zu prüfen, auf welchem OS wir arbeiten, wird einfach geprüft, ob die neue API-Funktion vorhanden ist. Bei Windows XP kann es vorkommen, das zwar ein Standarddrucker angelegt ist, dies aber nicht in der WIN.INI vermerkt ist.
Delphi-Quellcode:
[edit=Matze]Bugfix ergänzt. Mfg, Matze[/edit]
uses ..., WinSpool;
function GetDefaultPrinterName: string; type TGetDefaultPrinterA = function (prnName: LPTSTR; var bufSize: DWORD): BOOL; stdcall; var ws: HINST; GetDefaultPrinterA: TGetDefaultPrinterA; bufsize: DWORD; i: Integer; begin ws := GetModuleHandle(PChar(winspl)); GetDefaultPrinterA := GetProcAddress(ws, 'GetDefaultPrinterA'); bufsize := 400; SetLength(Result, bufsize); if Assigned(GetDefaultPrinterA) then begin if GetDefaultPrinterA(PChar(Result), bufsize) then begin Dec(bufsize); if bufsize > 0 then SetLength(Result, bufsize) else Result := ''; end else begin if GetLastError = ERROR_FILE_NOT_FOUND then Result := '' // kein Defaultdrucker vorhanden else RaiseLastWin32Error; // wahrscheinlich Puffer zu klein end; end else begin bufsize := GetProfileString('windows', 'device', '', PChar(Result), Length(Result)); SetLength(Result, bufsize); Result := TrimLeft(Result); i:= Pos(',', Result); if i<>0 then Result := Copy(Result, 1, i-1); end; end; [edit=fkerber]Bugfix ergänzt. Mfg, fkerber[/edit] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:21 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-2025 by Thomas Breitkreuz