Re: [請問] 執行印表機刪除的程式碼
: 現在希望改進的是,直接將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)
討論串 (同標題文章)
EZsoft 近期熱門文章
PTT數位生活區 即時熱門文章