无法从 LPT1 获取端口句柄
我正在编写一个从文件读取并发送到打印机进行打印的程序。
我将“HP Laser Jet 4”设置为默认打印机,并在“HP Laser Jet 4”的打印机属性中选中“LPT1”。后台打印程序也在运行 (Windows 7)。
问题是 hPort 总是返回 INVALID_HANDLE_VALUE
。
我没有真正的打印机。有问题吗?
#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;
}
I'm writing a program which reads from file and send to printer to print.
I set "HP Laser Jet 4" as default printer and checked "LPT1" in printer properties of "HP Laser Jet 4". Print spooler is also running (Windows 7).
The problem is hPort always returns INVALID_HANDLE_VALUE
.
I don't have a real printer. Is it a problem?
#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;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
为什么你尝试打开 LPT 端口。这对你来说真的有必要吗?
如果操作系统中安装了打印机(例如 HP Laser Jet 4 或任何其他打印机),并且您想直接写入而不使用打印机驱动程序,则可以写入数据(例如,从文件),如下所示:
可能,此代码有一些错误。我不测试它。我只是从我的一个旧项目中剪掉了它。
以同样的方式,您可以将文件(包含打印机命令 - 例如,用于 HP PCL5/PCL6 打印机的 PCL/PJL)发送到任何打印机/端口。
Why you try for open LPT port. This is realy need for you?
If printer (e.g. HP Laser Jet 4 or any other) installed in OS and you want to write to it directly without using printer driver, you can write data (from file, for example) as showed bellow:
May be, this code has some errors. I am do not test it. I am simply cut it from one my old project.
In same manner you can send file (that contains printer commands - PCL/PJL for HP PCL5/PCL6 printers, for example) to any printer/port.
如果您没有真正的 LPT1 (LPT2...) 端口,但未安装打印机设备或打印机驱动程序,则这是一个问题。
检查设备管理器或 PC 硬件,LPT1 端口是否确实存在。
对于真正出现的 LPT1 端口,您的代码必须返回“成功”。
如果 LPT1 没有真正出现在您的 PC 中,您的代码 ( GetLastError() ) 必须返回 2 ( ERROR_FILE_NOT_FOUND )。
This is a problem, if you do not have a real LPT1 (LPT2...) ports, but not a printer device or printer driver installed.
Check in device manager or PC-hardware, if LPT1 port is really present.
For really presented LPT1 port, you code must return "success"
If LPT1 does not really presented in you PC you code ( GetLastError() ) must return 2 ( ERROR_FILE_NOT_FOUND ).