Re: [請問] 執行印表機刪除的程式碼
我成功了!多虧H大大提供的程式碼,我在根據我的需求重新安排順序之後
成了以下
---------------------------------
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 = "Canon iP1200" Then
' 暫停印表機
objPrinter.Pause()
' 執行自訂程式 EX: objShell.Run("D:\ezsoft\printer\ip.exe", 5, true)
ret = objShell.Run("""C:\Program Files\foobar2000\foobar2000.exe""",
5, true)
' ret = 0 等待程式結束
If ret = 0 Then
' 刪除此印表機上所有佇列文件
objPrinter.CancelAllJobs()
' 印表機取消暫停
objPrinter.Resume()
End IF
End If
Next
Set objShell = Nothing
Set colItems = Nothing
Set objWMIService = Nothing
----------------------------------
最後成功了。但我在(c:\program files\****)的部份,一直無法正確讀取程式,
直到上網查到,必須改成("""c:\program files\****""")才可以。
這部份我倒是不大曉得原理了,我以為頂多(""**"")就可以了
不過真的很感謝h大大,寫程式碼真的很有趣。
※ 引述《hpo14 (陌生)》之銘言:
: : 現在希望改進的是,直接將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: 124.155.128.6
推
04/17 00:33, , 1F
04/17 00:33, 1F
討論串 (同標題文章)
EZsoft 近期熱門文章
PTT數位生活區 即時熱門文章