VFP 愛用者社區 首頁 VFP 愛用者社區
本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入

VFP ON Wine 筆記(七) Aprinter() 和 Getprinter() 的處理

 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
ckp6250



註冊時間: 2004-07-30
文章: 1645


第 1 樓

發表發表於: 星期六 一月 14, 2012 7:43 pm    文章主題: VFP ON Wine 筆記(七) Aprinter() 和 Getprinter() 的處理 引言回覆

wine 中有一個印表機的問題
您在Linux系統中新增了一台印表機的話,在wine中立即可以使用它,vfp的 Aprinter() 和 Getprinter() 也會抓得到。
但,如果您移除了該印表機,wine卻不會同等反應,被移除的印表機,依然會在 Aprinter() 和 Getprinter() 中出現。

這就麻煩了,使用者可能會誤選到不存在的印表機,而抱怨連連。

所以,必需在程式中加以判斷,僅列示局部程式碼

代碼:

With This
   N = Aprinters(vPrintAry)
   If File("z:\etc\printcap") && in Linux
      vPrintcap = Filetostr("z:\etc\printcap")
      For I = 1 To N
         If vPrintAry[I,1] $ vPrintcap
            .AddItem(Iif(Left(vPrintAry[I,1],2)='\\','\','')+vPrintAry[I,1])
         Endif
      Endfor
   Else
      For I = 1 To N
         .AddItem(Iif(Left(vPrintAry[I,1],2)='\\','\','')+vPrintAry[I,1])
      Endfor
   Endif
   .ListIndex = 1
   Set Printer To Name  (.Value)
Endwith


稍稍解釋一下
Linux上有幾台印表機?名字是什麼?是記錄在 /etc/printcap
而 wine 會幫您自動生成一個 Z:\ 的磁碟機,這就是系統的根目錄,
因此,我們可以藉著比對 /etc/printcap的內容,來判斷該印表機是否真正存在。

這個應該算是暫時性的做法,比較好的方法應該是直接去刪除 registry 中的相關記錄,等有空再說啦。
回頂端
檢視會員個人資料 發送私人訊息 參觀發表人的個人網站
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
無法 在這個版面附加檔案
無法 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作