![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Как прочитать или установить принтер по умолчаниюDelphi , ОС и Железо , Принтеры и ПечатьАвтор: http://www.swissdelphicenter.ch uses Printers, Messages; function GetDefaultPrinter: string; var ResStr: array[0..255] of Char; begin GetProfileString('Windows', 'device', '', ResStr, 255); Result := StrPas(ResStr); end; procedure SetDefaultPrinter1(NewDefPrinter: string); var ResStr: array[0..255] of Char; begin StrPCopy(ResStr, NewdefPrinter); WriteProfileString('windows', 'device', ResStr); StrCopy(ResStr, 'windows'); SendMessage(HWND_BROADCAST, WM_WININICHANGE, 0, Longint(@ResStr)); end; procedure SetDefaultPrinter2(PrinterName: string); var I: Integer; Device: PChar; Driver: PChar; Port: PChar; HdeviceMode: THandle; aPrinter: TPrinter; begin Printer.PrinterIndex := -1; GetMem(Device, 255); GetMem(Driver, 255); GetMem(Port, 255); aPrinter := TPrinter.Create; try for I := 0 to Printer.Printers.Count - 1 do begin if Printer.Printers = PrinterName then begin aprinter.PrinterIndex := i; aPrinter.getprinter(device, driver, port, HdeviceMode); StrCat(Device, ','); StrCat(Device, Driver); StrCat(Device, Port); WriteProfileString('windows', 'device', Device); StrCopy(Device, 'windows'); SendMessage(HWND_BROADCAST, WM_WININICHANGE, 0, Longint(@Device)); end; end; finally aPrinter.Free; end; FreeMem(Device, 255); FreeMem(Driver, 255); FreeMem(Port, 255); end; procedure TForm1.Button1Click(Sender: TObject); begin label1.Caption := GetDefaultPrinter2; end; //Fill the combobox with all available printers procedure TForm1.FormCreate(Sender: TObject); begin Combobox1.Items.Clear; Combobox1.Items.AddStrings(Printer.Printers); end; //Set the selected printer in the combobox as default printer procedure TForm1.Button2Click(Sender: TObject); begin SetDefaultPrinter(Combobox1.Text); end; Программа на Delphi, которая позволяет установить принтер в качестве умолчания и получить текущий умолчательный принтер. Вот разбивка каждого процедуры: GetDefaultPrinter: Функция получает текущий умолчательный принтер из реестра Windows с помощью API-функции SetDefaultPrinter1: Процедура устанавливает новый умолчательный принтер, модифицируя значение "device" в реестре Windows с помощью API-функции SetDefaultPrinter2: Процедура устанавливает новый умолчательный принтер, итерируясь через все доступные принтеры и проверяя, если выбранный принтер соответствует тому, который указан пользователем. Если это так, она получает информацию о устройстве, драйвере и порте для этого принтера с помощью API-функции Button1Click: Событийный обработчик получает текущий умолчательный принтер с помощью процедуры FormCreate: Событийный обработчик очищает и пополняет комбобокс доступными принтерами с помощью свойства Button2Click: Событийный обработчик устанавливает выбранный принтер из комбобокса в качестве нового умолчательного принтера с помощью процедуры Вот некоторые предложения по улучшению кода:
В целом, это код обеспечивает базовое выполнение функций установки и получения умолчательного принтера в Delphi. Однако есть много способов улучшить его функциональность и надежность. Статья рассказывает о способах прочитать или установить принтер по умолчанию на компьютере, используя Delphi-код и функции Windows. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Принтеры и Печать ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |