使用
ShellExecute,您将永远不会知道何时完成打印,这取决于文件的大小以及打印机驱动程序是否缓冲内容(例如,打印机可能正在等待您填充纸盒)。
根据此SO答案,这似乎
subprocess.call()是一个更好的解决方案,因为它等待命令完成,只有在这种情况下,您才需要读取注册表以获得与文件关联的exe。
ShellExecuteEx可从pywin32获得,您可以执行以下 *** 作:
import win32com.shell.shell as shellparam = '/d:"%s"' % printershell.ShellExecuteEx(fmask = win32com.shell.shellcon.SEE_MASK_NOASYNC, lpVerb='print', lpFile=pfile, lpParameters=param)
编辑:用于等待ShellExecuteEx()处理的代码
import win32com.shell.shell as shellimport win32event#fMask = SEE_MASK_NOASYNC(0x00000100) = 256 + SEE_MASK_NOCLOSEPROCESS(0x00000040) = 64dict = shell.ShellExecuteEx(fMask = 256 + 64, lpFile='Notepad.exe', lpParameters='Notes.txt')hh = dict['hProcess']print hhret = win32event.WaitForSingleObject(hh, -1)print ret
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)