C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Принтер, Получить имя порта
** Pan-SQL
Отправлено: 11.11.2005, 13:33


Не зарегистрирован







Здравствуйте коллеги. Подскажите, как программно получить данные о принтере, а конкретно имя порта. Заранее спасибо.
Guest
Отправлено: 11.11.2005, 14:02


Не зарегистрирован







? GetPrinter PRINTER_INFO_2/5 ?
? TPrinter::GetPrinter ?
** Pan-SQL
Отправлено: 14.11.2005, 13:17


Не зарегистрирован







Я никак не могу понять, почему выводится неверное имя порта принтера. А точнее, на форме приложения имеется метка (PrinterPort) и кнопка (GetPrinterButton). При нажатии на кнопку метка должна отображать имя порта. Ниже представлен код кнопки.
[CODE]
void __fastcall TForm1::GetPrinterButtonClick(TObject *Sender)
{
char szDeviceName[CCHDEVICENAME];// переменная для хранения всей инфы о принтере
char szDriverName[MAX_PATH]; // драйвер принтера
char szPortName[MAX_PATH]; // порт принтера
THandle hPrnDevMode; // дескриптор области памяти
// установка принтера по умолчанию
Printer()->PrinterIndex=-1;
// извлечение инфы о принтере из WIN.INI
Printer()->GetPrinter(szDeviceName, szDriverName, szPortName, hPrnDevMode);
// заполнение полей драйвера и порта
if (!strlen(szPortName) || !strlen(szDriverName))
{
char szTemp[MAX_PATH];
GetProfileString("Devices", szDeviceName, szPortName, szTemp, MAX_PATH);
char *pazPos=StrPos(szTemp, ",");
if (pazPos)
{
int iLength=strlen(szTemp)-strlen(pazPos);
strncpy(szDriverName, szTemp, iLength);
szDriverName[iLength]='\0';
strcpy(szPortName, ++pazPos);
}
}
PrinterPort->Caption=szPortName;
}
Переменная szPortName содержит имя порта Ne00, хотя должна содержать DOT4_001. Подскажите, в чем проблема. Заранее благодарю.

[CODE]

Вернуться в Вопросы программирования в C++Builder