QuickRep能否获得当前打印机的状态?

scoredhigh 2013-05-21 02:18:20
QuickRep能否获得当前打印机的状态?
比如是否正常连接了打印机或者是网络打印机?
如果连接了打印机,打印机处于什么状态?就绪,正在打印,打印完毕……?
...全文
107 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
scoredhigh 2013-05-21
  • 打赏
  • 举报
回复
好吧,自己查帮助查到OpenPrinter这个函数了,貌似可以得到句柄了
scoredhigh 2013-05-21
  • 打赏
  • 举报
回复
AnsiString strName[20];//存储名称 AnsiString strDefaultPrinter; DWORD dwPrinters; //获取所有打印机名 void GetPrintName(void) { DWORD dwSize; BYTE *pBuffer; //PRINTER_ENUM_LOCAL:本地打印机 //PRINTER_ENUM_CONNECTIONS:网络打印机 EnumPrinters(PRINTER_ENUM_LOCAL | PRINTER_ENUM_CONNECTIONS, NULL, 5, NULL, 0, &dwSize, &dwPrinters); pBuffer = new BYTE[dwSize]; EnumPrinters(PRINTER_ENUM_LOCAL | PRINTER_ENUM_CONNECTIONS, NULL, 5, pBuffer, dwSize, &dwSize, &dwPrinters); if (dwPrinters!=0) { PRINTER_INFO_5* pPrnInfo=(PRINTER_INFO_5 *)pBuffer; for (DWORD i=0; i< dwPrinters; i++) { //pPrnInfo-> strName[i] = pPrnInfo->pPrinterName; pPrnInfo++; } } delete[] pBuffer; } //获取默认打印机 bool OpenDefaultPrinter() { bool bRet = FALSE; DWORD dwSize = 0; if(!GetDefaultPrinter(NULL, &dwSize) && GetLastError()== ERROR_INSUFFICIENT_BUFFER) { char *szPrinter = new char[dwSize+1]; if(GetDefaultPrinter(szPrinter, &dwSize)) { strDefaultPrinter = szPrinter; bRet = TRUE; } delete [] szPrinter; } return bRet; } 这两个函数验证都没有问题,可以获取当前所有的打印机名称和默认打印机,但是我怎么通过这些信息来获取打印机的状态呢? 下面的代码获取打印机句柄是不是对的? HDC hdc; hdc = CreateDC(NULL, strDefaultPrinter.c_str(), NULL, NULL);
scoredhigh 2013-05-21
  • 打赏
  • 举报
回复
引用 1 楼 xjq2003 的回复:
[quote=引用 楼主 scoredhigh 的回复:] QuickRep能否获得当前打印机的状态? 比如是否正常连接了打印机或者是网络打印机? 如果连接了打印机,打印机处于什么状态?就绪,正在打印,打印完毕……?
可以自己编程检测打印机状态


[/quote]哦,那打印机的端口检测怎么写啊,以我的猜想,应该是获取硬件的端口值,然后判断状态,但是没资料,不知道怎么写啊
xjq2003 2013-05-21
  • 打赏
  • 举报
回复
引用 楼主 scoredhigh 的回复:
QuickRep能否获得当前打印机的状态? 比如是否正常连接了打印机或者是网络打印机? 如果连接了打印机,打印机处于什么状态?就绪,正在打印,打印完毕……?
可以自己编程检测打印机状态


604

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder VCL组件使用和开发
社区管理员
  • VCL组件使用和开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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