iT邦幫忙

0

列表機預設疑問

因辦公室很多台列表機,就是說有時要用手動選紙匣,有時後要用自動選紙匣,那是否可以用.vbs指令程式執行兩次就可以把手動列表機設成預設的,若要使用自動選紙匣,用.vbs指令程式執行兩次改把自動選紙匣列表機改成預設的!還是說有軟體可以輔助?!

看更多先前的討論...收起先前的討論...
蟹老闆 iT邦大師 1 級 ‧ 2013-05-23 02:00:12 檢舉
Ctrl+p --選印表機--列印
縮到最小(田+m)--.vbs--.vbs--放到最大--列印
就操作速度及程序好像沒有比較好的樣子內
是有什麼特殊之處嗎?
外獅佬 iT邦大師 1 級 ‧ 2013-05-23 14:34:04 檢舉
如果是自己寫的軟體,倒是滿有用的...
在程式裡頭藉由執行vbscript切換印表機,
這樣,如果印表機換了,只需要抽換vbscript檔案就好了,
程式不需要更動、編譯,算是一種偷吃步的方法
以前常常用這種方式來做自動更新程式....
先下載更新檔,然後關閉程式,接著呼叫vbscript更新、置換檔案
汗
外獅佬 iT邦大師 1 級 ‧ 2013-05-23 16:18:40 檢舉
ddovwmk提到:
有軟體可以輔助?!

有...Windows裡頭的印表機...按右鍵,設成預設印表機....落寞
蟹老闆 iT邦大師 1 級 ‧ 2013-05-23 17:12:08 檢舉
wiselou提到:
程式不需要更動、編譯,算是一種偷吃步的方法

L 大太客氣啦,這是技巧啦能順利運作才是最重要射門
8
infornet
iT邦高手 1 級 ‧ 2013-05-23 09:58:30
最佳解答

點二下.vbs指令,跟您去選字匣的時間有很大的差別嗎?疑惑
不過想想或許量大重覆時的時間有差吧!
dream 的回答趕快記起來。

18
darkeryu
iT邦新手 1 級 ‧ 2013-05-22 22:46:39

Hi,

建兩台 share Printer 使用不同的設定連到同一台實體印表機會不會比較容易?

ddovwmk iT邦新手 5 級 ‧ 2013-05-24 17:27:37 檢舉

如上的語法有測試過,一直說找不到列表機名稱!

8
蟹老闆
iT邦大師 1 級 ‧ 2013-05-23 09:14:29

參考看看囉

<pre class="c" name="code">
@ECHO OFF
TITLE PrnChange
SET Sec=100
SET Prn1=自動選紙那一台 <--改為實際印表機名稱
SET Prn2=手動選紙那一台 <--改為實際印表機名稱
REM 執行一次為手動(Prn2),執行二次為自動(Prn1)
IF EXIST "%~pd0Chico" (
DEL "%~pd0Chico"
rundll32 printui.dll,PrintUIEntry  /n "%Prn1%" /y
ECHO 目前預設印表機為 "%Prn1%" 
ECHO 十秒後將改用 "%Prn2%" 為預設印表機
ECHO 或將這個視窗閉以持續使用 "%Prn1%" 為預設印表機
pathping -p 100 -h 1 localhost >nul
rundll32 printui.dll,PrintUIEntry  /n "%Prn2%" /y 
) ELSE (
rundll32 printui.dll,PrintUIEntry  /n "%Prn2%" /y 
ECHO 這個訊息用點的看不到
ECHO 目前預設印表機為 "%Prn2%"
ECHO. >%~pd0Chico
)

用法:
將印表機名稱輸入後即可使用

看更多先前的回應...收起先前的回應...
蟹老闆 iT邦大師 1 級 ‧ 2013-05-23 13:31:02 檢舉

請將上述程式碼存成.BAT檔來執行

ddovwmk iT邦新手 5 級 ‧ 2013-05-24 20:00:25 檢舉

如上的語法有測試過,一直說找不到列表機名稱!

蟹老闆 iT邦大師 1 級 ‧ 2013-05-27 19:04:38 檢舉

ddovwmk提到:
如上的語法有測試過,一直說找不到列表機名稱!

印表機名稱不對,請確認是否有多了空隔之類的字元。

蟹老闆 iT邦大師 1 級 ‧ 2013-05-27 19:15:38 檢舉

若是網路印表機則要加 /c
rundll32 printui.dll,PrintUIEntry /c \\machine /n "%Prn2%" /y

ddovwmk iT邦新手 5 級 ‧ 2013-05-27 20:18:57 檢舉

是不是改這個好行了
SET Prn1=自動選紙那一台 <--改為實際印表機名稱
SET Prn2=手動選紙那一台 <--改為實際印表機名稱

印表機是用IP路徑的!

6
外獅佬
iT邦大師 1 級 ‧ 2013-05-23 14:08:43

VBScript...用WScript.Network的SetDefaultPrinter
或者使用WMI

WScript.Network的寫法如下

&lt;pre class="c" name="code">
Option Explicit
Dim objNet,strPrinter
strPrinter = "你的印表機名稱"
Set objNet = CreateObject("WScript.Network") 
objNet.SetDefaultPrinter strPrinter
WScript.Quit
看更多先前的回應...收起先前的回應...
外獅佬 iT邦大師 1 級 ‧ 2013-05-23 14:22:11 檢舉

WMI的寫法

&lt;pre class="c" name="code">
strPrinter = "你的印表機名稱"
Set objWMI = GetObject("winmgmts:\\.\root\cimv2")
strWQL = "select * from Win32_Printer WHERE name='" & strPrinter & "'"
Set objInstances = objWMI.ExecQuery(strWQL,,48)
For Each objInstance in objInstances
  intResult = objInstance.SetDefaultPrinter
  If intResult=0 Then
    WScript.Echo "Set Default Printer to "&strPrinter
    Exit For
  End If
Next
ddovwmk iT邦新手 5 級 ‧ 2013-05-24 17:32:55 檢舉

如上的語法是可以了,但執行後,都要按確定鈕,有沒有辦法不要按到確定鈕?!因用此語法的話,都要個別執行,是否可以寫批次檔然,如按1就是執行自動如按2就是執行手動!但還是非常感謝您,這個語法我會張貼在我的部落格上囉!

外獅佬 iT邦大師 1 級 ‧ 2013-05-27 23:49:26 檢舉

Orz....是不能自己把WScript.Echo那一行拿掉的咩....落寞

外獅佬 iT邦大師 1 級 ‧ 2013-05-27 23:50:12 檢舉

ddovwmk提到:
這個語法我會張貼在我的部落格上

請註明來自iT邦幫忙即可....謝謝

我要發表回答

立即登入回答