C++有什么接口可以获取打印机状态?
发布网友
发布时间:2022-07-14 06:06
我来回答
共2个回答
热心网友
时间:2023-09-18 01:56
下面是我用过的针式打印机状态测试函数。环境为:DOS, Turbo C 2.0 编译。
你所说的 USB,我不懂。家里使用过喷墨打印机,使用 USB 接口,明确标示:不支持 DOS。
C++ 语言,不懂。正想从 C 转到 C++。
int far dyhztcs ( ) /* 打印机状态测试 */
{
/* DOS.H 中定义的寄存器数据结构和共用体变量
struct WORDREGS {
unsigned int ax, bx, cx, dx, si, di, cflag, flags;
};
struct BYTEREGS {
unsigned char al, ah, bl, bh, cl, ch, dl, dh;
};
union REGS {
struct WORDREGS x;
struct BYTEREGS h;
};
使用 DOS.H 后,这部分可以不用。
*/
union REGS reg; /* 定义共用体变量 */
int dyjzt; /* 打印机状态 */
dyjzt = 0;
/* 功能号 2;取打印机状态 */
reg.h.ah = 2; /* 寄存器 AX 的高位 AH */
reg.h.al = 0; /* 寄存器 AX 的低位 AL */
reg.h.dh = 0; /* 寄存器 DX 的高位 DH */
reg.h.dl = 0; /* 寄存器 DX 的低位 DL */
int86 ( 0x17, & reg, & reg ); /* 调用 17 号中断 */
if ( ( reg.h.ah & 0x10 ) != 0 ) /* 选择的打印机 */
if ( ( reg.h.ah & 0x40 ) == 0 ) /* 确认;返回寄存器 AX 的 AH 第六位 */
dyjzt = 1; /* 就绪时为 0,而断电时为 1 */
if ( ( reg.h.ah & 0x80 ) == 0 ) /* 空闲 */
dyjzt = 0;
return ( dyjzt );
}追问很棒,但不是我需要的
追答我没有老师,完全是看书自学的。你可以去问老师。其实,针式打印机并没有过时,也不可能过时。银行打印存折,是针式打印机;企业打印税务*,是针式打印机;快递公司打印的投递单,多页复印,必须使用针式打印机。我知道,不是你所希望的答案。但是,由于这是公众交流的场所,也许,看到你的问题的人,也有可能希望知道,对于针式打印机,是如何解决这个问题的。所以,就把我过去使用过的程序写在上面。希望对于那一部分人,有所帮助。
热心网友
时间:2023-09-18 01:56
给个API给你 EnumPrit碃处百肺知镀版僧保吉ers, PRINTER_INFO_5结构体;其余的自己去发掘。利用PRINTER_INFO_5结构体可以得到打印机相关信息、状态追问这个我知道啊,可是没有找到提供打印机状态的接口啊,那个status指的是打印的状态,并不是我想要的打印机联机状态呀。 百度bug真多, 你的回复现在已经编程乱码了