怎样判断打印机是否联机?(100分)

  • 主题发起人 主题发起人 z_w_q
  • 开始时间 开始时间
Z

z_w_q

Unregistered / Unconfirmed
GUEST, unregistred user!
98下可以通过读打印机并口,获得打印机是否联机,但在NT和2000如何获得?
 
BOOL GetPrinter(
HANDLE hPrinter, // handle to printer of interest
DWORD Level, // version of printer info data structure
LPBYTE pPrinter, // pointer to array of bytes that receives printer info. structure
DWORD cbBuf, // size, in bytes, of array of bytes
LPDWORD pcbNeeded // pointer to variable with count of bytes retrieved (or required)
);
 
Z_W_Q 想问一下:在98下如何判断是否联机?
 
function PrinterStatus : integer;
asm
mov ah, 2 // function 2 - returns status of port
mov dx, 0 // lpt1 = 0, lpt2 = 1 etc
int $17 // status in ah
mov al, ah
and eax, $FF // status now in eax with top 24 bits cleared
end;

const
PrinterCodes : array [0..7] of string =
('printer timed-out',
'unused',
'unused',
'I/O error',
'printer selected',
'out of paper',
'printer acknowedgment',
'printer not busy');

procedure TForm1.Button1Click(Sender: TObject);
var
L,P : integer;
begin

P := PrinterStatus;
//status of printer in P
ListBox1.Clear;
for L := 0 to 7do

if P and (1 shl L) <> 0 then

ListBox1.Items.Add (PrinterCodes [L]);
end;
 
iie:
您好。
没用过getprinter,请问其中的值怎样给帮助写的不大清楚,如果您有具体例子,
请传给我,不胜感激
wulianmin:
您好。
您的代码我调不通,不知我该注意些什么才能调通您的程序。(我实在对汇编不感冒)
 
多人接受答案了。
 
后退
顶部