打印机状态问题。(100分)

  • 主题发起人 主题发起人 hikehilter
  • 开始时间 开始时间
H

hikehilter

Unregistered / Unconfirmed
GUEST, unregistred user!
帮忙看看下面的程序,无法取得打印机的正确状态。。。请大侠们指正一下!。
unit Frmmain;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,Printers,WinSpool;

type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);


private
{ Private declarations }
public
{ Public declarations }
function GetPrinter(Index:integer):Cardinal;
function GetPrinterStatues(Index:Cardinal):string;

end;


var
Form1: TForm1;

implementation

{$R *.dfm}

//·µ»Ø´òÓ¡»úµ±Ç°µÄ״̬
//²ÎÊý˵Ã÷£º
//ÐÞ¸Äʱ¼ä£º
//×÷Õߣº
function TForm1.GetPrinter(Index:integer):Cardinal;
var
Device, Driver, Port: array[0..511] of Char;
hDevMode: THandle;
hPrinter: THandle;
pInfo2: ^TPrinterInfo2;
Size: DWORD;
begin
Printer.PrinterIndex := Index;
Printer.GetPrinter(Device, Driver, Port, hDevMode);
Win32Check(OpenPrinter(Device, hPrinter, Nil));
try
WinSpool.GetPrinter(hPrinter, 2, pInfo2, 0, @size);
GetMem(pInfo2, size);
try
if Win32Check(WinSpool.GetPrinter(hPrinter, 2, pInfo2, Size, @size)) then
begin
//´Ë¶ÎΪ²âÊÔ´úÂë//
//Test Star//
memo1.Lines.Add('First');
Memo1.Lines.Add(pinfo2.pServerName);
memo1.Lines.Add(pinfo2.pPrinterName );
memo1.Lines.Add(pinfo2.pShareName );
memo1.Lines.Add('------------------------');
//Test End
Result:=pinfo2.Status;
end;
finally
FreeMem(pInfo2);
end;
finally
ClosePrinter(hPrinter);
end;
end;

//·µ»Ø´òÓ¡»ú״̬µÄÓ¢ÎÄ×¢ÊÍ
//²ÎÊý˵Ã÷£º
//ÐÞ¸Äʱ¼ä£º
//×÷Õߣº

function TForm1.GetPrinterStatues(Index:Cardinal):string;
begin
//δ×öNTÓëWINDOWS 95µÄ״̬Çø·Ö
Case index of
PRINTER_STATUS_PAUSED : Result:='Printer PAUSED';
PRINTER_STATUS_PENDING_DELETION : Result:='Printer PENDING DELETION';
PRINTER_STATUS_BUSY : Result:='Printer BUSY';
PRINTER_STATUS_DOOR_OPEN : Result:='Printer DOOR OPEN';
PRINTER_STATUS_ERROR : Result:='Printer ERROR';
PRINTER_STATUS_INITIALIZING : Result:='Printer INITIALIZING';
PRINTER_STATUS_IO_ACTIVE : Result:='Printer IO ACTIVE';
PRINTER_STATUS_MANUAL_FEED : Result:='Printer MANUAL FEED';
PRINTER_STATUS_NO_TONER : Result:='Printer NO TONER';
PRINTER_STATUS_NOT_AVAILABLE : Result:='Printer NOT AVAILABLE';
PRINTER_STATUS_OFFLINE : Result:='Printer OFFLINE';
PRINTER_STATUS_OUT_OF_MEMORY : Result:='Printer OUT OF MEMORY';
PRINTER_STATUS_OUTPUT_BIN_FULL : Result:='Printer OUTPUT BIN FULL';
PRINTER_STATUS_PAGE_PUNT : Result:='Printer PAGE PUNT';
PRINTER_STATUS_PAPER_JAM : Result:='Printer PAPER JAM';
PRINTER_STATUS_PAPER_OUT : Result:='Printer PAPER OUT';
PRINTER_STATUS_PAPER_PROBLEM : Result:='Printer PAPER PROBLEM';
PRINTER_STATUS_PRINTING : Result:='Printer PRINTING';
PRINTER_STATUS_PROCESSING : Result:='Printer PROCESSING';
PRINTER_STATUS_TONER_LOW : Result:='Printer TONER LOW';
PRINTER_STATUS_USER_INTERVENTION :Result:='Printer USER INTERVENTION';
PRINTER_STATUS_WAITING : Result:='Printer WAITING';
PRINTER_STATUS_WARMING_UP : Result:='Printer WARMING UP';
else
result:='Cant Get Printer status!,Return Printer Stat ID:'+Inttostr(Index);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Lines.Clear;
Memo1.Lines.Add (GetPrinterStatues(GetPrinter(0)));
Memo1.Lines.Add(GetPrinterStatues(GetPrinter(1)));
Memo1.Lines.Add(GetPrinterStatues(GetPrinter(-1)));
Memo1.Lines.Add('#####################################');
end;
end.
 
后退
顶部