C++Builder
  Начало   Форум   Помощь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: SetPrinter  (Прочитано 2532 раз)
Batrider
Участник
**

Сказали спасибо: +3/-0
Offline Offline

Сообщений: 58


« : 09 августа 2011, 19:48:40 »

Добрый вечер.Есть код:
Код
HANDLE hand;
DWORD ret,ret1;
PRINTER_INFO_2 *printers1 = NULL;
EnumPrinters(PRINTER_ENUM_LOCAL,
0,
2,0,
0,
&ret,
&ret1);
 
 BYTE* buf = new BYTE[ret];
EnumPrinters(PRINTER_ENUM_LOCAL,
0,
2,buf,
ret,
&ret,
&ret1);
LPPRINTER_INFO_2A printers=(LPPRINTER_INFO_2A)buf;
 
for(DWORD i(0); i<ret1; ++i)
  {
  OpenPrinter(printers[i].pPrinterName,&hand,0);
  GetPrinter(hand, 2, 0, 0, &ret1);
  BYTE* buf1 = new BYTE[ret1];
  printers1=(PRINTER_INFO_2A *)GlobalAlloc(GPTR, ret1);
  GetPrinter(hand, 2, (LPBYTE)printers1, ret1, &ret1);
  printers1->Status=PRINTER_STATUS_PAUSED;
  SetPrinter(hand,2,(LPBYTE)&printers1,1);
  ShowMessage(GetLastError());
  ClosePrinter(hand);
}
Приложение вылетает и пишет "Access violation at address 72FCAD76 in module winspool.drv", или GetLastError() выдает 1803.
Как отправить принтеру PRINTER_CONTROL_PAUSE?
Записан
Zor
Глобальный модератор
***

Сказали спасибо: +158/-30
Offline Offline

Сообщений: 2946


« Ответ #1 : 09 августа 2011, 20:09:01 »

Родное руководство.
Записан
Batrider
Участник
**

Сказали спасибо: +3/-0
Offline Offline

Сообщений: 58


« Ответ #2 : 09 августа 2011, 20:57:27 »

Спасибо.Намудрил что-то я=(
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в: