Pan_SQL |
Отправлено: 05.12.2005, 13:47 |
|
Не зарегистрирован
|
Здравствуйте уважаемые участники форума. На этот раз я обращаюсь к вам с такой проблемой: порт, к которому подключен принтер: DOT_004. Я пытаюсь открыть доступ к принтеру следующим образом:
CODE |
HANDLE hPort=CreateFile( "DOT_004", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING,
0, NULL );
if (hPort == INVALID_HANDLE_VALUE)
{
ShowMessage("Ошибка");
}
|
Так вот, если изменить DOT_004 на LPT1 вызов функции CreateFile выполняется нормально, но если ничего не изменять: hLpt == INVALID_HANDLE_VALUE. Может быть в данном случае нужно использовать какую-либо другую функцию?
Отредактировано Георгий — 05/12/2005, 22:46 |
|
Giny |
Отправлено: 06.12.2005, 15:08 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 23
|
Имена портов храняться в реестре по ключу
HKEY_LOCAL_MACHINE\ HARDWARE\ DEVICEMAP\ SERIALCOMM.
В этом ключе возможные значения первого аргумента функции CreateFile при открытии порта
Их список можно занести ComboBox1 следующим кодом
#include
...
TRegistry* Reg = new TRegistry;
TStringList *List = new TStringList;
int i;
AnsiString w;
Reg->RootKey = HKEY_LOCAL_MACHINE;
Reg->OpenKey("HARDWARE\\DEVICEMAP\\SERIALCOMM", false);
Reg->GetValueNames(List);
for (i = 0; i< List->Count; i++)
{
w= Reg->ReadString(List->Strings[i]).SetLength(3);
if (w.SetLength(3) == "COM")
ComboBox1->Items->Add(Reg->ReadString(List->Strings[i]));
}
List->Free();
Reg->CloseKey();
Reg->Free();
ComboBox1->ItemIndex = 0;
Для параллельных портов ключ такой
HKEY_LOCAL_MACHINE\ HARDWARE\ DEVICEMAP\ PARALLEL PORTS.
Я всё это к тому что твой параметр "DOT_004" какой-то сомнительный
|
|
|