Re: [請問] 執行印表機刪除的程式碼

看板EZsoft (小軟體)作者 (陌生)時間17年前 (2009/04/16 04:56), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/4 (看更多)
: 現在希望改進的是,直接將hp 1300暫停,而後啟動主要程式, : 當啟動程式結束後,執行印表機刪除未列印文件,在將印表機啟動 1. 暫停印表機 2. 啟動自訂程式 3. 等待程式結束 4. 刪除印表機上所有的列印佇列(不管是否以完成) 5. 取消暫停印表機 這樣嗎? 如果你的程式會輸出東西給印表機印的話,步驟順序應該是 1,4,2,3,5 所以我就以 1,4,2,3,5 的順序寫 由於我不會寫 VBS 所以大概看網頁的範例修改一下 -----8<----- 請複製虛線內文字存成"任意.vbs" -----8<----- strComputer = "." Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") ' 上面兩句是同一行的 Set colItems = objWMIService.ExecQuery("Select * from Win32_Printer") Set objShell = CreateObject("WScript.Shell") For Each objPrinter in colItems ' 例: objPrinter.Name = "hp LaserJet 1300 PS" If objPrinter.Name = "你的印表機的名稱" Then ' 暫停印表機 objPrinter.Pause() ' 刪除此印表機上所有佇列文件 objPrinter.CancelAllJobs() ' 執行自訂程式 EX: objShell.Run("D:\ezsoft\printer\ip.exe", 5, true) ret = objShell.Run("你要執行的程式", 5, true) ' ret = 0 等待程式結束 If ret = 0 Then ' 印表機取消暫停 objPrinter.Resume() End IF End If Next Set objShell = Nothing Set colItems = Nothing Set objWMIService = Nothing -----8<----- 請複製虛線內文字存成"任意.vbs" -----8<----- PS. 如果要照妳原本希望的,更改預設印表機, 暫停, 執行程式, 刪除文件, 取消暫停 一樣可以透過 VBS 來做,更改預設印表機的方式也是跟你自己貼上來那段一樣 只不過就是從 VBS 送出那些指定給系統執行,而非直接透過 Batch 檔的方式 (這部份,下面第三個參考網站有寫) 順便附上我看的幾個網站,說不定其他人看完之寫出來的會比我寫的好很多 關鍵字:Win32_Printer, Printui.dll, cancel all jobs, wmi, vbs Printui.dll http://wiki.winehq.org/printui 執行外部程式並等待執行完成 http://diary.tw/tim/265 WMI Win32_Printer classes http://tinyurl.com/d2jzp8 VBS Script To Cancel All Active Print Jobs On A Local Machine http://tinyurl.com/dbwjbv -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.204.46.87 ※ 編輯: hpo14 來自: 123.204.46.87 (04/16 05:00)
文章代碼(AID): #19vaeRbD (EZsoft)
文章代碼(AID): #19vaeRbD (EZsoft)