如何判断打印机是否连接在机器上,不用

zdwrabbit 2003-08-25 09:34:00
望写出具体编码,在windows环境下。
...全文
128 7 打赏 收藏 转发到动态 举报
写回复
用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),也可以试试。

13,824

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧