Почему вы пытаетесь открыть порт LPT.Это действительно нужно для вас?Если принтер (например, HP Laser Jet 4 или любой другой) установлен в ОС, и вы хотите писать в него напрямую, не используя драйвер принтера, вы можете записать данные (например, из файла), как показано ниже:
TCHAR *pPrinterName = TEXT("HP Laser Jet 4");
TCHAR *pFileName = TEXT("c:\filename.prn");
HANDLE hPrinter = NULL;
DOC_INFO_1 docinfo;
FILE *pfile = NULL;
DWORD dwBytesWritten = 0L;
BYTE data[1024];
DWORD dwCount = 0L;
if (OpenPrinter(pPrinterName, &hPrinter, NULL))
{
docinfo.pDocName = TEXT("RAW Output Document Name");
docinfo.pOutputFile = NULL;
docinfo.pDatatype = TEXT("RAW");
DWORD dwPrtJob = StartDocPrinter(hPrinter, 1, (LPBYTE)&docinfo);
if (dwPrtJob > 0)
{
if (0 == _tfopen_s(&pfile, pFileName, TEXT("rb")))
{
while (!feof(pfile))
{
dwCount = (DWORD)fread(&data, 1, 1024, pfile);
WritePrinter(hPrinter, &data, dwCount, &dwBytesWritten);
}
fclose(pfile);
}
}
EndDocPrinter(hPrinter);
ClosePrinter(hPrinter);
}
Может быть, в этом коде есть ошибки.Я не проверяю это.Я просто вырезал его из одного моего старого проекта.
Таким же образом вы можете отправить файл (содержащий команды принтера - например, PCL / PJL для принтеров HP PCL5 / PCL6) на любой принтер / порт.