** 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] |
|
|