小编PTT*_*PTT的帖子

检查安装的网络打印机是否在线

我想检查打印机是否在线.为此,我获得了OpenPrinter的打印机句柄.然后我想在PRINTER_INFO_6中使用PRINTER_STATUS_OFFLINE和GetPrinter().结果总是0?

如何获取打印机的脱机状态?

我用的代码.

bool IsPrinterOnline(wstring strPrinterFriendlyName)
{
  HANDLE hPrinter ;
  if ( OpenPrinter(const_cast<LPWSTR>(strPrinterFriendlyName.c_str()), &hPrinter, NULL) == 0 )
  {    
    /*OpenPrinter call failed*/
    return false;
  }

  DWORD dwBufsize = 0;
  PRINTER_INFO_6* pinfo = 0;
  GetPrinter(hPrinter, 6,(LPBYTE)pinfo, dwBufsize, &dwBufsize); //Get dwBufsize

  PRINTER_INFO_6* pinfo6 = (PRINTER_INFO_6*)malloc(dwBufsize); //Allocate with dwBufsize
  GetPrinter(hPrinter, 6,(LPBYTE)pinfo6, dwBufsize, &dwBufsize);

  DWORD dwStatus = pinfo6->dwStatus; //always returns 0

  if (dwStatus == PRINTER_STATUS_OFFLINE)
  {
    free(pinfo6); 
    ClosePrinter( hPrinter );
    return false;
  }

  free(pinfo6); 
  ClosePrinter( hPrinter );
  return true;
}
Run Code Online (Sandbox Code Playgroud)

c++ network-printers

6
推荐指数
1
解决办法
2444
查看次数

标签 统计

c++ ×1

network-printers ×1