نمایش نتایج 1 تا 4 از 4

نام تاپیک: چطور آماده بودن چاپگر رو چک کنم؟

  1. #1

    چطور آماده بودن چاپگر رو چک کنم؟

    سلام دوستان
    خسته نباشید ( البته میدونم هرکی با دلفی کار میکنه خسته نمیشه )
    میشه بفرمایید دستور چک کردن آماده بودن چاپگر چیه؟
    متشکرم

  2. #2
    با سلام خدمت دوست عزیز.
    هر چی خودم فکر کردم نتونستم بفهمم که چطوری میشه اماده بودن پرینتر رو تست کنم البته اگر منظورت روشن بودن پرینتره.
    برای اینکه سوالت بیجواب نمونه دست بدامن اینتر نت شدم و کد زیر رو برات فرستادم: (البته داغ داغ هست .تست نشده)

    unit ps1; 

    interface

    uses
    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
    StdCtrls, printers;

    type
    TForm1 = class(TForm)
    Button1: TButton;
    ListBox1: TListBox;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    private
    public
    end;

    var
    Form1: TForm1;

    implementation

    {$R *.DFM}

    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;
    ListBox1.Clear;
    for L := 0 to 7 do
    if P and (1 shl L) <> 0 then
    ListBox1.Items.Add (PrinterCodes [L]);
    end;

    end.


    موفق باشی. :)

  3. #3
    سلام
    ببخشید باز هم یک چیزی برات پیداکردم :

    function TestPrinterStatus(LPTPort: word): byte; 
    var
    Status: byte;
    CheckLPT: word;
    begin
    Status := 0;
    if (LPTPort >= 1) and (LPTPort <= 3) then
    begin
    CheckLPT := LPTPort -1;
    asm
    mov dx, CheckLPT;
    mov al, 0;
    mov ah, 2;
    int 17h;
    mov &Status, ah;
    end;
    end;
    Result := Status;
    end;
    Pass in the LPT port number you want to check & get the following back:
    01h - Timeout
    08h - I/O Error
    10h - Printer selected
    20h - Out of paper
    40h - Printer acknowledgement
    80h - Printer not busy (0 if busy)


    موفق باشی. :)

  4. #4
    بنیان گذار Barnamenevis آواتار مهدی کرامتی
    تاریخ عضویت
    اسفند 1381
    محل زندگی
    کرج، گلشهر
    سن
    46
    پست
    6,379
    جالب بود!

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •