Как сменить формат бумаги на принтере?
От: DNS Россия  
Дата: 21.05.04 13:22
Оценка:
Добрый день!
Есть у меня такой код...

  HANDLE hPrn;
  PRINTER_DEFAULTS Defs;
  ZeroMemory(&Defs,sizeof(PRINTER_DEFAULTS));
  Defs.DesiredAccess=PRINTER_ALL_ACCESS;
  BOOL bOk=OpenPrinter(argv[1],&hPrn,&Defs);
  if (bOk){
    PRINTER_INFO_8* pPrn=0;
    DWORD dw=0;
    bOk=GetPrinter(hPrn,8,(LPBYTE)pPrn,0,&dw);
    pPrn=(PRINTER_INFO_8*)HeapAlloc(GetProcessHeap(),0,dw);
    bOk=GetPrinter(hPrn,8,(LPBYTE)pPrn,dw,&dw);
    if (bOk&&pPrn->pDevMode){
      printf((char*)pPrn->pDevMode->dmDeviceName);
      pPrn->pDevMode->dmPaperWidth=300;      
      pPrn->pDevMode->dmPaperLength=100;
      bOk=SetPrinter(hPrn,8,(LPBYTE)pPrn,0);
      bOk=GetPrinter(hPrn,8,(LPBYTE)pPrn,dw,&dw);
    } else {
      printf("Can't get printer's DeviceMode. Terminating.\n");
    }


Он работает, всё нормально вроде...
Но почему-то я не могу получить PRINTER_INFO_9.
Т.е. если везде в коде поменять на другой уровень, то

bOk=GetPrinter(hPrn,9,(LPBYTE)pPrn,dw,&dw);


после запуска в bOk — 1, но pPrn->pDevMode = 0
Никак не пойму что не так
Д.Н.С.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.