2009-10-07 50 views

回答

0

您應該可以通過WMI收集這些信息。 Win32_Printer.DefaultLanguage假設返回這個值。如果我回想過去嘗試這樣做,許多打印機驅動程序不會返回一個值。

入住這裏: http://msdn.microsoft.com/en-us/library/aa394363%28VS.85%29.aspx

財產以後這樣的「應該」做的伎倆:

System.Management.ObjectQuery oq = new System.Management.ObjectQuery("SELECT * FROM Win32_Printer"); 
ManagementObjectSearcher mos = new ManagementObjectSearcher(oq); 
ManagementObjectCollection moc = mos.Get(); 
foreach(ManagementObject mo in moc) 
{ 

    string name = mo["Name"].ToString(); 
    string language = mo["DefaultLanguage"].ToString(); 
    MessageBox.Show(String.Format("Printer: {0} -- Language: {1}", name, language); 
} 

這將返回一個UINT16,檢查鏈接「默認語言」到英語翻譯如:PCL,Postscript,HPGL等。

我可以問爲什麼你試圖事先確定輸出是什麼?如果這是一個打印到文件的過程,我只是看看輸出並確定它是什麼。大多數較新的打印驅動程序將在這樣

作業的頂部插入PJL聲明@PJL ENTER LANUGAGE =「PCL」

或者乾脆看看代碼本身揭祕指標,如用於PCL或% PS for Postscript等

1

如果您的目標操作系統是Windows,還有一種方法是在驅動程序和打印隊列上執行一些邏輯。您可以使用WMI/.NET API來獲取驅動程序DLL名稱。如果是unidrv.dll,那麼驅動程序是PCL驅動程序,如果它是pscript.dll,那麼它是一個PS驅動程序。當然,這是針對基於MS Unidrv/PScript驅動程序框架的驅動程序,但您會發現大部分已安裝的驅動程序都基於此框架。

相關問題