Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 22.03.2008, 23:29   #1
xakkkkker
Форумчанин
 
Аватар для xakkkkker
 
Регистрация: 15.12.2007
Сообщений: 226
По умолчанию Принтер

Помогите нужен код программы которая очищаеть очередь для печати на принтере
xakkkkker вне форума Ответить с цитированием
Старый 23.03.2008, 15:05   #2
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Если я не ошибаюсь, то очередь можно очистить так:

uses ..., WinSpool;

procedure TForm1.Button1Click(Sender: TObject);
var
PrintersInfo, TmpPrintersInfo: PPrinterInfo1;
pcbNeeded, pcReturned, jpcbNeeded, jpcReturned: DWORD;
I, J: Integer;
hPrinter: THandle;
JobInfo, TmpJobInfo: PJobInfo3;
begin
EnumPrinters(PRINTER_ENUM_LOCAL, nil, 1, PrintersInfo, 0, pcbNeeded, pcReturned);
if GetLastError = ERROR_INSUFFICIENT_BUFFER then
begin
GetMem(PrintersInfo, pcbNeeded);
try
if EnumPrinters(PRINTER_ENUM_LOCAL, nil, 1,
PrintersInfo, pcbNeeded, pcbNeeded, pcReturned) then
begin
TmpPrintersInfo := PrintersInfo;
for I := 0 to pcReturned - 1 do
begin
if OpenPrinter(TmpPrintersInfo^.pName, hPrinter, nil) then
begin
EnumJobs(hPrinter, 0, 100, 1, nil,
0, jpcbNeeded, jpcReturned);
if GetLastError in [NO_ERROR, ERROR_INSUFFICIENT_BUFFER] then
begin
GetMem(JobInfo, jpcbNeeded);
try
if EnumJobs(hPrinter, 0, 100, 3, JobInfo,
jpcbNeeded, jpcbNeeded, jpcReturned) then
begin
TmpJobInfo := JobInfo;
for J := 0 to jpcReturned - 1 do
begin
if not SetJob(hPrinter, TmpJobInfo^.JobId, 0,
nil, JOB_CONTROL_DELETE) then RaiseLastOSError;
Inc(TmpJobInfo);
end;
end
else
RaiseLastOSError;
finally
FreeMem(JobInfo);
end;
end
else
RaiseLastOSError;
end
else
RaiseLastOSError;
Inc(TmpPrintersInfo);
end;
end
else
RaiseLastOSError;
finally
FreeMem(PrintersInfo);
end;
end
else
RaiseLastOSError;
end;
Terran вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
из DBGrid на принтер micaell БД в Delphi 8 07.05.2010 16:29
Печать на принтер(USB) kisser_san Общие вопросы Delphi 4 25.04.2008 15:18
Принтер Gromsky Общие вопросы Delphi 4 05.03.2008 17:08
не печатает принтер!!!! ronich Операционные системы общие вопросы 5 22.11.2007 08:52
печать на принтер в делфи! zetrix БД в Delphi 0 30.10.2006 12:53


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS
Здесь нужно купить рекламу за 7 тыс руб в месяц! )
пишите сюда - alarforum@yandex.ru
ИКС 840