在这里查了一下,WMI的应用似乎较少,有一个脚本级的例子,在VBA/VBS的代码中是很实用的 我给出实际的应用例吧 先给出函数,使用的方法是诸如 SET X=myprinters(".") 参数是一个代表计算机的字符串(实际上WMI一般都很少去查到其它机,除非你是域管理员),返回值是一个打印机集合,你必须用FOR EACH NEXT集合去遍历它 Public intSelect '通过WMI得到打印机集合,查询本机的strComputer一般用"." '通过WMI查询的前提,是WMI服务起动(Windows Management Instrumentation服务) '现在的WIN2000、WINXP账户一般默认都装了这个服务 Function MyPrinters(strComputer) Set objWmi = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set MyPrinters = objWmi.ExecQuery("Select * from Win32_Printer") End Function 这样的东东有什么好处呢?嗯,当你的VBA代码要自动打印,而用户的机器有不止一台打印机时,如果你直接用 activesheet.printout 或activesheet.printpreview 那就打到默认的打印机上了.......所以要给他们一个选择,而要做选择的话,你得知道那些打印机都是什么:也就是PRINTOUT的参数,ACTIVEPRINTER 所以,我们得知道所有在那台计算机上已经安装的打印机名字.......再弄一个下拉列表什么的,让用户看看选一选,而他们觉得这是理所当然的 下面的附件是一个例子,除了WMI,其它的代码是双面打印相关示例(这也是有时会遇到的问题,如果打印机没有双面打印的硬件,就只好先打奇偶面之一),SHEET1的数据都是垃圾,拿来充页数的,就不用去研究了
IM0VtRuR.rar
(23.61 KB, 下载次数: 230)
其它,调试这段代码时,用WIM的脚本似乎在WIN2000的系统上不能取得“默认的打印机”是哪一台,在MICROSOFT网站上也没有找到答案,所以我暂时想不出“让用户选择不同的打印机时,一开始定位到默认打印机”的方法,只能胡乱指定一台,比如说,第一号打印机.......这不是很好的方案,但也没有办法
[此贴子已经被作者于2008-3-13 16:46:06编辑过] |