Borland C++ Builder VCL FAQ - Перечисление принтеров
ОГЛАВЛЕНИЕ
Страница 89 из 96
Перечисление принтеров
Код перечисляет все принтеры и выводит данные о них в Мемо:PRINTER_INFO_2 *Pr;
DWORD byteNeed = 0,prCount=0;//Кол-во необходимых байт, количество принтеров
//Делаем первый вызов с буфером NULL, чтоб узнать нужный размер буфера
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))
{
for(int i = 0; i < prCount; ++i)
{
Memo1->Lines->Add("Printer*************");
Memo1->Lines->Add("Имя: " + AnsiString(Pr[i].pPrinterName));
Memo1->Lines->Add("Порт: " + AnsiString(Pr[i].pPortName));
Memo1->Lines->Add("Драйвер: " + AnsiString(Pr[i].pDriverName));
Memo1->Lines->Add("");
}
}
delete Pr;