2012-02-01 79 views
0

是否有可能使用以下約定在C#中獲得網絡打印機路徑映射網絡打印機C#

計算機名\打印機名稱

PrinterSettings.Installed打印機給出了打印機的名稱,但沒有路徑信息。

在此先感謝

回答

1

一個快速和骯髒的方式來獲得這些信息是使用IWshRuntimeLibrary庫(wshom.ocx)。

WshNetwork network = new WshNetwork(); 
var printers = network.EnumPrinterConnections(); 
for (int i = 0; i < printers.Count(); i += 2) 
{ 
    Console.WriteLine(printers.Item(i) + " \t" + printers.Item(i+1)); 
} 

...但是,一個更加前瞻性的方式是使用載有從GETPRINTER方法返回WINSPOOL的PRINTER_INFO_2結構內的信息。

http://www.pinvoke.net/default.aspx/Structures/PRINTER_INFO_2.html

http://msdn.microsoft.com/en-us/library/windows/desktop/dd162845%28v=vs.85%29.aspx

http://www.pinvoke.net/default.aspx/winspool.getprinter

http://msdn.microsoft.com/en-us/library/windows/desktop/dd144911%28v=vs.85%29.aspx

1

這適用於打印機映射。你需要確保IWshRuntimeLibrary添加作爲參考:

using IWshRuntimeLibrary; 
    private void MappPrinter() 
    { 
     WshNetwork oNetwork = new WshNetwork(); 
     oNetwork.AddWindowsPrinterConnection("\\\\computername\\printername", "HPLJ6000","\\\\computername\\printername"); 
    } 
+1

的OP是詢問如何獲取網絡路徑到打印機,而不是如何將其添加爲本地打印機。 – 2012-02-01 05:26:29

+0

哦,我剛剛讀了問題標題!順便說一句,我很確定使用WMI查詢可以讀取已安裝打印機的網絡路徑。我將在這裏發佈示例代碼。抱歉,錯誤的答案! – Afshin 2012-02-02 02:19:23