powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Windows [игнор отключен] [закрыт для гостей] / ПРИНТРЕР
5 сообщений из 5, страница 1 из 1
ПРИНТРЕР
    #33075519
Фотография Denis Lee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кто нибудь пытался получить состояние принтера (включен, выключен, нет бумаги) и т.д.
третий день на месте подскажите плз. что куда
в нете есть пару примеров но они не работают, в MSDN - лажа, или я что то не так делаю ?
...
Рейтинг: 0 / 0
ПРИНТРЕР
    #33075748
Фотография lissyara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как делаешь?
...
Рейтинг: 0 / 0
ПРИНТРЕР
    #33076786
Фотография Denis Lee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PRINTER_INFO_2 *Pr;
DWORD byteNeed = 0,prCount=0;
EnumPrinters(PRINTER_ENUM_CONNECTIONS|PRINTER_ENUM_LOCAL,NULL,2,NULL,0,&byteNeed,&prCount);
Pr = new PRINTER_INFO_2 [byteNeed];
if(EnumPrinters(PRINTER_ENUM_CONNECTIONS|PRINTER_ENUM_LOCAL,NULL,2,(LPBYTE)Pr,byteNeed,&byteNeed,&prCount))
{
printf("\n********************************************************\n");
for(int i = 0; i < prCount; ++i)
{
printf("Name :%s\n",Pr .pPrinterName);
printf("Port :%s\n",Pr.pPortName);
printf("Driver :%s\n",Pr.pDriverName);
printf("Status :%d\n",Pr.Status);
printf("------------------------\n");
}
printf("\n********************************************************\n");
}
delete Pr;


или


PRINTER_INFO_2 *pPrinterInfo = NULL;
if (!GetPrinter(hPrinter, 2, NULL, 0, &cByteNeeded))
{
if (GetLastError() != ERROR_INSUFFICIENT_BUFFER) return FALSE;
}
pPrinterInfo = (PRINTER_INFO_2 *)malloc(cByteNeeded);
printf("Size buffer for pPrinterInfo : %d byte\n",cByteNeeded);
if (!(pPrinterInfo))
{
printf("Error - alloc memory (pPrinterInfo)\n");
return FALSE;
}

if (!GetPrinter(hPrinter,2,(LPBYTE)pPrinterInfo,cByteNeeded,&cByteUsed))
{
printf("Error - access denide to printer\n");
free(pPrinterInfo);
pPrinterInfo = NULL;
return FALSE;
}
...
Рейтинг: 0 / 0
ПРИНТРЕР
    #33076794
Фотография Denis Lee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"PRINTER_INFO_2" .Status - всегда равен 0
...
Рейтинг: 0 / 0
ПРИНТРЕР
    #33076988
Фотография rrrrrrrrrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ого... Уже шестой топик

По-моему, это вполне нормально для Windows: выньте LPT-шнур принтера и посмотрите, что и в какой момент поменяется в папке принтеры, в принтерном окне и в свойствах принтера. Результат обескураживает: НИЧЕГО. Пока не возникнет проблем с распечаткой, Windows не сможет дать ответ, что там с принтером. Думаю, status поменяется только после "Ошибки записи в порт принтера". Об этом же говорит и то, что ко многим принтерам прилагаются программы анализа состояния, и они работают только со "своим" принтером. Т.е. копать имеет смысл только в двух направлениях - 1) по работе с программируемым интерфейсом принтера (и это глупо, т.к. придется иметь всю базу распространенных принтеров) 2) попробовать порыться в PCL-командах, м.б. там есть команды с возвратом значений (сомневаюсь). Еще вариант - экспериментировать с отсылкой документов - кинуть крупный файл, который с гарантией не уйдет в принтер за заданное время, затем отменить печать. Тогда ИМХО status может обновиться...
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Windows [игнор отключен] [закрыт для гостей] / ПРИНТРЕР
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]