首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法从LPT1获取端口句柄

无法从LPT1获取端口句柄
EN

Stack Overflow用户
提问于 2011-04-01 11:24:53
回答 2查看 1.4K关注 0票数 0

我正在写一个从文件中读取并发送到打印机进行打印的程序。

我将"HP激光喷气机4“设为默认打印机,并在"HP激光喷气机4”的打印机属性中勾选了"LPT1“。后台打印程序也在运行(Windows 7)。

问题是hPort总是返回INVALID_HANDLE_VALUE

我没有真正的打印机。这是一个问题吗?

代码语言:javascript
复制
#include "stdafx.h"
#include <windows.h>

int main()
{
    HANDLE hPort = CreateFile(_T("LPT1:"), GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
    if(hPort != INVALID_HANDLE_VALUE) {
        printf("success");
    } else {
        printf("%i", GetLastError());
    }    
    return 0;
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-01 14:48:37

为什么要尝试开放LPT端口。这对你来说是真的需要吗?如果在操作系统中安装了打印机(例如HP激光喷气机4或任何其他打印机),并且您希望不使用打印机驱动程序直接向其写入数据,则可以按如下所示写入数据(例如,从文件中):

代码语言:javascript
复制
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);
}

也许,这段代码有一些错误。我不是在测试它。我只是简单地把它从我的一个旧项目中切下来。

以同样的方式,您可以将文件(其中包含打印机命令-例如,用于HP PCL5/PCL6打印机的PCL/PJL )发送到任何打印机/端口。

票数 3
EN

Stack Overflow用户

发布于 2011-04-01 15:45:03

问题是hPort总是返回INVALID_HANDLE_VALUE。

我没有真正的打印机。这是一个问题吗?

如果你没有一个真正的LPT1 (LPT2...),这是一个问题。端口,但未安装打印机设备或打印机驱动程序。

如果LPT1端口确实存在,请检查设备管理器或PC硬件。

对于真正呈现的LPT1端口,您的代码必须返回“成功”

如果您的PC中没有显示LPT1,则代码( GetLastError() )必须返回2( ERROR_FILE_NOT_FOUND )。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5508814

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档