線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1207
推到 Plurk!
推到 Facebook!

如果我要偵測我的電腦是否有送資料到印表機

尚未結案
jiannrong
一般會員


發表:58
回覆:36
積分:18
註冊:2002-05-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-02-25 16:07:11 IP:140.109.xxx.xxx 未訂閱
請教一下 如果我要偵測我的電腦是否有送資料到印表機 請教一下 我該如何寫呢 謝謝
jackkcg
站務副站長


發表:891
回覆:1050
積分:848
註冊:2002-03-23

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-02-25 16:09:38 IP:61.221.xxx.xxx 未訂閱
修改成為共同的temp檔位置阿 這樣你可以試市 不過真實離線之狀況 你需考慮喔 ********************************************************* 哈哈&兵燹 最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好 Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知 K.表Knowlege 知識,就是本站的標語:Open our mind to make knowledge together! 希望能大家敞開心胸,將知識寶庫結合一起
------
**********************************************************
哈哈&兵燹
最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好

Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知
K.表Knowlege 知識,就是本站的標語:Open our mind
jiannrong
一般會員


發表:58
回覆:36
積分:18
註冊:2002-05-09

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-03-03 01:18:16 IP:61.70.xxx.xxx 未訂閱
請教副站長 您所說的 我不太了解 可否給我一些提示呢 謝謝
jackkcg
站務副站長


發表:891
回覆:1050
積分:848
註冊:2002-03-23

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-03-03 01:44:47 IP:61.64.xxx.xxx 未訂閱
我不知道你是Lan下的分享 印表機 控制 如果是 1 當user要使用分享印表機 時 需透過你的ap來登入才能列印此時而外的判斷還有不少 2 此時開始由server偵測 印表機的暫存檔 紙張數量 3 由於這不是自己寫的 虛擬印表機 但是我們可以使用分享控管機制來達成 4 印表機之暫存檔位置可由reg更改 放置我們信認的server不一定是 本身主機上 以免當機 不過它也會比較慢 將所有的Lan的印表機暫存檔位置 修改為server上 此時再由常駐程式偵測 如此也可以知道 是那台電腦之需求 不過此法是否能知道張數可要自己試看看 對了 別說 請教副站長 因為庵不會寫程式 庵只會騙ㄘ騙喝 這個不會與那個也不會 哈哈哈 粉好 【BCB】【問題】請問:如何在BCB中得知印表機 Spool 中有多少 Jobs 還沒列印 http://delphi.ktop.com.tw/topic.php?topic_id=23801 印表機中斷 int 17H 有哪些參數 http://delphi.ktop.com.tw/topic.php?topic_id=18968 【問題】請問 用 QuickReport 的報表分送到不同印表機 http://delphi.ktop.com.tw/topic.php?topic_id=25216 【問題】如何讀printer port傳進來的資料 http://delphi.ktop.com.tw/topic.php?topic_id=21666 【BCB】【問題】並列埠控制 http://delphi.ktop.com.tw/topic.php?topic_id=23183 一個 Regedit.exe登錄檔 資料網站 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=26255 http://www.winguides.com/registry/ 你也可以去此站找找 reg的資料喔 其他的你可能要自己找一下ktop的報表區與硬體區了 祝你好運 如果可以的話可以 分享你的部份資料 那其他版主才能更幫你試試 ********************************************************* 哈哈&兵燹 最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好 Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知 K.表Knowlege 知識,就是本站的標語:Open our mind to make knowledge together! 希望能大家敞開心胸,將知識寶庫結合一起
------
**********************************************************
哈哈&兵燹
最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好

Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知
K.表Knowlege 知識,就是本站的標語:Open our mind
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-03-03 08:34:01 IP:202.39.xxx.xxx 未訂閱
參考 Enumerate the printer jobs: http://www.q3.nu/trucomania/truco.cgi?514&ing     轉貼如下:
procedure TForm1.Button1Click(Sender: TObject);
   Function AbreImpresoraPorDefecto: THandle;
   const
     Defaults:
       TPrinterDefaults = ( pDatatype : nil;
                            pDevMode  : nil;
                            DesiredAccess : PRINTER_ACCESS_USE or PRINTER_ACCESS_ADMINISTER );
   var
     Device, Driver, Port : array[0..255] of char;
     hDeviceMode: THandle;
   begin
     Printer.GetPrinter(Device, Driver, Port, hDeviceMode);
     if not OpenPrinter(@Device, Result, @Defaults) then RaiseLastWin32Error;
   end;
   
 type
   TTrabajos = array [0..9000] of JOB_INFO_1;
   PTrabajos = ^TTrabajos;
   
 var
     MangoPrinter      : Thandle;
     PTrabajo          : PTrabajos;
     BytesRecibidos    : DWord;
     TrabajosRecibidos : DWord;
     i                 : integer;
 begin
    MangoPrinter:=AbreImpresoraPorDefecto;
    try
      {Hallamos cuantos bytes ocupara la enumeracion de trabajos}
      EnumJobs( MangoPrinter,0,9000,1,Nil,0,
                BytesRecibidos,
                TrabajosRecibidos );          {Reservamos memoria para la respuesta}
      PTrabajo := AllocMem( BytesRecibidos );
      try
        {Enumeramos los trabajos}
        if NOT EnumJobs( MangoPrinter,
                  0,           //Empezando por el primero
                  9000,        //Numero de jobs a enumerar
                  1,
                  PTrabajo,
                  BytesRecibidos,
                  BytesRecibidos,
                  TrabajosRecibidos) then RaiseLastWin32Error;            Memo1.Lines.Clear;
        Memo1.Lines.Add('Trabajos: ' IntToStr(TrabajosRecibidos) );            {Llenamos el Memo1 con datos de los trabajos}
        for i:= 0 to Pred(TrabajosRecibidos) do
          memo1.lines.add( PTrabajo^[i].pDocument     ' - ' 
                           PTrabajo^[i].pMachineName  ' - ' 
                           IntToStr( PTrabajo^[i].TotalPages )
                          );
      finally
        {Liberamos la memoria usada en la respuesta}
        FreeMem( PTrabajo );
      end;
    finally
      {Cerramos la impresora}
      ClosePrinter(MangoPrinter);
    end;
 end;
系統時間:2024-04-28 6:27:33
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!