《C#获取打印机状态+API函数详解》由会员分享,可在线阅读,更多相关《C#获取打印机状态+API函数详解(18页珍藏版)》请在金锄头文库上搜索。
1、sn ytm;using System.olecioseeric;usigSysem.monetMoe;sg ytem.Dat;using Syem.Draig;us Sysm.Liq;sing Sstem.Tex;usig Syst.Wnows.Fors;usg Sysem.Runte.InteopServies;usin Sysm.Dignostic;ing SstemDringrintng;amspactestpriner2 ubicpria ls Frm1: orm #regon 预定义类型 lagsAtribe pubc enPterEnmFlgs RINTE_ENM_DEFAUT
2、=00000001, PRNT_EN_CA = x00002, INTENM_CONNECTIONS x0000, PRNTERENM_AVORITE = x0000004, PRNTE_ENUM_NA 0000000, PRINR_NUM_REMOTE = 0x000010, PRITER_EUM_SHED= 0x0000020, PRITR_N_NETWORK 00004, PRNER_NMEXD = x0004000, PRNTER_M_CONTAIER =0x0000800, PTER_ENUM_CNMSK x0f000, PRINTERENUIO = 0x000000, PNTER_
3、M_CO2 x0, PINTE_ENUMION3 = 00004000, INTRENU_ICN4 x008000, PRNTER_EN_IN5 = 0x10000, RINTERNUM_ICO6 =0x000, PRITERENUM_ICON7 =0x004000, PINTR_NUMCON = 0x008000, RINTE_HIDE = 10000 tucLayout(LayoutKi.Seqenal) pblc stut PRNTR_INFO_2 MaraAs(Unmanaedy.LPTSr) ubli tring Srvee; ashAs(UnmagedTye.PTtr) publi
4、c sri pPrinterNae; Marshs(nmanaedye.PTSt) lic strigphareame; MarslAs(UnmangedTe.LPTtr) ublic tring portae; Marshls(Umgeye.LTStr) pblc string DivrName; Mrshals(UnmanedType.T) pblc srn pComment; MashalAs(UmanagedTypeStr) publi trngpLoctio; ubic Intr pDevMod; Mrhls(UmaagedTyp.PTStr) public tring Sepile
5、; MarshlAs(UnmnaedType.LTSt) publi stri pntrocesso; MarshlAs(UnmanageTye.LPTStr) puli ri pattyp; MarsaAs(Umangedype.LPTStr) pubic g pParaters; blic tPtSeurityDecriptr; plc intAttibut; pul uint Pity; pblicuntfaultioiy; ublic uint StarTime; ublic uint UntlTime; public ut Status; pubic uint cJob; ubic
6、uint AveragePM; ndregin #reion 引用 WindowsAPI /引用AP声明 DllImport(wino.dr,ChaSet ChaS.Auto,SetLastErr= tr) tun: arshalAs(UnagTp.oo) ublicstati exernboo Enumrintes( rinerEnumlgs lags, string Name, intLeel, IntP pPriterEnum, uit bBu, f untcbNee, refuint pcReture ); #endrgin / 遍历打印机 / / / llImr(Use32.ll)
7、pubic staticxten in sBox(inh,tring m, tringc, t tpe); pu Frm1() nializeCompnnt(); piae oid buton1_Click(objct sen, entArgs e) PRINTR_NFO_2 Ino2 nu; int cbeeded=; icRetured ; boolre = EnumPriters(PrinteEumFlas.PRINTERENUM_LOCA, ul, 2,ntPtr.ero, 0,ref cbeeed, ref curnd); Intt Adr =arhal.AloHGlobal((in
8、t)cbNeded); re = EumPntrs(PiterEnuFlag.PRITERENM_LOA,nul, 2, pddr, cbNeeded,ref cbNeded, refeturnd); i (ret) Inf= nwRNTE_INO_2cRered; toffset pAddr.Int32(); (t = 0; i cReture; i+) Ifo2i (INE_F2)Marsal.PtroStructr(new ntPt(ofet), tyeof(PITE_INF_2)); ofse += MarshalSizeOf(of(PRINER_INF_2)); tis.listox1.Items.Add(打印机 Inoi.rinteNe +