Вы можете использовать метод PrintTestPage
из класса Win32_Printer
wmi
проверить этот образец
{$APPTYPE CONSOLE}
uses
SysUtils,
ActiveX,
ComObj;
procedure PrintTestPage(const PrinterName:string);
var
FSWbemLocator : OLEVariant;
FWMIService : OLEVariant;
FWbemObjectSet: OLEVariant;
FWbemObject : OLEVariant;
oEnum : IEnumvariant;
iValue : LongWord;
PrintResult : Integer;
begin;
FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
FWMIService := FSWbemLocator.ConnectServer('localhost', 'root\CIMV2', '', '');
FWbemObjectSet:= FWMIService.ExecQuery(Format('SELECT * FROM Win32_Printer Where Name="%s"',[PrinterName]),'WQL',0);
oEnum := IUnknown(FWbemObjectSet._NewEnum) as IEnumVariant;
if oEnum.Next(1, FWbemObject, iValue) = 0 then
begin
PrintResult:=FWbemObject.PrintTestPage;
if PrintResult=0 then
Writeln('Success')
else
Writeln('An error occurred');
end;
end;
begin
try
CoInitialize(nil);
try
PrintTestPage('MyPrinter');
finally
CoUninitialize;
end;
except
on E:Exception do
Writeln(E.Classname, ':', E.Message);
end;
Readln;
end.