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

用程式抓取Client 端印表機的問題

缺席
alan_shie119
一般會員


發表:11
回覆:17
積分:5
註冊:2010-03-31

發送簡訊給我
#1 引用回覆 回覆 發表時間:2010-04-22 14:05:26 IP:60.251.xxx.xxx 訂閱
請教各位前輩:
我寫了一個抓取印表機名稱的測試程式,因為印表機是透過Print Server 共享出來的,所以抓到的是Print Server 所共享出來的印表機名稱,若我將程式丟到另一台Server的IIS上執行,也同樣是透過Print Server 共享,所以抓到的也是Print Server 所共享出來的印表機名稱。
問題來了:
假設Server 是放在台北,而台中的辦公室透過網頁搜尋資料要列印時,所抓到的印表機一樣是台北的Print Server所共享出來的印表機名稱,那列印時不就會在台北列印了嗎?想請問是否有辦法在按下列印時抓到的印表機名稱是台中辦公室的印表機名稱呢?

//下列為抓取印表機名稱的程式碼


procedure TIWForm1.IWButton1Click(Sender: TObject);
var i: Integer;
begin
RPDev.State := dsIC;
for i := 0 to Printer.Printers.Count - 1 do
IWMemo1.Lines.Add(Printer.Printers[i]) //所有印表機名稱
end;




st33chen
尊榮會員


發表:15
回覆:591
積分:1201
註冊:2005-09-30

發送簡訊給我
#2 引用回覆 回覆 發表時間:2010-04-22 16:12:59 IP:114.32.xxx.xxx 未訂閱
您好,

我想方法有三

1. 用 TREGISTRY 相關指令抓
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Print\Printers\印表機名稱\Port
的值, 若是 ip address 型, 由 ip address 判斷在台北或台中, 依需要顯示或不顯示.
(其中, 印表機名稱 是您例中的 Printer.Printers[i])

2. 將台中或台北的字眼加到印表機名稱設定中, 就可以由印表機名稱判斷機器在哪裡

3. 用一個 table (不管是本文檔或db) 存印表機名稱及地點 的資料,
這樣就可以用 印表機名稱 抓到 地點 再判斷

請試一下, 我沒實測




===================引 用 alan_shie119 文 章===================
請教各位前輩:
我寫了一個抓取印表機名稱的測試程式,因為印表機是透過Print Server 共享出來的,所以抓到的是Print Server 所共享出來的印表機名稱,若我將程式丟到另一台Server的IIS上執行,也同樣是透過Print Server 共享,所以抓到的也是Print Server 所共享出來的印表機名稱。
問題來了:
假設Server 是放在台北,而台中的辦公室透過網頁搜尋資料要列印時,所抓到的印表機一樣是台北的Print Server所共享出來的印表機名稱,那列印時不就會在台北列印了嗎?想請問是否有辦法在按下列印時抓到的印表機名稱是台中辦公室的印表機名稱呢?

//下列為抓取印表機名稱的程式碼


procedure TIWForm1.IWButton1Click(Sender: TObject);
var i: Integer;
begin
RPDev.State := dsIC;
for i := 0 to Printer.Printers.Count - 1 do
IWMemo1.Lines.Add(Printer.Printers[i]) //所有印表機名稱
end;




------
IS IT WHAT IT IS
我是 李慕白 請倒著唸.
又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦);
都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲.
alan_shie119
一般會員


發表:11
回覆:17
積分:5
註冊:2010-03-31

發送簡訊給我
#3 引用回覆 回覆 發表時間:2010-04-28 13:17:45 IP:60.251.xxx.xxx 訂閱

st33chen前輩您好:
感謝您的回覆,但是目前所遇到的狀況如下:
1.我是在delphi 2010 VCL for the Web 測試,目前好像是不能直接用TRegistry ,聽說好像要包成ActiveX然後在Browser 內用 javaScript 去操控才行,因為沒寫過ActiveX所以也不知道,需再研究看看。
2.因為是將程式轉dll 放到IIS上面(Web Server在台北),Print Server 也是在台北,所以目前抓到的都是台北的印表機,即使台中透過Intra net連到台北開啟網頁,所抓到的印表機也是台北的印表機,我在想以前是因為程式的執行檔是安裝在每個Client端,所以可以抓到Client端的印表機資訊,現在因為是要放到Server上,所以程式也是抓他所在的電腦上的印表機資訊(也就是Server上的資訊)
3.若上述因素成立,那不管我從哪裡開啟網頁,都只能抓到IIS(Web Server)所在的印表機,若是這樣那台北辦公室以外的區網該怎麼列印呢?
有沒有可能直接指定印表機IP位置,又該如何做呢?~以上~謝謝~

===================引 用 st33chen 文 章===================
您好,

我想方法有三

1. 用 TREGISTRY 相關指令抓
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Print\Printers\印表機名稱\Port
的值, 若是 ip address 型, 由 ip address 判斷在台北或台中, 依需要顯示或不顯示.
(其中, 印表機名稱 是您例中的 Printer.Printers[i])

2. 將台中或台北的字眼加到印表機名稱設定中, 就可以由印表機名稱判斷機器在哪裡

3. 用一個 table?(不管是本文檔或db) 存印表機名稱及地點?的資料,
這樣就可以用??印表機名稱 抓到 地點 再判斷

請試一下, 我沒實測




===================引 用 alan_shie119 文 章===================
請教各位前輩:
我寫了一個抓取印表機名稱的測試程式,因為印表機是透過Print Server 共享出來的,所以抓到的是Print Server 所共享出來的印表機名稱,若我將程式丟到另一台Server的IIS上執行,也同樣是透過Print Server 共享,所以抓到的也是Print Server 所共享出來的印表機名稱。
問題來了:
假設Server 是放在台北,而台中的辦公室透過網頁搜尋資料要列印時,所抓到的印表機一樣是台北的Print Server所共享出來的印表機名稱,那列印時不就會在台北列印了嗎?想請問是否有辦法在按下列印時抓到的印表機名稱是台中辦公室的印表機名稱呢?

//下列為抓取印表機名稱的程式碼


procedure TIWForm1.IWButton1Click(Sender: TObject);
var i: Integer;
begin
RPDev.State := dsIC;
for i := 0 to Printer.Printers.Count - 1 do
IWMemo1.Lines.Add(Printer.Printers[i]) //所有印表機名稱
end;




alan_shie119
一般會員


發表:11
回覆:17
積分:5
註冊:2010-03-31

發送簡訊給我
#4 引用回覆 回覆 發表時間:2010-08-25 15:06:22 IP:60.251.xxx.xxx 訂閱
我寫了一個ActiveX 控制項來處理Client端的作業~也算是解決目前的問題了~

感謝前輩的指導~



系統時間:2017-10-24 9:59:24
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!