程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 如何使用GetPrinter

如何使用GetPrinter

編輯:Delphi

我想在任何時候查詢打印的狀態,包括是否聯機、缺紙;怎麼查詢?
我用GetPrinter,查到的狀態總是差半拍

---------------------------------------------------------------

在VC++ 6.0中實現與打印機相關的功能可以通過調用Win32 Spooler庫中的函數實現。這些函數的定義在Winspool.h中,這些函數 的參考手冊可以見MSDN中 Platform SDK->Graphics and Multimedia Services->Windows GDI->Printing and Print Spooler。 以下舉例說明。假設現在有一台網絡打印機,URL是"\MyServerNameSharedPrinterName"。如果需要查詢這台打印機是否 缺紙,可以通過以下函數實現:

BOOL isOutOfPaper(){
HANDLE hPrinter=0;
DWORD dwNeeded=0;
PRINTER_INFO_2* pPrinterInfo= (PRINTER_INFO_2 *)malloc( 0 );

::OpenPrinter("\\MyServerName\SharedPrinterName",&hPrinter,NULL);
if(!::GetPrinter(hPrinter,2,(LPBYTE)pPrinterInfo,0,&dwNeeded)){
pPrinterInfo= (PRINTER_INFO_2 *)malloc( dwNeeded );
::GetPrinter(hPrinter,2,(LPBYTE)pPrinterInfo,dwNeeded,&dwNeeded);
}
::ClosePrinter(hPrinter);

if(pPrinterInfo->Status==PRINTER_STATUS_PAPER_OUT){
free(pPrinterInfo);
return TRUE;
}else{
free(pPrinterInfo);
return FALSE;
}
}

其中OpenPrinter()用於獲得一個打印機句柄,GetPrinter()用於獲得打印機相關信息。關於Win32 Spooler的更詳細的功 能和使用方法請參考前面提到的MSDN中的有關章節。關於Win32 Spooler中函數調用需要注意的地方請參考 http://support.microsoft.com/support/kb/articles/Q158/8/28.asp。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved