![]() |
![]() ![]() ![]() ![]() |
|
Как прочитать или установить принтер по умолчанию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 | ||||