亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

[C#] 獲取打印機列表

2019-11-17 02:33:16
字體:
來源:轉載
供稿:網友

[C#] 獲取打印機列表

一:獲得本地安裝的打印機列表

注:(如果在“設備和打印機”中已經添加了局域網的打印機設備,也算是本地安裝的打印機;沒有添加的則算作局域網打印機)

1,通過C#中PRinterSettings對象獲取,如下,然后通過foreach即可遍歷printers;

PrinterSettings.StringCollection printers = System.Drawing.Printing.PrinterSettings.InstalledPrinters;

2,PrintHelper類以及方法GetEnumPrinters2,見文章最后部分;

1 PRINTER_INFO_2[] printers = PrintHelper.GetEnumPrinters2();2 foreach (PRINTER_INFO_2 printer in printers)3 {4     listBox1.Items.Add(printer.pPrinterName);5 }
View Code

3,通過ManagementObjectCollection(需要添加System.Management引用)來查詢本地計算機中的打印機列表;

 1 // 獲取本地打印機列表 2 ManagementObjectCollection queryCollection; 3 string sql = "SELECT * FROM Win32_Printer"; 4 Dictionary<string, ManagementObject> dict = new Dictionary<string, ManagementObject>(); 5 ManagementObjectSearcher query = new ManagementObjectSearcher(sql); 6 queryCollection = query.Get(); 7 foreach (ManagementObject mo in queryCollection) 8 { 9     string oldName = mo["Name"].ToString();10     listBox1.Items.Add(oldName);11 }
View Code

二:獲取局域網打印機列表

1,PrintHelper類以及方法GetEnumPrinters2,見文章最后部分;

 1 PRINTER_INFO_1[] printers = PrintHelper.GetEnumPrinters(); 2 foreach (PRINTER_INFO_1 printer in printers) 3 { 4     if (-1 == printer.pName.IndexOf("!!")) 5     { 6         listBox1.Items.Add(printer.pName); 7     } 8     else 9     {10         uint pcbNeeded = 0;11         uint pcReturned = 0;12         IntPtr pPrInfo4 = IntPtr.Zero;13         uint size = 0;14         string pNewName = printer.pName;15         PrintHelper.EnumPrinters(PrinterEnumFlags.PRINTER_ENUM_NAME, pNewName, 1, IntPtr.Zero, size, ref pcbNeeded, ref pcReturned);16         if (pcbNeeded != 0)17         {18             pPrInfo4 = Marshal.AllocHGlobal((int)pcbNeeded);19             size = pcbNeeded;20             PrintHelper.EnumPrinters(PrinterEnumFlags.PRINTER_ENUM_NAME, pNewName, 1, pPrInfo4, size, ref pcbNeeded, ref pcReturned);21             PRINTER_INFO_1[] printerInfo1 = new PRINTER_INFO_1[pcReturned];22             int offset = pPrInfo4.ToInt32();23             Type type = typeof(PRINTER_INFO_1);24             int increment = Marshal.SizeOf(type);25             for (int i = 0; i < pcReturned; i++)26             {27                 printerInfo1[i] = (PRINTER_INFO_1)Marshal.PtrToStructure(new IntPtr(offset), type);28                 offset += increment;29                 listBox1.Items.Add(printerInfo1[i].pName);30             }31             Marshal.FreeHGlobal(pPrInfo4);32         }33     }34 }
View Code

PrintHelper類以及相關枚舉和信息類定義

 1 public class PrintHelper 2 { 3     [DllImport("winspool.drv", CharSet = CharSet.Auto, SetLastError = true)] 4     [return: MarshalAs(UnmanagedType.Bool)] 5     public static extern bool EnumPrinters(PrinterEnumFlags Flags, string Name, uint Level, IntPtr pPrinterEnum, uint cbBuff, ref uint pcbNeeded, ref uint pcReturned); 6  7     // 獲取網絡打印機 8     public static PRINTER_INFO_1[] GetEnumPrinters(PrinterEnumFlags flags) 9     {10         PRINTER_INFO_1[] printerInfo1 = new PRINTER_INFO_1[] { };11         uint pcbNeeded = 0;12         uint pcReturned = 0;13         IntPtr pPrInfo4 = IntPtr.Zero;14         uint size = 0;15         if (EnumPrinters(flags, null, 1, IntPtr.Zero, size, ref pcbNeeded, ref pcReturned))16         {17             return printerInfo1;18         }19         if (pcbNeeded != 0)20         {21             pPrInfo4 = Marshal.AllocHGlobal((int)pcbNeeded);22             size = pcbNeeded;23             EnumPrinters(flags, null, 1, pPrInfo4, size, ref pcbNeeded, ref pcReturned);24             if (pcReturned != 0)25             {26                 printerInfo1 = new PRINTER_INFO_1[pcReturned];27                 int offset = pPrInfo4.ToInt32();28                 Type type = typeof(PRINTER_INFO_1);29                 int increment = Marshal.SizeOf(type);30                 for (int i = 0; i < pcReturned; i++)31                 {32                     printerInfo1[i] = (PRINTER_INFO_1)Marshal.PtrToStructure(new IntPtr(offset), type);33                     offset += increment;34                 }35                 Marshal.FreeHGlobal(pPrInfo4);36             }37         }38 39         return printerInfo1;40     }41 42     // 獲取本地打印機43     public static PRINTER_INFO_2[] GetEnumPrinters2()44     {45         PRINTER_INFO_2[] printerInfo2 =  new PRINTER_INFO_2[] { }; 46         uint pcbNeeded = 0;47         uint pcReturned = 0;48         IntPtr pPrInfo4 = IntPtr.Zero;49         if (EnumPrinters(PrinterEnumFlags.PRINTER_ENUM_LOCAL, null, 2, IntPtr.Zero, 0, ref pcbNeeded, ref pcReturned))50         {51             return printerInfo2;52         }53         if (pcbNeeded != 0)54         {55             pPrInfo4 = Marshal.AllocHGlobal((int)pcbNeeded);56             EnumPrinters(PrinterEnumFlags.PRINTER_ENUM_LOCAL, null, 2, pPrInfo4, pcbNeeded, ref pcbNeeded, ref pcReturned);57             if (pcReturned != 0)58             {59                 printerInfo2 = new PRINTER_INFO_2[pcReturned];60                 int offset = pPrInfo4.ToInt32();61                 for (int i = 0; i < pcReturned; i++)62                 {63                     printerInfo2[i] = (PRINTER_INFO_2)Marshal.PtrToStructure(new IntPtr(offset), typeof(PRINTER_INFO_2));64                     offset += Marshal.SizeOf(typeof(PRINTER_INFO_2));65                 }66                 Marshal.FreeHGlobal(pPrInfo4);67             }68         }69 70         return printerInfo2;71     }72 }
PrintHelper
 1 [FlagsAttribute] 2 public enum PrinterEnumFlags 3 { 4     PRINTER_ENUM_DEFAULT = 0x00000001, 5     PRINTER_ENUM_LOCAL = 0x00000002, 6     PRINTER_ENUM_CONNECTIONS = 0x00000004, 7     PRINTER_ENUM_FAVORITE = 0x00000004, 8     PRINTER_ENUM_NAME = 0x00000008, 9     PRINTER_ENUM_REMOTE = 0x00000010,10     PRINTER_ENUM_SHARED = 0x00000020,11     PRINTER_ENUM_NETWORK = 0x00000040,12     PRINTER_ENUM_EXPAND = 0x00004000,13     PRINTER_ENUM_CONTAINER = 0x00008000,14     PRINTER_ENUM_ICONMASK = 0x00ff0000,15     PRINTER_ENUM_ICON1 = 0x00010000,16     PRINTER_ENUM_ICON2 = 0x00020000,17     PRINTER_ENUM_ICON3 =
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美电影免费观看| 国产精品成人av性教育| 91免费精品国偷自产在线| 亚洲精品suv精品一区二区| 毛片精品免费在线观看| 久久精品国产亚洲| 亚洲欧美日韩久久久久久| 狠狠久久亚洲欧美专区| 久久婷婷国产麻豆91天堂| 亚洲第一免费网站| 亚洲精品日韩丝袜精品| 欧洲一区二区视频| 免费97视频在线精品国自产拍| 日韩av在线免费看| 久久精品国产一区二区电影| 亚洲第一福利网| 久久久久久久久亚洲| 色哟哟亚洲精品一区二区| 欧美性猛交xxxx免费看| 欧美亚洲国产日本| 日韩成人av网| 国产亚洲精品一区二555| 5252色成人免费视频| 日韩h在线观看| 插插插亚洲综合网| 亚洲精品女av网站| 欧美性生活大片免费观看网址| 国产丝袜精品第一页| 国产精品久久久久久久久久三级| 欧美专区国产专区| 国产精品私拍pans大尺度在线| 91日本视频在线| 久久久久久免费精品| 亚洲成人av在线播放| 午夜免费日韩视频| 亚洲美女av在线播放| xvideos成人免费中文版| 91国内免费在线视频| 欧美日本精品在线| 91精品国产高清自在线看超| 精品视频在线观看日韩| 国产69精品久久久| 日韩美女av在线| 欧美性生交大片免网| 成人黄色免费在线观看| 人人澡人人澡人人看欧美| 国产精品久久99久久| 欧美大全免费观看电视剧大泉洋| 91在线无精精品一区二区| 欧美怡春院一区二区三区| 久久久精品2019中文字幕神马| 国产91在线高潮白浆在线观看| 97香蕉久久超级碰碰高清版| 日韩少妇与小伙激情| 色综合色综合网色综合| 97av在线视频| 国产精品久久在线观看| 亚洲最大福利视频网站| 一区二区在线免费视频| 国产精品老牛影院在线观看| 欧美性精品220| 欧美乱妇高清无乱码| 在线观看久久久久久| 日韩成人av网址| 国产在线日韩在线| 国产精品福利在线| 亚洲精品欧美一区二区三区| 91人成网站www| 亚洲精品久久视频| 亚洲国产婷婷香蕉久久久久久| 欧美激情精品久久久| 国产精品丝袜久久久久久高清| 91精品视频在线播放| 97免费视频在线播放| 欧美大全免费观看电视剧大泉洋| 欧美wwwxxxx| 亚洲二区在线播放视频| 色www亚洲国产张柏芝| 97精品一区二区视频在线观看| 久久久久久一区二区三区| 日本中文字幕不卡免费| 久久中文字幕在线视频| 中文字幕亚洲无线码在线一区| 欧美日在线观看| 国产一区欧美二区三区| 亚洲成av人影院在线观看| 国产日韩在线一区| 国产精品免费久久久| 国产美女精品免费电影| 国产欧美日韩中文字幕在线| 欧美日产国产成人免费图片| 欧美视频国产精品| 精品国产一区二区三区久久久狼| 国产成人免费91av在线| 菠萝蜜影院一区二区免费| 亚洲xxxx做受欧美| 欧美日韩第一页| 久久91亚洲人成电影网站| 97在线视频免费观看| 人九九综合九九宗合| 国产成人精品电影| 欧美大成色www永久网站婷| 精品国产一区二区三区久久狼5月| 国产精品电影久久久久电影网| 亚洲成人精品视频| 国内精品久久久久影院优| 国产亚洲美女精品久久久| 国产精品video| 在线观看欧美日韩国产| 国产伦精品一区二区三区精品视频| 亚洲一区二区三区成人在线视频精品| 欧美亚洲国产视频| 超碰精品一区二区三区乱码| 欧美综合激情网| 亚洲人成伊人成综合网久久久| 日韩精品在线免费| 中文字幕成人精品久久不卡| 精品无人区太爽高潮在线播放| 538国产精品一区二区在线| 国产精品老女人精品视频| 久久这里有精品视频| 久久九九国产精品怡红院| 97在线观看视频| 不卡在线观看电视剧完整版| 亚洲情综合五月天| 欧美高清视频一区二区| 成人精品一区二区三区电影黑人| 91精品在线观看视频| 91免费精品视频| 亚洲精品永久免费精品| 国产91精品青草社区| 欧美日韩国产黄| 中文字幕亚洲综合久久| 国产一区玩具在线观看| 精品国产91乱高清在线观看| 97在线视频免费看| 日韩电影中文字幕在线观看| 77777亚洲午夜久久多人| 欧美一区二区三区免费观看| 国产精品成人久久久久| 国产精品福利片| 麻豆一区二区在线观看| 亚洲电影成人av99爱色| 最近2019年中文视频免费在线观看| 在线看日韩av| 久久男人的天堂| 4p变态网欧美系列| 国产精品免费一区| 国产成人精品免费视频| 俺也去精品视频在线观看| 日本成人在线视频网址| 欧美日韩视频免费播放| 92看片淫黄大片欧美看国产片| 亚洲精品成人久久| 亚洲精品456在线播放狼人| 一区二区三区在线播放欧美| 国产欧美一区二区三区在线看| 国内揄拍国内精品少妇国语| 日韩在线视频二区| 欧美激情在线视频二区| 91久久精品国产91久久性色| 久久99热这里只有精品国产| 亚洲国产精品yw在线观看| 精品无人区太爽高潮在线播放|