我知道如何简单地将文本文件打印到打印机:
(请参阅下面的代码块我的问题)
#include <stdio.h>
#include <stdlib.h>
int main ( void )
{
FILE * Printer = fopen("LPT1", "w");
FILE * FilePointer;
char str[256];
char buf[BUFSIZ];
FilePointer = fopen("sample.txt", "r");
if( !FilePointer )
{
printf("File does not exist\n");
return -1;
}
while( fgets ( buf, sizeof buf, FilePointer ) != NULL )
{
fprintf(Printer, "%s", buf);
}
printf("\nPrinting..\n");
fprintf(Printer, "\f");
getch();
return 0;
}
但我的问题是使用此技术将文本打印到打印机时出错.
如果用户当时没有有效或可用的打印机怎么办?我希望我的程序吐出类似的东西:“错误:打印机不存在!”.
有什么我可以做的吗?谢谢!
最佳答案 您可以检查打印机是否在线,但前提是您是否可以访问内核模式,是打印驱动程序还是Windows 95/98.
通常,打印机端口地址设置为0x378(并行端口的数据寄存器).向此添加一个(0x379)将为我们提供并行端口的状态寄存器的地址.状态寄存器(SELECT)的第4位告诉我们打印机是在线还是离线.如果设置了该位,则打印机处于联机状态
如果为0,则该位处于脱机状态.
它看起来像这样:
int status;
// get status register value at 0x379
status = _inp (0x379);
if (status & 0x10) // check bit 4
{
// printer online
}
else
{
// printer offline
}
这是该注册的另一个成员:
bit 1 : DCN
bit 3 : FAULT
bit 4 : SELECT
bit 5 : PAPER END
bit 6 : ACKNOWLEDGE
bit 7 : BUSY
它来自codeguru.但请注意,你应该更好地使用更高的界面,如WIN32中的打印机api(OpenPrinter(),WritePrinter()StarDocPrinter(),StartPagePrinter()等)