通常使うプリンタを簡単に選択(切り替え)するコツ

イメージ 1

通常使うプリンタをちょくちょく切り替える必要のある方に!

Windows Scripting Hostにて
 cscript.exe C:/WINDOWS/system32/prnmngr.vbs -t -p 使用したいプリンタ名
コマンドラインより入力することで、一発で切り替えることができます。

この機能を使って、登録されているプリンタ一覧を番号で選ぶだけで切り替えができるプログラムを作成しました。
また、現在の通常使うプリンタも表示されます。
切り替えは1番簡単・スピーディー(死語?)でできると思います。
また、PerlなのでWindowsPerlが必要です。

私のYahoo!ブリーフケースというところに置きましたので、ダウンロードして解凍し使用してください。
http://briefcase.yahoo.co.jp/bc/koga2020/lst?&.dir=/8e82&.src=bc&.view=l
この中の perl_tp.zip というファイルです。

tp.batというファイルを実行することで動作します。



また、プログラム的には以下の通りです。
tp_select.pl というファイルの中身です。S-JISで記述しております。

#通常使うプリンタを、一覧から番号で選択する。
#2008.10.14

#@TPlist_tmp はプリンタ一覧が改行毎の配列で入っている
@TPlist_tmp = qx{ cscript.exe C:/WINDOWS/system32/prnmngr.vbs -l };
#print $TPlist_tmp[0]; #1行目が出る

#現在の通常使うプリンタを取得
#cscript.exe C:/WINDOWS/system32/prnmngr.vbs -g
#ここから、プリンタ名のみを $GEN_TP_name に代入する
@GEN_TP_name = qx{ cscript.exe C:/WINDOWS/system32/prnmngr.vbs -g };
$tmp_p = substr($GEN_TP_name[3], 18 ,length($GEN_TP_name[3])-19);
printf ("現在の通常使うプリンタ\n %s\n\n", $tmp_p );

# @TPlist_tmpから、【プリンタ名 ・・・】で、【プリンタ名 自動 】で始まらないものの一覧を
# $TPlist の配列に入れる
@TPlist = (); #配列として初期化

$count = @TPlist_tmp;
$printer_no = ($count - 5) / 16; #列挙されたプリンタの数
#print $printer_no;

for ($i = 0; $i < $printer_no ; $i++)
{
$tmp_p = substr($TPlist_tmp[3+$i*16+2], 11 ,length($TPlist_tmp[3+$i*16+2])-12);
push(@TPlist, $tmp_p);
}


########################################
# プリンタ一覧表示
########################################
# $TPlist に 1 から始まる番号を付して一覧表示する
# このとき、通常使うプリンタ($GEN_TP_name) の行は、わかるように表示する
print " 0. キャンセル\n";
$list_no = 1;
foreach (@TPlist)
{
printf( " %d. %s\n", $list_no, $_);
$list_no ++;
}
print "\n【通常使うプリンタ】にする番号を入力してください。 No. ";

# 入力待ち (通常使うプリンタにしたい)番号の入力を $no に
$no = <STDIN>;

# 未入力、無い番号、無効な番号なら終了
if( $no !~ /\d+/ || $no == 0)
{
print "\nキャンセルされました。";
exit();
}
if( $no == 0 || $no > $printer_no )
{
print "\n無効な番号です。";
exit();
}

# $noのプリンタ名をセット
$set_tp_name = @TPlist[$no-1];
#print $set_tp_name;

# 番号のプリンターを通常使うプリンタにセットする
$qx_command = "cscript.exe C:/WINDOWS/system32/prnmngr.vbs -t -p ".'"'.$set_tp_name.'"';
@GEN_TP_name = qx{ $qx_command };
$tmp_p = substr($GEN_TP_name[3], 24 ,length($GEN_TP_name[3])-25);
printf ("\n現在の通常使うプリンタは\n %s\nです。", $tmp_p );