Я не использовал этот API раньше, но мне кажется, что вы можете использовать для этого функцию DocumentProperties
.
Минимальный пример (с использованием принтера по умолчанию):
var
PrinterName: string;
BufLen: Cardinal;
PrinterHandle: THandle;
begin
GetDefaultPrinter(nil, @BufLen);
SetLength(PrinterName, BufLen);
GetDefaultPrinter(PChar(PrinterName), @BufLen);
SetLength(PrinterName, BufLen - 1);
if not OpenPrinter(PChar(PrinterName), PrinterHandle, nil) then
begin
ShowMessage('Could not open printer.');
Exit;
end;
try
DocumentProperties(Handle, PrinterHandle, PChar(PrinterName), nil, nil, DM_IN_PROMPT)
// possibly do other things that might raise an exception
finally
ClosePrinter(PrinterHandle);
end;
Указатели nil
можно заменить структурами DEVMODE
, которые содержат начальные настройки и настройки, выбранные пользователем в GUI, если вы также добавите соответствующие флаги. Подробности смотрите в документации.