我想檢查打印機是否在線。爲此,我使用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;
}
這兩個'GetPrinter'實際上是否成功? – Jay
第二個GetPrinter成功(返回非零)。但是狀態總是爲零。 –