社区
C++ Builder
帖子详情
如何判断打印机是否连接在机器上,不用
zdwrabbit
2003-08-25 09:34:00
望写出具体编码,在windows环境下。
...全文
128
7
打赏
收藏
如何判断打印机是否连接在机器上,不用<bios.h>
望写出具体编码,在windows环境下。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zdwrabbit
2003-08-25
打赏
举报
回复
不好意思啊PRINTER_INFO_2* ppi2 这个值怎么显示啊??
是那种类型的啊???
我没装打印机驱动可以吗??
jishiping
2003-08-25
打赏
举报
回复
不对,上面的代码有问题。应该是:
DWORD dwSize;
BYTE buf[4096];
HANDLE hPrinter;
// 下面的PrinterName是打印机的名字。如果你指的是缺省的打印机,可以用
// Printer()->Printers->Names[Printer()->PrinterIndex].c_str() 来替代
if (OpenPrinter(PrinterName,&hPrinter,NULL)) {
if (GetPrinter(hPrinter,2,buf,sizeof(buf),&dwSize)) {
PRINTER_INFO_2* ppi2 = (PRINTER_INFO_2*)buf;
//这儿的 ppi2->Status 就是打印机的状态,比如 忙、缺纸、卡纸等等。
//你可以实际测试一下(拔掉打印机连线),看看这儿的值究竟是多少
}
ClosePrinter(hPrinter);
}
jishiping
2003-08-25
打赏
举报
回复
&pi2 前面加 (BYTE*) 就可以了。就是:
if (GetPrinter(hPrinter,2,(BYTE*)&pi2,sizeof(pi2),&dwSize)) {
jishiping
2003-08-25
打赏
举报
回复
&pi2 前面加 (BYTE*) 就可以了。就是:
if (GetPrinter(hPrinter,2,(BYTE*)&pi2,sizeof(pi2),&dwSize)) {
zdwrabbit
2003-08-25
打赏
举报
回复
第一个我试过了,不行。我是不装驱动用printf调用的,因为是超市小票的打印机。
第二个不行啊。
错误如下:
[C++ Error] Unit1.cpp(26): E2034 Cannot convert '_PRINTER_INFO_2A *' to 'unsigned char *'
[C++ Error] Unit1.cpp(26): E2342 Type mismatch in parameter 'pPrinter' (wanted 'unsigned char *', got '_PRINTER_INFO_2A *')
jishiping
2003-08-25
打赏
举报
回复
DWORD dwSize;
HANDLE hPrinter;
PRINTER_INFO_2 pi2;
// 下面的PrinterName是打印机的名字。如果你指的是缺省的打印机,可以用
// Printer()->Printers->Names[Printer()->PrinterIndex].c_str() 来替代
if (OpenPrinter(PrinterName,&hPrinter,NULL)) {
if (GetPrinter(hPrinter,2,&pi2,sizeof(pi2),&dwSize)) {
//这儿的 pi2.Status 就是打印机的状态,比如 忙、缺纸、卡纸等等。
//你可以实际测试一下(拔掉打印机连线),看看这儿的值究竟是多少
}
ClosePrinter(hPrinter);
}
hongliqiu
2003-08-25
打赏
举报
回复
TPrinter *Prntr = Printer();
....
TStringList *lt=new TStringList();
lt->Clear();
lt->Assign(Prntr->Printers);
if (lt->Count<=0)
{
Application->MessageBoxA("没有检测到打印机设备,不能够进行打印。","提示",0);
return;
}
另外还有个API函数AddPrinterConnection(cstrPrnName),也可以试试。
你必须知道的495个C语言问题(PDF)
5.5 在使用非全零作为空指针内部表达的
机器
上, NULL 是如何定义 的? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 5.6 如果NULL 定义成#define NULL ((char *)0) 难道不就可以向函 数...
C语言程序设计标准教程
#include<stdio.h> main() { FILE *fp; char ch; if((fp=fopen("e10_1.c","rt"))==NULL) { printf("Cannot open file strike any key exit!"); getch(); exit(1); } ch=fgetc(fp); while (ch!=EOF) { putchar(ch); ...
C语言FAQ 常见问题列表
o 6.8 但是如果 NULL 的值改变了, 比如在使用非零内部空指针的
机器
上, 难道用 NULL (而不是 0) 不是更好吗? o 6.9 用预定义宏 #define Nullptr(type) (type *)0 帮助创建正确类型的空指针。 o 6.10 这有点奇怪。...
你必须知道的495个C语言问题
5.10但是如果NULL的值改变了,比如在使用非零内部空指针的
机器
上,用NULL(而不是0) 不是更好吗? 5.11 我曾经使用过一个编译器,不使用NULL就不能编译。 5.12 我用预处理宏#defineNullptr(type)(type*)0帮助...
《你必须知道的495个C语言问题》
5.10 但是如果NULL的值改变了,比如在使用非零内部空指针的
机器
上,用NULL(而不是0) 不是更好吗? 58 5.11 我曾经使用过一个编译器,不使用NULL就不能编译。 58 5.12 我用预处理宏#define Nullptr(type)(type...
C++ Builder
13,824
社区成员
102,679
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章