プリンタがオンラインかどうかを確認したい。このために、OpenPrinterでプリンターハンドルを取得します。次に、GetPrinter()を使用してPRINTER_INFO_6でPRINTER_STATUS_OFFLINEを使用します。結果は常に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;
}