boriskaZ |
Отправлено: 28.07.2004, 15:40 |
|
Не зарегистрирован
|
К машине подключено несколько принтеров, в том числе подкладные (типа EPSON TM-U295).
Нужно узнать програмно — данный принтер обычный(А4) или подкладной.
bool A4Printer(AnsiString PrinterName)
{
HANDLE phPrinter;
OpenPrinter(PrinterName.c_str(), &phPrinter, NULL);
// память под DEVMODE
LONG bytes = DocumentProperties(NULL, phPrinter, PrinterName.c_str(), NULL, NULL, 0);
DEVMODE *dvMode;
dvMode = (DEVMODE *)malloc(bytes);
// получаем настройки
DocumentProperties(NULL, phPrinter, PrinterName.c_str(), dvMode, NULL, DM_OUT_BUFFER);
bool ret = dvMode->dmPaperSize == DMPAPER_A4;
ClosePrinter(phPrinter);
free(dvMode);
return ret;
}
Выдает true для всех принтеров (размер бумаги А4).
Насколько я понимаю, дело в том, что при вызове OpenPrinter — последним параметром передаем NULL — инициализируем настройками по умолчанию.
В то же время, при просмотре свойсв принтера из папки принтеры, в закладке "общие" — пишется размер бумаги А4 у обычных принтеров и ничего у подкладных.
|
|
boriskaZ |
Отправлено: 29.07.2004, 14:34 |
|
Не зарегистрирован
|
Уже разобрался нужно было использовать DeviceCapabilities |
|
|